Skip to content
返回文章列表
Quality Assurance12分

AI品質リグレッション検出パイプライン:カナリアeval・McNemar検定・Holm-Bonferroni補正

Building AI Quality Regression Detection Pipelines: Canary Evals, McNemar, Holm-Bonferroni

藤堂 理恵品質保証アーキテクト
2026-04-2312分
リグレッション検出統計検定McNemarHolm-BonferroniCI/CD

本文以日语发表。中文摘要如下:

Building AI Quality Regression Detection Pipelines: Canary Evals, McNemar, Holm-Bonferroniカナリアeval集合、McNemar検定、Holm-Bonferroni多重比較補正を組み合わせ、AI本番環境の劣化を統計的に有意なレベルで検出するパイプラインの設計を解説します。

AI製品の品質リグレッションは、単一メトリクスの平均値比較では検出できないことが多いです。理由は3つあります。1つ目、evalデータセット内のタスクごとにノイズ分布が異なる。2つ目、同じプロンプトでも温度サンプリングにより結果がばらつく。3つ目、多数のタスクを同時に評価するため、偶然の有意差(false positive)が累積します。本稿では、カナリアeval・McNemar検定・Holm-Bonferroni補正を組み合わせた実運用パイプラインを解説します。

カナリアeval集合の設計

カナリアevalとは、本番デプロイ前に必ず通すゴールデンセットです。設計の要点は4つ。(1) 代表性:本番トラフィックから層化サンプリング。(2) 安定性:ラベルが時間で揺れないよう人手確定済み。(3) 境界事例:過去に事故を起こしたケースを必ず含める(regression anchor)。(4) サイズ:McNemar検定で検出力0.8を確保するには、効果量にもよりますが最低300〜500件が目安です。

Fênix社内では、カナリアを「コア(200件・不変)」「ドリフト(300件・四半期更新)」「ホットフィックス(可変・直近インシデント由来)」の3層に分け、各デプロイで全層を走らせます。

McNemar検定による対応ありサンプル比較

旧モデルと新モデルを同じevalで評価すると、各サンプルは「旧正・新正」「旧正・新誤」「旧誤・新正」「旧誤・新誤」の4セルに分類されます。独立二標本の比率検定(z検定)を使うのは誤りで、正しくはMcNemar検定です。帰無仮説は「不一致セル b と c が等しい」で、統計量は (b - c)² / (b + c) をカイ二乗分布(自由度1)と比較します。

```python from statsmodels.stats.contingency_tables import mcnemar # table = [[両方正, 旧正新誤], [旧誤新正, 両方誤]] result = mcnemar(table, exact=False, correction=True) ```

Holm-Bonferroni補正:多重比較問題

カナリアを10カテゴリ(要約・翻訳・コード・QA・…)で分割評価する場合、各カテゴリでp<0.05を独立に判定すると、全体のfamily-wise error rateは約40%まで膨らみます。Bonferroniは保守的すぎるため、Holm(1979)のステップダウン法を推奨します。p値を昇順に並べ、i番目を α/(m-i+1) と比較していく方式で、検出力を維持しつつFWERを制御できます。scipy.stats.false_discovery_control または statsmodels.stats.multitest.multipletests(method='holm') で実装できます。

CI/CDへの組み込み

GitHub ActionsでモデルPRごとにカナリアを走らせ、(1) カテゴリ別McNemar p値、(2) Holm補正後の棄却判定、(3) regression anchor(過去事故セット)の全通過を必須チェックとします。anchorに1件でも退行が出た場合はpを問わずブロック。これで「平均は上がったが重要ケースは壊した」という典型的な事故を防げます。

技術的な課題を一緒に解決しませんか?

KGA IT Solutionsは、AI・クラウド・DevOpsの専門チームがお客様の課題に最適なソリューションを提供します。

お問い合わせ