機械学習による実用アプリケーション構築① 第1章 製品目標からMLの枠組みへ

機械学習による実用アプリケーション構築についての備忘録

第1部 適切な機械学習アプローチの特定

1章 製品目標からMLの枠組みへ

1.1 何が可能であるかを考える

製品の目標が一番大事。その解決のための最適アプローチを決定することを念頭におく。
そのための最良のステップは2段階。

  1. 製品の目標を機械学習の構造に適合させる
  2. 機械学習による実現可能性を評価する

最初のステップについては 目指す製品目標を満たすような機能を実装するために、機械学習によってデータから何を学ばせてアウトプットさせる必要があるかを考える必要がある。

次のステップについては 実現可能性を評価するには、モデルとデータという2つの観点で評価する必要がある

1.1.1 モデル

製品目標にふさわしいアプローチを選択する。この選択によって実現に必要なデータ選択も変わってくる

  • 教師ありか教師なしか
  • 機械学習のアプローチ
    • 分類と回帰 : 数値予測やカテゴリ分類
    • 知識抽出:テキスト、画像のオブジェクト検出やラベル付けなど
    • カタログ編成:レコメンドなど
    • 生成モデル:GANを使った画像変換とか

1.1.2 データ

多くの場合、製品のユースケースをEnd to Endで解決する適切なデータは存在しない ほとんどの場合、追加のデータを検索、選別、収集する必要が生じる。 必要な入力、出力をマッピングし、データ収集の課題を洗い出す。

収集するデータはおおまかに分けて3種類

f:id:gramp:20210507092932j:plain

  • ラベルありデータ
  • 弱いラベルありデータ:
    判定したい内容そのものではないが、強い相関があるもの。例えば、音楽ストリーミングサービスのスキップ履歴など。スキップされた楽曲は"嫌い"ラベルに近しい
  • ラベルのないデータ: 自分でラベル付けする必要あり(教師あり学習なら)
  • そもそもデータがない:
    最初にデータを取得する必要あり。

ほとんどのデータセットは弱いラベルづけがされたもの データセットが不完全でも問題ない。手持ちのデータセットから初めて、とりあえず最初の結果を得るのが最善。

多くの場合、入力から出力への直接のマッピングを含むデータセットは見つからないので、 問題を定式化するプロセスを何回も繰り返していく。

1.2 具体例:MLエディタの構造

Stack Overflowなどに書く質問をより良い質問に添削してくれるシステムを具体例にしてこれまで学んだものを適用してみる

  1. 製品の目標を明確にすることから始める
    製品に関する質問であるより良い質問とは何かについて明確にする⇒ 有益な回答を得られる質問 なので、製品目標は有益な回答を得るためのアシスタントを構築すること

  2. 製品の目標が決まったので、次はモデル選択、データ検証を反復しながらアプローチを決定する。 今回の事例では次の3ステップでアプローチを決定。

機械学習で全てを行うアプローチ:End to Endのフレームワーク

単一のモデルを用いて中間ステップなしで入力から出力までを行うアプローチ。 非常に具体的な製品目標をもつユースケースの場合は、最先端のMLモデルを独自に作成する必要あり。

質問をより良い質問に添削してくれるシステムに合わせて書くと下図のようになる

f:id:gramp:20210507105955j:plain

このアプローチの課題

データ:

この場合、意図が同じで表現の質が異なる質問のペアデータセットが必要。 集めるのも作成も難しい

モデル:

Sequence to Sequenceモデルの技術は飛躍的に向上したが、単位は文。 段落単位で長期的な文脈を捉えるのは難易度が高い。 また処理時間に関してもかかるので、1回の学習で済むなら良いが、1時間、毎日学習する必要がある場合は問題になる

レイテンシー

Sequence to Sequence モデルは多くの場合自己回帰モデルなので、次のモデル作業を開始するには、 前の単語のモデル出力を必要とする。学習も推論も時間かかる。 モデルを最適化して十分な速度で実行するためには、追加のエンジニアリング作業が必要になる

実装の容易さ:

複雑なモデルの場合、可動部分が多くてエラーが発生しやすい。この複雑さの結果、保守負担やパイプラインの速度が低下する。 別のチームがモデルを反復によって改良する場合は、シンプルで理解度の高いモデルを選択する価値がある

このアプローチはデータ収集やエンジニアリングに多くの先行投資が必要なので、別のアプローチを検討する必要がある

最も単純なアプローチ:人手のアルゴリズム

問題を最適に自動化する方法を理解するためには、まず手動で問題を解決することから始める。
良くない質問を良い質問にするために自分で編集をするとしたらどうするかを考える。 一般的な文書作成のヒントは専門の編集者に相談する、新聞記事のスタイルガイドを調べるなどがある 既存の研究より、明確な文章のためには下記の属性が重要と考えられている

文章の簡潔さ:

シンプルな単語や文型がわかりやすい。適切な文章と単語の長さに関する基準を確立する必要がある

文章の調子:

意見が多い質問ほど解答が少ない傾向がある。副詞、最上級、句読点の頻度など

構造的特徴量:

挨拶や疑問符の使用など

機械学習はここに関与していないが、有用な特徴量を特定することで2つの意味で重要
1. 実装が速くモデルを測定するための基準として機能するベースラインを決められる
2. 特徴量の数値を求めて、その数値から良い文章、良くない文章を見分けられるかを確認できる

折衷アプローチ:経験から学ぶアプローチ

特徴量のベースラインができたので、データから文体のモデルを学習できる ⇒ テキストを良い、良くないに分類できる その後、良くないものに対して、良いにするための提案をする方法を取ると下図のようなアプローチになる

f:id:gramp:20210507115556j:plain

このアプローチがEnd to Endの問題を解決できているかを検証すると

データ:

オンライン掲示板や参照回数、いいねから良い例と良くない例のデータセットを収集することができる。 特徴量を学習するための、良い例と良くない例が必要なだけになる

モデル:

ここでは2つのことを考慮する必要がある。モデルがどれだけ予測可能かとモデルから簡単に特徴量を抽出できるか。 この2つについては、使用できるモデルが数多く存在し、特徴量もテキストから抽出できるのでいけそう

レイテンシー

ほとんどのテキスト分類器は高速で動作。ランダムフォレストなどの単純なモデルを最初に使用し、必要に応じて複雑なアーキテクチャに移行できる

実装の容易さ:

テキスト生成よりもテキスト分類の方が、よく理解されているため、実用的なテキスト分類のパイプラインがオンラインに存在している。

⇒ これらのことからこのアプローチで初期モデルを作成することが決定できる このシンプルなベースラインは次に何を構築するかを知るための優れた道しるべになり、この後反復を繰り返すことでブラッシュアップできる。

1.3 省略

1.4 まとめ

機械学習を利用したアプリケーション構築は実現可能性を検討し、アプローチを選ぶことから始まる
1. 教師ありかなしか、教師ありなら分類・知識抽出・カタログ編成・生成モデルか、必要なデータ取得が容易か、などから実現可能性を検討
2. 具体的に製品目標を定義して、どのような初期モデルやデータセットが必要になるのかを考えてモデリングアプローチを決定

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