ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

Feature Attributionを使ったモデルモニタリングの開発と実際の機械学習モデルへの適用

Yahoo! JAPAN Advent Calendar 2022の6日目の記事です。

こんにちは。ヤフーのAIプラットフォームチームに所属している黒松です。

今年の1月に公開した「MLOpsを支えるヤフー独自のモデルモニタリングサービス」の記事ではヤフーが内製したモデルモニタリングツールであるDronach(ドロナック)をご紹介しました。

本記事では、新たにDronachに追加したFeature Attributionドリフト検定機能を実例とともにご紹介します。

AIプラットフォームチームについて

私が所属しているAIプラットフォームチームは、社内のAI活用を促進するための共通プラットフォームを開発し提供することが目的のチームです。

AIプラットフォームは、Namespaceで分離されたマルチテナントKubernetesクラスタであるACP(AI Cloud Platform)をはじめとしてさまざまなマネージドサービスで構成されており、データサイエンティストやデータエンジニアが開発に集中できる環境を提供しています。Googleが定義するMLOps レベル1やレベル2で機械学習を使ったシステムを運用することを目指し、日々機能追加と改善を続けています。

AIプラットフォームチームが開発、運用している基盤については「ヤフーのAIプラットフォーム紹介 〜 AI開発をより手軽に」で詳しく紹介しています。

モデルドリフトによるモデルの性能劣化

モデルは学習時点のデータに最適化されるため、一般的には時間の経過とともに適切な予測結果を返せなくなります。

現在のデータに対してモデルが適切な予測結果を返せなくなることをモデルドリフトと呼びます。モデルドリフトはデータの分布の変化や世の中のトレンドの変化、サービスの仕様の変更などさまざまな理由で発生します。モデルドリフトが発生すると、新しいデータを使いモデルを再学習するか、モデルそのものを見直す必要があります。

モデルモニタリングの難しさ

モデルドリフトが発生していることを検知するにはモデルモニタリングの導入が重要です。しかし、モデルモニタリングにはMLシステム固有の難しさがあります。

モデルモニタリングが難しい理由はMLシステムの不確実性です。MLシステムに不確実性が含まれる理由はMLシステムの構成要素にさまざまな不確実性を含むためです。モデルの学習や評価に使うデータが不十分であったり、ノイズが大きかったり、あるいは確率的な振る舞いをするモデルによって不確実性が生じます。また、世の中のトレンドやサービスの利用者の趣味嗜好が変化し、モデルに期待される予測結果が変わることもあります。そのため、特定の指標をモニタリングしてモデルドリフトが発生していると断定はできません。

そこで、不確実性が高くなるとモデルドリフトが起きている可能性があると考えます。実際に、MLシステムに不確実性をもたらす要素をモニタリングすることで、間接的にモデルをモニタリングする手法が広まっています。具体的にはモデルの入出力データでデータドリフトが起きているか、あるいはモデルを利用するサービスのKPIが低下していないかを監視します。

Dronachとは

モデルドリフトを検知する目的でヤフーが内製した独自のモデルモニタリングツールがDronachです。KubernetesのOperatorパターンで実装しており、各種設定をYAMLで記述するだけでモデルモニタリングを導入できるのが特徴です。

これまでDronachでは以下の機能をサポートしていました。

  • モニタリング
    • モデルの入力、出力のデータの分布変化を捉えるデータドリフト検定
    • データドリフト検定の対象になっているデータの統計情報の収集
    • モデルを利用しているサービスの各種KPIを収集するModelKPI
  • アラート
    • モニタリングの結果に基づくアラート
  • ダッシュボード
    • モニタリングの結果を確認するダッシュボード

そして、今年の9月に新たにFeature Attributionドリフト検定機能をリリースしました。

Feature Attributionドリフト検定

Feature Attributionドリフト検定はモデルの出力に対する特徴量の貢献度から変化をとらえる仕組みです。

Feature Attributionは入力データの各種特徴量がモデルの予測結果に貢献する度合いを評価したものです。データドリフト検定が入力データや出力データといった単一のデータセットを対象に変化をとらえるものだとすると、Feature Attributionドリフト検定は入力データ、モデル、出力データの全体の関係をとらえます。データドリフト検定やModelKPIと組み合わせることで多角的な視点でモニタリングできるようになります。

KernelSHAPによるFeature Attributionの計算

