今日は午後から有給をいただいて、ABEJA SIXの1日目に行ってきました。印象的だなと感じたものに関して、つらつらと雑記を載せておきたいと思います。
こちらは品川グランドプリンスホテルの庭園です。
こちらは会場の雰囲気です。
ブースの様子1です。
ブースの様子2です。
ABEJA SIX 2019
「食事画像認識モデル開発プロジェクトでの10個5個の教訓」 株式会社FiNC Technologies 南野 充則 氏
- FiNCは450万ダウンロードされているヘルスケア系のアプリを開発している会社。
- ユーザーの継続率を高めるための施策として、機械学習を用いている。
- 今回の紹介事例ではユーザーの食事に関する情報を入力する手間を機械学習で短縮させ、短縮させることで継続率を高めることを狙っている。
- 食事の画像は1日に数万枚がアプリに投稿される。
- 食事の画像から栄養価などを計算することを目指している。
- 食事レシピ認識モデルでは、画像からレシピを識別し、メニューの量(グラム数)なども推定し、カテゴリ単位で決まっている栄養価から推定している。レシピ本の情報を入力したり、レシピサイトをクローリングし、レシピを一人あたりの栄養価になるように標準化などもしている。きれいな画像と栄養価(材料何グラムか)の伴ったクリーンなデータセットを用意するために自社のキッチンに料理人を呼び2000レシピ分の料理を作ったとのこと。
- 食材認識モデルでは食材一つ一つ(トマト一つとか、キャベツ一枚とか)を識別して、栄養価を素材単位で計算している。
- 学習の結果、管理栄養士よりも3%程度の誤差でメニューの栄養価を推定可能になった。
- 開発期間は6ヶ月間。
- 東大の松尾研にアドバイスをもらっているらしい。
5つの教訓
- 1.DL/ML人材をソフトウェアエンジニアから輩出すべき:
インフラ、サーバー、DB、パフォーマンスなどに明るいソフトウェアエンジニアが機械学習や深層学習を学ぶと、分析も実装もできる頼もしいメンバーになるので、ソフトウェアエンジニアのデータサイエンティスト化に注力しているらしい。目指すは論文のリプリケーションができるレベルとのこと。 - 2.データ取得から学習までのPDCAを最速にする:
ユーザーが画像を出したあとのフローをしっかりしていなかった。予期せぬデータが入ってくるので、そこへの対応も必要。アノテーションした項目を再学習するような仕組みを作り、そばの画像が苦手であれば、そばの画像を集中的に集めて学習させる。 - 3.オペレーションは自社で構築せよ:
泥臭い仕事と思い、丸投げしてはいけない。データセットの質が最も大事。データセットの質を担保するには評価手法を理解し細かいオペレーションを作る必要がある。アルバイトも自社で雇用、マネジャーもエンジニアとすることで当事者意識も芽生えやすい。 - 4.評価方法の決定からプロジェクトを始めよう:
AIを使えば、想像を超える何かが出てくると期待していまうフシがある。評価の仕方を決めたほうが、メンバーのゴールが見えるし。やりやすい。10%以内の誤差の難易度がどの程度なのかわからなかったりするし、解釈の多様性が生まれてしまうこともある。 - 5.プロジェクトはアジャイルで進めるべき:
作ったことのないモデルを作る際にスケジューリングを引くことは難しい。SOTAくらいいけますよと言ってしまい、自らを苦しめることになりかねない。
「機械学習におけるクラウド活用のポイント」 アマゾン ウェブ サービス ジャパン株式会社 針原 佳貴 氏 & 宇都宮 聖子 氏
- SageMakerいいぞというお話。
- ビジネスにおいて、機械学習を進めるに際して重要なポイントは、
「ビジネス価値に落とし込む」
「データの流れを理解する」
「自分の力で頑張らない」
の3点が挙げられていた。 - 必要ではあるが、付加価値にはつながりにくい作業のことをUndifferentiated heavy liftingと呼ぶらしい。
- 機械学習プロジェクトを回す際に重要なこととして、
データ取得
↓
データ前処理
↓
モデルの開発・学習
↓
モデルの評価
↓
モデルの変換(エッジデバイスに送るにはデータを小さくする必要がある。)
↓
本番環境のデプロイ
↓
監視・評価データ変換
のループを繰り返すことが挙げられている。 - S3(Simple Storage Service)に蓄積しているデータがあったとして、そのデータに対して、SageMakerで前処理やら機械学習を行い、学習済みの結果をS3にためれば、それを用いてエンドポイントの推論としてカジュアルに活用することができる。S3→SageMaker→S3のコンボが良いとのこと。
- ここ1年間で200個くらいAWSのサービスやら機能が増えているので、それを知るだけでも大変そう。でもうまく使えば、Undifferentiated heavy liftingを避けることができる。
- わからないことがあれば、ソリューションアーキテクトに質問したり、SageMakerのSlackで聞いたりすると良いらしい。
- SageMakerでの学習の進め方としては3種類ある。1つ目は、TensorFlowなどでゴリゴリとアルゴリズムを書く。2つ目はAWS Marketplaceで販売されているアルゴリズムを時間単位で課金して使う。3つ目はAWSのビルトインのアルゴリズム(Object Detection、Semantic Segmentation、Factorization Machineなど)を使う。
「少数データからの学習法の展開とABEJAの取り組み」 株式会社ABEJA 藤本 敬介氏
- データの質がモデルの結果を左右するが、きれいなデータを大量に集めるためにアノテーションをやるのは大変。少ないデータでも性能を出したい。
- アプローチとしては、Data Augmentation、Transfer Learning、Meta learningの3つがある。
Data Augmentation(データ拡張)
- データを擬似的に増やす手法
- mixup:Beyond Empirical Risk Minimizationの研究では画像とラベルを合成してデータを水増しが行われている。
- AutoAugment:LearningAugmentation Policies from Dataの研究では、強化学習で精度が上がりやすい水増し方法を学習している。
- 使わない手はない。
Transfer Learning(転移学習)
- 異なるデータセットで学習したものを再利用する。
- Fine-tuning:別のデータで学習済みのモデルに対して、タスクに対してのデータに適用する。
- Domain Adaptation:学習済みのモデルやデータの知識を再利用する。
- Fine-tuningは有効な手段。
Meta learning
- タスクの学習のしかたを学習する
- 少数のデータでのうまい学習方法を訓練しておいて、それを使い回す。
ABEJAの取り組み
- データが少ない場合はFine-tuningで高精度を出しやすい。
- External Network:中間層の情報を利用して、例外的な処理(ネットワークにバイパスみたいなものを通す)をすることで、Fine-tuningした際に精度が落ちないようにしている。不均衡データやクラス追加に対して強い手法とされている。データ数に応じてExternal Networkのサイズを調整でき、クラス1に大量のデータがある場合、1だけネットワークを深くして、2やら3はネットワークを浅くするなどの柔軟な対応が可能。これでもって不均衡データに対応できるとのこと。また、クラス追加に関しては、追加したクラスの分だけ学習すればいいようにネットワークの学習ができるらしい。ただし、学習に時間がかかるとのこと。
- (よくわからないが)Model-Agnostic Meta-Learning(MAML(マムル))を応用したら精度が高まるらしい。
うーん、DNNは全然追いかけれていないので断片的にしかわからなかった。悔しいものです。
「Deep Learningの都市伝説と現実」 株式会社ABEJA 白川 達也氏
- リサーチャーをする上で大事なこととしては、
1.先に見つけること
2.シンプルに解くこと
3.先に失敗する(大きな失敗は会社としてしないために)
の3つがある。 - クリーンなデータで学習したほうが精度が高くなりやすく、過学習しにくい。ラベルの精度が高ければ、高いほどよい。Big Clean Data + DLで勝つる?
- アノテーションは簡単ではない。アノテーターごとにわかりやすい情報がバラバラで、ブレるのが本質的。どこまでやるのか、どこが基準なのかというフレーミングとアンカーリングが重要。人間とかタスクを理解してすすめるのが良い。
- 半教師あり学習(アノテーションされていないデータを使って精度向上させる取り組み)も魅力的だが、教師データを増やしたほうが効率的。アノテーションできるならば、アノテーションしてしまおう。事前学習も意味があるので行う。
- 次にどんな技術がくるのか? Graph Convolution、Annotation、Poincare Embeddings、ML in Hyperbolic Space
- Taskonomyという研究が今後熱くなるかも。見たこともないタスクも解けるという柔軟性を持つモデルが構築できる?
感想
機械学習で精度を出すためにそこまで頑張るのか!という事例を聞けたり、知識として不足していたAWS系のサービスの話を聞けたり、自分の足りていない知識を補えた良いイベントだと思いました。