連載
» 2019年04月16日 05時00分 公開

“おいしいデータ”で、成果が出るAIモデルを育てる(2):「データセットの準備を丸投げしない」――健康管理アプリ「FiNC」AI開発5つの教訓 (2/2)

[石川俊明,@IT]
前のページへ 1|2       

評価方法を定めてから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をスムーズに行えるようにシステム設計をしておくことが求められるだろう」

FiNCではモデルを改善するフローを構築した FiNCではモデルを改善するフローを構築した

DL/ML人材はソフトウェアエンジニアから輩出する

 最後の教訓は、モデル開発や機械学習のための人材を、ソフトウェアエンジニアから輩出するということだ。

 「ソフトウェアエンジニアは、基本的な開発スキルを持っており、システムの流れを把握している。モデルを開発するためのデータをどこから収集できるか把握しており、もしデータを簡単に得られないとしてもUI/UXを変更できる能力まで持ち合わせている。さらに課題を理解したり、現状を分析したりする能力にも長けているので、そういう人材に深層学習や機械学習を学んでもらえれば、深層学習や機械学習を活用してサービスを開発できるソフトウェアエンジニアに成長させられるからだ」

 南野氏は最後に、AI開発は以下の9個のプロセスに分けられると振り返り、講演を締めくくった。

  1. 解決すべき課題を明確化
  2. 課題が解決できたか評価するための指標を定義
  3. 問題に対するアプローチを決定
  4. リソース調整
  5. データセットを用意
  6. 調査、実験
  7. 仮設の検証、問題の対処法を検討
  8. モデルを製品化する
  9. モデルを改良する

 「AI開発プロジェクトは大きく分けて9個のプロセスに分かれている。一つ一つしっかり進めていれば、今回紹介した研究開発プロジェクトも円滑に進められたはずだ。進化の早い業界なので、今後も、こうしたナレッジを他企業と共有していき、AIを活用したサービスの開発に取り組んでいきたい」

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。