Feature Attributionを求める手法にSHAPがあります。SHAPは特徴量が変化したときの予測結果の変化から特徴量ごとの貢献度を計算する手法です。

SHAPには複数のアルゴリズムがありますが、DronachではKernelSHAPを採用しています。KernelSHAPを採用している理由は、KernelSHAPがモデルに依存しないSHAPアルゴリズムだからです。

データサイエンティストが利用しているモデルの種類にあったSHAPアルゴリズムを選択できるようにする方法も考えられましたが、モデルごとにFeature Attributionの計算アルゴリズムを使い分けるにはノウハウが必要であり、誰でも容易に導入できる汎用的なモデルモニタリングとして開発しているDronachの思想には合いません。そのため、Dronachではどのようなモデルに対しても適用できるKernelSHAPのみをサポートしています。

nDCGによるスコアリング

次に、計算により得たFeature Attributionの値に基づいたモニタリングの方法を説明します。

DronachではKernelSHAPで得られたFeature Attributionの大きさで特徴量をランキングした後、nDCGを使ってランキングの変化をスコアリングします。

nDCGはランキングの変化を元に0から1の範囲でスコアリングするアルゴリズムです。順位に変更がない場合は1になります。より上位の特徴量の順位が変化するほどスコアは小さくなります。

nDCG

nDCGは数値の変化を直感的に理解しやすく、また正規化された数値であるためアラートの閾値の検討がシンプルにできることから採用しました。

システム構成

データドリフト検定や統計情報の集計は入力データ、あるいか出力データがあれば計算できましたが、Feature Attributionドリフト検定の実現にはモデルと統一的な仕組みでモデルを扱えるモデルレジストリが必要です。

以下の2つの理由から、DronachではモデルレジストリとしてMLflowを採用しています。

  • 社内向けにAIプラットフォームチームがマネージドサービスとしてMLflowを提供しており、社内で普及しているモデルレジストリである
  • モデルのロードとロードしたモデルを使った予測のAPIが提供されており、Feature Attributionの計算をシンプルに実装できる

実例

実際にヤフーで使われている二つのモデルに対して、DronachのFeature Attributionドリフト検定を適用してみます。

CVR予測モデル

こちらはサービスのCVRを予測するモデルに適用した結果です。

case1

Feature Attributionのランキング結果の変動を見るとランキングが中位から下位の特徴量で激しく変化しています。一方で、ランキング結果をnDCGでスコアリングした結果を見ると最も低いときでも0.973となっていることからランキングが上位の特徴量ではほとんど変動がなかったことがわかります。

このことから、Feature Attributionの観点ではモデルは安定しているといえます。

検索モデル

つづいてYahoo!ショッピングの検索結果を返すシステムで使われているモデルに適用した結果です。今回の適用では週ごとに更新されるデータのひとつを適用しています。なお、こちらのグラフはモデルで利用している特徴量の一部を表示しています。

case2

スコアを見ると大きく下がった時期があることが分かります。この期間は今年9月に開催された5のつく日曜日祭を含むデータであり、普段とは異なる入力データの分布であったことが予想できます。しかし、nDCGは0.994と高い数値であることから、Feature Attributionの観点では大型イベントが開催される時期であっても安定したモデルといえます。

まとめ

ヤフーが内製したモデルモニタリングツールであるDronachに新しく追加したFeature Attributionドリフト検定機能の具体的な設計と、実際にヤフーで利用しているモデルにFeature Attributionドリフト検定を適用した結果をご紹介しました。今回の例ではFeature Attributionドリフト検定はモデルの安定性を示すとともに、普段とは異なる傾向のデータが与えられていたことを検出できました。

今後もDronachはさまざまなアップデートを重ね、ヤフーにおけるMLOpsのモデルモニタリングの重要なシステムになるよう育てていきます。

ヤフーでは、大規模データを使い最高のMLOpsを実現するための仕組みを一緒に開発してくれるエンジニアを募集しています。AIプラットフォームチームはOSSの採用を基本方針にしていますが、必要であればパブリッククラウドのサービスに相当するツールを自身で設計・開発して社内全体に提供できる希有なポジションです。興味のある方のご応募お待ちしています。オンラインでのカジュアル面談も歓迎です。

最後まで読んでくださり、ありがとうございました。

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました


黒松 信行
プラットフォームエンジニア
ヤフーのMLOps基盤であるAIPFの開発、運用を担当しています。最近ワインの資格を取りました。

このページの先頭へ