合成ベンチマークが100%でも、実物の精度は何も保証されない

生成AIアプリの回帰テストとして自動生成した問題でベンチを組みましたが、その正答率は実物に対する正答率とは別物でした。テストもビルドも通ったまま精度が落ちた版を出荷した話です。

生成AIを使ったアプリには、普通のテストが効きません。 同じ入力でも出力が変わるので、期待値との一致で判定できないからです。

そこで、問題を自動生成して正答率を測るベンチマークを組みました。 生成規則から正解が自動で決まるので、画像を集める手間も採点の手間もかかりません。

これは便利でしたが、危険でもありました

何が起きたか

ベンチの正答率は高い水準を保っていました。テストは通り、型検査も通り、ビルドも通ります。 その状態で、実際には精度が落ちている版を出荷しました

原因は単純です。合成ベンチの問題が、実物と形式が違っていたからです。

どう違っていたのか

たとえば「命令表」という形式の問題があります。 合成ベンチでは、リスト全体に命令を順番に適用する形で生成していました。

実物を突き合わせたところ、まったく違いました。

構造がまるごと違うので、合成ベンチで100%取れても、実物で何が起きるかは分かりません。

「正解が自動で決まる」の落とし穴

合成ベンチの利点は、正解が生成規則から確定することです。 採点は完全に正確で、人手も要りません。

しかしこの利点は、問題そのものが正しいことを保証しません。 採点の正確さと、問題の妥当性はまったく別の話です。

自動生成は「自分が想定した形式の問題」しか作れません。 つまり自分の思い込みをそのままテストしている状態になります。 思い込みが外れているとき、ベンチは何も教えてくれません。

どう手当てしたか

合成ベンチを捨てたわけではありません。役割を限定しました。

合成ベンチ実画像テスト
用途大きな劣化の検知精度の判断
実行毎日自動変更前後で手動
正解生成規則から自動手で登録
15問程度を毎回生成10問程度の固定

そのうえで、ドキュメントの目立つ位置に注意書きを置きました。

合成問題は実物と形式が違う。 ここの正答率は実物に対する正答率ではないので、 精度の判断には実画像テストを使うこと。

さらに、実装ルールとして次を明文化しました。

速度・精度に関わる変更を、テストが通っただけで出荷しないこと。 変更前後で実画像テストを走らせ、正答率が下がっていないことを確かめる。

これは、実際に一度やらかしたから書いてある文です。

毎日測って、差分で気付けるようにする

合成ベンチは毎日自動で回しています。 利点は精度の絶対値ではなく、日々の変化が見えることです。

出力を保存するだけでは、期限切れで消えたり、前日と比べられなかったりします。 そこで正答率だけを1行ずつテキストファイルへ追記し、コミットするようにしました。 悪化した日は、履歴の差分で分かります。

生成する問題は毎回作り直すので、1日の上下では判断しません。数日の傾向で見ます。

ここから学んだこと

関連する記事

最終更新日: