機械学習による実用アプリケーション構築④ 第3章 最初のエンドツーエンドパイプライン構築

モデルの調査、学習、評価は時間がかかってコストも大。 ⇒ リスクをできる限り減らすために取り組むべき最優先事項を特定する必要がある。

実装の際に重要なのは、できるだけ早く実用最小限の製品に到達する必要がある。 この第3章、第4章では、パイプラインの実装と評価に焦点を当てる。

第3章: アプリケーションの構造と足場をいかにつくるか 第4章: 初期データセットの収集と検査について

3章 最初のエンドツーエンドパイプライン構築

いかに初期のプロトタイプを構築するか。

3.1 最もシンプルな足場

おおまかに「学習」と「推論」の2種類のパイプラインがあるが、
プロトタイプを作る際には、まず「推論」の」パイプラインから始める。

これにより ユーザがモデル出力をどのように扱うかを確認し、モデルの学習を効率的に行うための情報を収集する。 学習パートについては無視して、ルールベースや経験則に基づいて開始する。一見不必要なパートに見えるが、 問題と向き合い、最善の初期仮説を立てるために必ず必要なステップ。 データをモデル化する最良の方法に関するか仮説の構築、検証、更新は、 最初のモデルより前に始まる反復モデル構築プロセスの中核になる。

簡単に初期仮説ができたら、データを収集して前処理を実行し、ルールを適用して結果を返すパイプラインを作成する。 MLを組み込む予定のアプリに関してもシンプルな機能版を作っておく。

3.2 MLエディタのプロトタイプ

今回事例として扱うMLエディタは一般的な編集上の提案を活用して良い質問、良くない質問の原因について ルールを複数作って、その結果をユーザに返す。

最小限の機能を持つMLエディタは以下の4つの関数で構成される

input_text = parse_arguments() #データの入力
processed = clean_input(input_text) #データのクリーニング
tokenized_sentences = prerprocess_input(processed)  #データの前処理
suggestion = get_suggestions(tokenized_sentences) #結果の出力

各関数の内容について構築し、出力が出せるようになると、 テストと反復処理が実行できるようになる。

3.3 ワークフローのテスト

プロトタイプを構築すると問題の組み立て方と提案した解決策の有用性について仮説の検証が可能になる。

ここでは、

- 最初のルールの客観的品質
- 出力が有用な方法で表示されているか

を確認する。

3.3.1 ユーザエクスペリエンス

まず、モデルの品質とは無関係に製品の使用満足度を調べる。 最終的に十分なパフォーマンスを持つモデルが得られると仮定した場合に、ユーザに結果を提示するための最も有用な方法かを考える。 掲示する結果が有用あるか。モデルの品質を高めても役に立たないのならゴミ

3.3.2 モデリングの結果

早い段階で動作するプロトタイプを作ると、メトリクスを特定して反復できる。 そのためには、メトリクスが製品の成功を表すものである必要がある。 ユーザエクスペリエンスとモデルパフォーマンスの両方を検討するのは、最もインパクトのある側面に取り組んでいることを 確認するため。

3.3.2.1 インパクボトルネックの確認

製品の見せ方とモデリングの結果の両方を確認する目的:次に取り組むべき課題を特定するため 取り組むべき課題が製品の領域なのか、モデリングの領域なのかを判断することが重要。

製品の領域の場合

例えば、結果が出た理由が必要なのに、確率しか返さない製品になっている場合は、結果が出た理由を表示するものに変える必要がある

モデリング領域の場合

学習データに偏りが生まれる、データにノイズが多く含まれるなどや過学習してしまう場合は、 モデリングを修正する必要がある。

<まとめ元:オライリー機械学習による実用アプリケーション構築>