A/Bテスト(ML)

A/B Testing for ML

A/Bテスト(ML)とは

A/Bテスト(ML)とは、複数のバージョンの機械学習モデルを本番環境で同時に実行し、実際のユーザーのトラフィックを使ってどのモデルが最良の結果を出すかを統計的に評価する手法です。新しいモデルのデプロイリスクを低減し、データに基づいた意思決定を可能にします。

表:A/Bテスト(ML)の要点まとめ
ひとことで言うと複数のモデルを本番で同時に動かし、どちらが良い結果を出すか比べること。
何がうれしいかオフラインの精度指標ではなく、実際の業務成果で比較できる。
注意点評価する指標を先に決めておく。途中で覗いて止めると誤った結論になる。

A/Bテストの設計

ML A/Bテストでは、トラフィックの一部を新しいモデル(バリアント)に振り分け、残りを既存のモデル(コントロール)に振り分けます。サンプルサイズの計算、テスト期間の設定、評価指標の選定が適切なテスト設計の鍵です。統計的有意差の検出には十分なデータ量が必要です。

図:モデルのA/Bテスト
12モデルを並行稼働旧版と新版
▶
2利用者を振り分けランダムに50:50
▶
3業務指標を測定CVRや解約率など
▶
4統計的に判定差が本物か確認
▶
5良い方を採用全面切り替え

MLでのA/Bテストの特殊性

従来のWebサイトA/Bテストとは異なり、MLのA/Bテストにはモデル特有の考慮事項があります。モデルの予測がフィードバックループを形成する場合(レコメンデーションなど)、フィルターバブル効果に注意が必要です。また、短期的な指標と長期的な指標のトレードオフ、オフライン評価との整合性も重要な検討事項です。

実装と運用

A/Bテストの実装には、トラフィック分割の仕組み、メトリクス収集基盤、統計的検定の自動化が必要です。Optimizely、LaunchDarkly、Split.ioなどの Feature Flagサービスや、Istio/Envoyなどのサービスメッシュを利用して実現できます。テスト結果に基づいてモデルを自動昇格させるパイプラインの構築も進んでいます。