いわゆるMLOps、すなわち機械学習/AIモデルを継続的に運用していく仕組みにおいては、考えるべきポイントが多岐にわたる。その中で、モデルやデータのモニタリングに関する要件を整理してみる。
MLOpsの全体像
MLOpsは非常にスコープが広い概念なので、この記事で語るMLOpsの全体像を一旦定義する。基本的な教師あり学習を題材として、添付図のようなモデル開発+運用の流れをイメージしている。
- オリジナルデータからデータの準備(クレンジングや特徴量抽出)を行い、特徴量(features)データと予測対象(target)データのテーブルを作成
- その特徴量データの一部を学習用とし、モデル学習を実行
- 残りの特徴量データを使ってモデル評価を実行し、学習モデルの精度測定を行う
- 学習済モデル(ML model)はモデル管理用レジストリにて蓄積されリリース管理される
- 本番運用モデルがデプロイされると、日々のモデル実行が行われる
- モデル実行はREST形式の待受型(online型)と、定期的に実行されるバッチ型(batch)が代表的な方式
モニタリング目的
上のMLOpsのスコープにおいて、モデルやデータを監視する目的は何か。2つほど挙げてみた。
- モデルが本番運用可能な品質であることを確認する
- 学習、評価、実行のデータが適切であることを確認する
モデルのモニタリング要件
具体的な要件を整理してみる。3つの観点で要件が存在すると考えた。1,2はモデル、3はデータに対するもの。
1. (再)学習結果のモデルが適切であること (モデル学習&モデル評価時)
2. 運用中のモデルが劣化していないこと (モデル実行時)
3. 学習、評価、実行のデータが適切であること
1を更に具体化してみると、
- 学習済モデルの精度が十分高いこと
- 学習済モデルが過学習していないこと (モデルの汎化能力)
- 学習済モデルがアホなモデルになっていないこと (アホなモデル : 白なら犬、茶色なら猫というシンプルすぎるモデル構造。1分岐しか無い決定木のイメージ。過学習の一種だが再学習時に発生したことを見逃してしまう可能性があるので別に扱う)
- 学習済モデルが公平であること (人を対象にしたモデルでのFairnessやBias。倫理的に差別すべきでない人の属性グループ(男女など)に対して予測結果に差がついていないか)
- 学習済モデルの予測根拠が適切であること (モデルの説明性) ※特に大域的な説明(モデル構造)
2を更に具体化してみると、
- 本番運用モデルの精度が劣化していないこと (IBM OpenScaleでモデルのドリフトと呼ばれるもの)
- 本番運用モデルの予測根拠が適切であること (モデルの説明性) ※特に局所的な説明(各レコードがどういう根拠で判断されたのか)
3.を更に具体化してみると、
- 本番運用モデルの入力である特徴量データ傾向に大きな変化が生じていないこと (IBM OpenScaleでデータのドリフトと呼ばれるもの)
- 再学習、評価、実行データの分布が適切であること (再学習データが過去のモデル実行の影響を受けている場合、適切な学習結果にならないため、モデル実行の影響を受けていないコントロールグループ(統制群)のデータを用意する必要がある)
モニタリング要件への対応方針
上記の具体的な要件への対応方針を整理してみた。
1. (再)学習結果のモデルが適切であること (モデル学習&モデル評価時)
要件 | 対応方針 |
---|---|
学習済モデルの精度が十分高いこと | テストデータに対する予測精度の評価 (Holdout or CrossValidation) |
学習済モデルが過学習していないこと | テストデータに対する予測精度の評価 (Holdout or CrossValidation) |
学習済モデルがアホなモデルになっていないこと | テストデータに対する予測精度の評価 (Holdout or CrossValidation) テストデータに対する予測値の分布確認(ヒストグラム,混同行列,etc) モデル構造の確認(ホワイトボックス型モデルの場合のみ)、予測変数の重要度リストの確認 |
学習済モデルが公平であること | モデルの公平性の評価 |
学習済モデルの予測根拠が適切であること | モデル構造の確認(ホワイトボックス型モデルの場合のみ) モデル説明性の評価(LIME,shap,etc) |
社内勉強会でディスカッションしたが、「アホなモデル」への対応方針が難しいよねとなった。モデルが本当にアホなのかどうかは、データの意味やビジネス知識も総動員して判断するケースもあるのではないか、それは自動的には無理でしょう、と言った感じ。
(2021/7/9追記) 機械学習におけるテストの良記事があったのでメモ。機械学習におけるテスト駆動開発という大きなテーマがここにある。
https://www.nogawanogawa.com/entry/machinelearning_testing
2. 運用中のモデルが劣化していないこと (モデル実行時)
要件 | 対応方針 |
---|---|
本番運用モデルの精度が劣化していないこと | 本番運用データに対する予測精度の評価 (結果データを使った直接的評価) 本番運用データに対する予測精度の推定 (予測精度予測モデルによる間接評価) |
本番運用モデルの予測根拠が適切であること | モデル説明性の評価(LIME,shap,etc) |
3. 学習、評価、実行のデータが適切であること
要件 | 対応方針 |
---|---|
本番運用モデルの入力である特徴量データ に大きな変化が生じていないこと |
特徴量データの変化検出 モデルが有効であるデータ範囲を超えてているかどうか(学習データから大きく外れたレンジのデータが入力されているか) |
再学習、評価、実行データの分布が適切であること | 特徴量データの分布確認(ヒストグラム,etc) |
まとめ
要件のまとめと対応方針のみを整理してみた。
今後、クラウド各社サービスや製品との対応についても整理する予定(適切に整理できるのかやや不安・・・)。