「データセットの準備を丸投げしない」――健康管理アプリ「FiNC」AI開発5つの教訓:“おいしいデータ”で、成果が出るAIモデルを育てる(2)(2/2 ページ)
ヘルスケアプラットフォームアプリ「FiNC」を開発するFiNC Technologiesで代表取締役CTOを務める南野充則氏は、AI研究開発プロジェクトを通じて得た「5つの教訓」を紹介した。その教訓とは。
評価方法を定めてからAI開発プロジェクトを始める
2つ目は、評価方法を定めてからプロジェクトを始めるということだ。AI開発プロジェクトで最も重要なのは、「評価用データ」だと南野氏は振り返る。
「自社を含め『AIを使えば、想像を超える何かが生まれる』という過度な期待を持っている人が多い。目的を設定しないとAIモデルの目的が曖昧になってしまう。またAIモデルの開発を始めると、学習データと作成するAIモデルだけにフォーカスして『評価する方法』を考えなくなってしまう。評価用データは、プロジェクトの達成度を示すための指標になるため、学習データ以上に重要だ」
今回の研究開発プロジェクトの場合、目標の難易度や評価方法の定義が曖昧だったため、意思決定に時間がかかり、無意味に時間を費やすことがあったという。
「私たちは当初、『約10%の誤差を許容し、栄養価を計算できるAIモデルを開発する』をゴールにして開発を始めたが、約10%の誤差はどれくらいの実装難易度なのか、何と比べて10%の誤差なのかなどが不明瞭だった。その結果、チームメンバーの中で、精度を改善する方向性が決まらず、意思決定に時間がかかり、無意味に時間だけを費やすことになった。さらに、共同研究企業との間で10%の誤差を定義して共有していなかったため、食い違いが生じる可能性もあった」
南野氏は、プロジェクトが始まる際に「どのデータでどう評価するのか」を決めておくことで、AIモデル開発の目的の曖昧さが消えてプロジェクトの見通しが良くなり、有意義な議論を進められるとした。
データセットの準備やアノテーションを丸投げしない
3つ目は、モデルを開発する際のデータセットの準備を丸投げしてはいけないということだ。
先述した通り、FiNCでは、自社のキッチンを利用して食品、料理画像を作成した。しかし、データ生成や、データに対するアノテーション(メタデータの付与)は、派遣会社を通じて雇用したアルバイトと外部委託のマネジャーに委任した。南野氏は「結果から言うと、この丸投げでは課題があり、改善もうまくできなかった」と振り返る。
「成果物である料理画像に料理名を付与するアノテーションデータは、モデル開発のために必要なデータセットの条件の大枠を満たしていた。しかし、細部で納得がいかないデータが提出されることがあった。例えば、ラーメンの画像に対して『ラーメン』とメタデータを付与してほしいが『チャーシュー』というデータを付与して終わってしまっているケースだ。マネジメント会社に改善を依頼しても、思うようなスピードで改善が進まず、時間を浪費してしまった」
南野氏は、なぜ細部で納得がいかないデータが生まれてしまったかを考察した。
「アルバイトは派遣会社が挟まっていたので待遇を変えられなかった。そのため、何か指示をしたとしても『頑張ろう』と思えなかったのではないだろうか。また、外部委託マネジャーも当事者意識を持ちづらい状況だった。これらの状況が、納得がいかないデータが生まれる要因になっていたのかもしれない」
そこで南野氏は、アルバイトを全員自社で直接雇用し、給与や待遇面を独自で設定することにした。また、マネジャーは、自社のエンジニアからやる気や責任感を持つ専任を立てることにした。これにより、以前よりも質の高いデータを生み出せるチームに生まれ変わったという。
「最もパフォーマンスが出るのは、評価手法や目的を理解している人間が取り組む状態だ。最初は、自社で取り組み、運用拡大フェーズになって初めて外注を検討すべきだろう。最初から外注頼みでは、時間の無駄を引き起こしかねない」
AIプロジェクトのゴールを「AIモデルの実装」にしない
4つ目は、AIを活用するプロジェクトでは「AIモデルの実装」がゴールではないということだ。
FiNCの場合、撮影した料理画像から食事を推定する機能をアプリに組み込んで公開したところ、何万枚もの食事画像が1日にアップロードされた。しかし、利用者から「食事を認識していない」指摘を受け、モデルを再評価した結果、確かにモデルが認識できない食事があると判明した。
「AIモデルを実装した後は、コードや設定に加えて、訓練済みAIモデルとデータも管理しておく必要がある。サービス公開後は、AIモデルの精度を確認しながら、精度が低くなった際に、どのような改善を進めるか、データ取得から学習までのフローやPDCAをスムーズに行えるようにシステム設計をしておくことが求められるだろう」
DL/ML人材はソフトウェアエンジニアから輩出する
最後の教訓は、モデル開発や機械学習のための人材を、ソフトウェアエンジニアから輩出するということだ。
「ソフトウェアエンジニアは、基本的な開発スキルを持っており、システムの流れを把握している。モデルを開発するためのデータをどこから収集できるか把握しており、もしデータを簡単に得られないとしてもUI/UXを変更できる能力まで持ち合わせている。さらに課題を理解したり、現状を分析したりする能力にも長けているので、そういう人材に深層学習や機械学習を学んでもらえれば、深層学習や機械学習を活用してサービスを開発できるソフトウェアエンジニアに成長させられるからだ」
南野氏は最後に、AI開発は以下の9個のプロセスに分けられると振り返り、講演を締めくくった。
- 解決すべき課題を明確化
- 課題が解決できたか評価するための指標を定義
- 問題に対するアプローチを決定
- リソース調整
- データセットを用意
- 調査、実験
- 仮設の検証、問題の対処法を検討
- モデルを製品化する
- モデルを改良する
「AI開発プロジェクトは大きく分けて9個のプロセスに分かれている。一つ一つしっかり進めていれば、今回紹介した研究開発プロジェクトも円滑に進められたはずだ。進化の早い業界なので、今後も、こうしたナレッジを他企業と共有していき、AIを活用したサービスの開発に取り組んでいきたい」
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 無断でダウンロードしたデータでもAI開発に使える? 改正著作権法を弁護士が解説
AIモデル開発を目的とするなら、著作権者に許諾を得ずとも、データのダウンロード、整形、加工がより広い範囲で行えるようになった。弁護士法人STORIAの柿沼太一弁護士が、2019年1月1日に施行された「改正著作権法」のポイントとAIモデル開発時の注意点について解説した。 - 「失敗しないAI開発プロジェクト」の作り方をエンジニアに聞いた
さまざまなAI開発現場を渡り歩いた現役のエンジニアが、「AI開発プロジェクトを成功させる開発チーム作り」について、国内のさまざまな企業や有識者を集めたイベント「THE AI 2018」で語った。 - 開発費5000万円、売り上げ10万円!――オリジナルプロダクト開発に失敗し続けたシステム開発会社の今
トラブルの原因は何だったのか、どうすれば良かったのか。実在する開発会社がリアルに体験した開発失敗事例を基に、より良いプロジェクトの進め方を山本一郎氏が探る本連載。今回は未経験分野のゲーム分野に勢いで参入して、火だるまになった事例を紹介します。