機械学習を搭載したシステム(MLシステム)やプロダクトの開発は、保守・運用フェーズが(PoCや開発フェーズに比べて)辛いです。その辛さを軽減しよう、すなわち、保守・運用をしやすいようにMLシステム開発をしようとする試みは、MLOpsと呼ばれています。
現行(2019年)で、MLOpsにベストプラクティスは存在していません。そのため、MLシステム開発に携わるエンジニアは日々同業者と勉強会で、自分がMLシステムを開発するにあたって、どういう課題があって、どう解決しようとしてるかを議論し、ナレッジを貯めています。
私もご多分に漏れず、MLシステムの保守・運用に苦しんでいるうちの一人です。
ただ、今一度我が身を振り返ってみると、何が苦しいのかを言語化していませんでした。そこで、この記事では、課題を文字に起こすことで思考を整理したいと思います1。
現時点での課題リスト
- ML部隊とOps部隊の役割分担がアンバランス
- 「MLシステムの運用・保守は辛い」という認識がされていない。
- MLモデルの推論結果の(主に顧客への)説明責任が難しい。
- 信頼度(事後確率)が正解・不正解と相関がない
- 信頼度が低くても推論結果があっていることもあれば、信頼度が99%でも推論結果が間違っていることがあります。
- 「説明可能なAI」自体がおかしな可視化結果を出す
- DNNは基本的にブラックボックスですが、CAMやattentionなどの構造を取ると、推論の判断理由(どのような特徴を以て、答えを導いたか)を可視化することができます。
- しかし、これも完全に使えるわけではなく、人間の直感に反するような結果がでることもあります。
- そうすると、エンドユーザにそのような結果になった理由を聞かれた時に困ってしまいます。
- 信頼度(事後確率)が正解・不正解と相関がない
まだまだ出てきそうなので、随時更新したいと思います。