ナード戦隊データマン

機械学習と自然言語処理についてのブログ

機械学習を使ったサービスを作る際に考慮したい事の一覧

Webサービス機械学習を使う」という目的に対する、個人的な質問リストを列挙します。

目的と入出力

  • 機械学習を使う目的はなにか。その目的には機械学習を使うメリットが存在するか。あるいは機械学習を使うデメリットはあるか。
  • その目的の入力と出力はなにか。その入力と出力に対応した論文・タスクは実世界に存在するか。存在しない場合はその検証時間を割くことが可能か。
  • 検証によって困難・不可能だと証明された場合の代替案はあるのか。代替案がない場合、その目的を廃止することは可能か。
  • その目的には、どこまでの精度が要求されるのか。

入出力とデータ収集

  • その入力・出力に対応した訓練データをどのように確保するのか。手作業によるアノテーションか。サービスを通じて収集するのか。
  • サービスによって入力・出力を自動収集する仕組みはあるのか。ない場合は手作業でデータを用意し、ラベル付けするのか。

データ要件

  • 目的の出力を得るために、入力データから得られる特徴量は十分か。過剰か。不足か。不足している場合、追加することは可能か。
  • サービスから機械学習へ渡すために取得可能なデータはなにか。
  • 取得可能なデータのうち、削除・変更されるカラムはあるか。あるいは追加されるカラムはあるか。

担当者

  • モデリングとシステムへの実装は同一担当者が行うのか。それとも別か。

サービス要件

  • そのモデルをサービスに埋め込むタイミングはいつか。サービスからある程度データが収集できた段階か。それとも最初から埋め込むのか。
  • 手作業によるアノテーションによって訓練データを確保していた場合、それらの入力・出力はサービスが収集する入力・出力に対応しているか。対応していない場合、モデルはそもそもサービスに埋め込むことが可能なのか。
  • そのモデルは、ユーザー一人ひとりに対してどのような関係か。1対1か。1対多か。あるいはユーザーグループに対するモデルか。
  • サービスに当該の機械学習モデルを埋め込む方法はなにか。マイクロサービスを用いるのか、pythonコードをphpから呼び出すのか。

モデルの更新

  • モデルの更新方法はなにか。オンライン学習か、バッチ学習か。
  • モデルは自動更新するのか、それとも手作業か。
  • ユーザーからモデルに対する何らかのフィードバックを受け取る仕組みを追加するのか。そのフィードバックは明示的か、暗黙的か。
  • データのカラムの削除・変更によってモデルが精度を出さなくなった場合にどのような対処を行えばよいか。
  • 取得可能なデータのカラムが変更された場合、モデルの更新にかかる時間的コストはどの程度か。

法的対処

  • そのモデルをサービスに埋め込んだ場合、何らかの法的問題が生じうる可能性はあるか。例えば、性別や人種の差別を含んでいるか。
  • 法的リスクが存在する場合、リスクへの対処方法はなにか。回避か、保有か、低減か。

モデルの精度のテスト

  • モデルの精度を自動的に管理する仕組みを追加するか。それとも手作業か。
  • モデルの良し悪しを、デベロッパー以外の人たちが確認する必要はあるか。その確認のためのインターフェイスを作成するのはモデルを作成した担当者か。それともWebエンジニアか。

モデルのパフォーマンステスト

  • モデルのAPIは1秒あたりにどれ位のリクエストを処理できる必要があるか。あるいは、入力から出力までの実行時間の想定はどの程度か。

モデルの利益に対するテスト

  • そのモデルをサービスに組み込んだことによってなんらかの利益になった、ということを測定する仕組みはあるか。その仕組みに対する必要性を社内でどう認識しているか。