合成ベンチマークが100%でも、実物の精度は何も保証されない
生成AIアプリの回帰テストとして自動生成した問題でベンチを組みましたが、その正答率は実物に対する正答率とは別物でした。テストもビルドも通ったまま精度が落ちた版を出荷した話です。
生成AIを使ったアプリには、普通のテストが効きません。 同じ入力でも出力が変わるので、期待値との一致で判定できないからです。
そこで、問題を自動生成して正答率を測るベンチマークを組みました。 生成規則から正解が自動で決まるので、画像を集める手間も採点の手間もかかりません。
これは便利でしたが、危険でもありました。
何が起きたか
ベンチの正答率は高い水準を保っていました。テストは通り、型検査も通り、ビルドも通ります。 その状態で、実際には精度が落ちている版を出荷しました。
原因は単純です。合成ベンチの問題が、実物と形式が違っていたからです。
どう違っていたのか
たとえば「命令表」という形式の問題があります。 合成ベンチでは、リスト全体に命令を順番に適用する形で生成していました。
実物を突き合わせたところ、まったく違いました。
- 縦に並んだ各マスに、図形が1つずつ入っている
- 各マスに命令記号が1つ付く(リスト全体に順次適用するのではない)
- 命令は「前の」「次の」という相対参照
- 削除しても詰めずに空きマスが残る
- 「前の命令を取消」があり、取消は実行前にまとめて先処理する
構造がまるごと違うので、合成ベンチで100%取れても、実物で何が起きるかは分かりません。
「正解が自動で決まる」の落とし穴
合成ベンチの利点は、正解が生成規則から確定することです。 採点は完全に正確で、人手も要りません。
しかしこの利点は、問題そのものが正しいことを保証しません。 採点の正確さと、問題の妥当性はまったく別の話です。
自動生成は「自分が想定した形式の問題」しか作れません。 つまり自分の思い込みをそのままテストしている状態になります。 思い込みが外れているとき、ベンチは何も教えてくれません。
どう手当てしたか
合成ベンチを捨てたわけではありません。役割を限定しました。
| 合成ベンチ | 実画像テスト | |
|---|---|---|
| 用途 | 大きな劣化の検知 | 精度の判断 |
| 実行 | 毎日自動 | 変更前後で手動 |
| 正解 | 生成規則から自動 | 手で登録 |
| 数 | 15問程度を毎回生成 | 10問程度の固定 |
そのうえで、ドキュメントの目立つ位置に注意書きを置きました。
合成問題は実物と形式が違う。 ここの正答率は実物に対する正答率ではないので、 精度の判断には実画像テストを使うこと。
さらに、実装ルールとして次を明文化しました。
速度・精度に関わる変更を、テストが通っただけで出荷しないこと。 変更前後で実画像テストを走らせ、正答率が下がっていないことを確かめる。
これは、実際に一度やらかしたから書いてある文です。
毎日測って、差分で気付けるようにする
合成ベンチは毎日自動で回しています。 利点は精度の絶対値ではなく、日々の変化が見えることです。
出力を保存するだけでは、期限切れで消えたり、前日と比べられなかったりします。 そこで正答率だけを1行ずつテキストファイルへ追記し、コミットするようにしました。 悪化した日は、履歴の差分で分かります。
生成する問題は毎回作り直すので、1日の上下では判断しません。数日の傾向で見ます。
ここから学んだこと
- 自動生成のテストは、自分の理解をテストしているだけかもしれない。 実物と突き合わせるまで、それは分からない
- 便利なテストほど信用してしまう。「これは何を保証していないか」を書いておく
- 生成AIの精度は、テストが通ることでは担保できない。 測る手順を、出荷の手順に組み込むしかない
- 実物のサンプルは少なくてよい。10問でも、形式が正しければ合成1000問より役に立つ
関連する記事
- AIに「写させる」だけで正答率が17%から94%に
画像の問題を生成AIに解かせると正答率17%でした。AIには図の書き写しだけをさせ、規則の探索は端末側のコードに任せる構成に変えたところ94%になりました。実測値と、この分け方が効く条件を書きます。
- AIの「思考量を減らす」最適化が精度も速度も悪化
書き写しに推論は要らないだろうと考えて思考量を下げたところ、正答率が落ちたうえに所要時間まで伸びました。差し戻すまでに分かったことと、代わりに効いた速度改善を書きます。
最終更新日: