「Model Assertions」による機械学習のデバッグ
本記事は、機械学習工学 / MLSE Advent Calendar 2018 21日目の記事です。
機械学習を実際のアプリケーションに応用する場合、特にミッションクリティカルなタスク(自動運転や医療分野)においてはモデルをデバッグする方法が求められており、これが可能となればより多くのアプリケーションへの実用化が可能になると思います。今回はそのようなテーマの論文について簡単に紹介します。
紹介する論文は、NeurIPS 2018のワークショップである「MLSys」で発表された「Model Assertions for Debugging Machine Learning」です。著者達はStanford DAWN Projectのメンバーで過去にも機械学習のシステムに関する研究を多く発表しているチームでもあります。
Related Work
関連研究として以下のようなものが挙げられています。
- Verified Machine Learning
- Structured Prediction, Inductive Bias
- Weak Supervision, Semi-supervised Learning
- Software Debugging
これらの中で今回紹介する研究はSoftware Debuggingに注目しており、他の手法には現実世界の問題に対応できない点や、モデルの推論時にエラーをチェックできない点などを挙げています。
Model Assertions
「Assertions」というとエンジニアの皆さんにとっては聞き慣れた言葉なのではないでしょうか?
例えばPythonのプログラムだと次のようなものがあります。
assert word == 'Hello', 'Not same word'
これはword
という変数がHelloという値でない場合に AssertionException
が発生するというものです。この論文ではこの「Assertions」をモデルのデバッグに利用することを検討しています。
Task Settings
論文で利用されているタスクは画像の物体検出(場所の特定と物体の分類)で、「交差点における車の検出」になります。
本タスクで利用するModel Assertionsは二つです。
- Flickering
連続したフレームで真ん中のフレームだけ物体が検出されないような場合です。図の上の段はFrame 2だけ車が検出されていないのです。これに対して下の段のFrame 2では真ん中の画像に枠を補間した(Corrective Action)ものになります。
- multi-box
ある物体に対して二つ以上のBounding Boxが重なってしまった場合です。
Model Assertionsについては実際のコードが論文上に載っていますので、厳密な定義が知りたい方はそちらをご確認してください。
Methods
論文内ではModel Assertionsの4つの利用方法について検証します。
- Runtime Monitoring
推論時に異常を検出して統計を取る - Corrective Action
推論時に異常の検出をトリガーにして修正するアクションを取る - Active Learning
学習時に異常検出の結果を参考に新しくラベル付けするデータを決める - Weak Supervision
Corrective Ruleを用いて異常検出されたデータに対して新しくラベルを提案し、そのデータを用いてモデルを再学習する
著者たちはOMG (OMG Model Guardian)というプロトタイプを開発しており、OMGには次の機能が含まれています。
- UDFによるAssertionsを定義するAPI
- 推論時に異常検出を行う実行エンジン (Corrective Actionも実行可能)
- Active Learning or Weak Supervisionを利用してモデルを改善するためのパイプライン
Experiments
OMGを実際のセキュリティカメラ(night-street
)の動画で以下の項目を検証しています。
- Model Assertionsによって適切にエラーを検知できているか
- Model Assertionsによってモデルのパフォーマンスが改善できるか
正解ラベルはMask-RCNNを利用して付与しますが、実際に本番で利用するアルゴリズムはSSDを想定しています。Mask-RCNNはSSDよりも高い精度を出せますが、実用上計算時間の問題でMask-RCNNの20倍高速なSSDを利用することを想定しています。Corrective RuleについてはFlickeringはBounding Boxを補間することが定義されているが、multi-boxについてはルールを作れないとしています。
一つ目の「適切にエラーが検知できているか」については100%検知が可能であり、更にCorrective Actionを取ることで90%のデータを修正することができたそうです。
二つ目の「モデルのパフォーマンスが改善できるか」についてはWeak Supervisionやactive learningによって向上することが出来ていると表からわかります。
(ここでrandomと記述されているのはランダムに物体にラベルを付与した場合のことを指しています。)
Conclusion
プログラムで利用されているAssertionsをモデルのデバッグに応用した論文の紹介でした。動画の物体検出を例にプロトタイプの検証を行い、その結果モデルの精度を向上させることを達成しています。この論文では展望として、
- 他のアプリケーション(物体検出以外)でも評価すること
- ソフトウェア工学の他のプラクティスを機械学習に応用すること
が挙げられていました。