「成功率が高い」の続きまで読む
モデル紹介に成功率が一つ載っていても、回答を1回だけ返したのか、100案を生成して正しいものが一つあれば成功としたのかで、自分の仕事への意味は変わります。数字が誤りでなくても、運用の違いを省くと期待がずれます。
2021年のコード生成研究は、手書きのプログラミング課題HumanEvalを作り、テストに通るかで評価しました。pass@kでは、k個の候補中に一つでも合格するものがあるかを扱います。ここではarXiv v2を読み、現在のCodex製品の性能値としては扱いません。
3種類の成功を、架空の表で数える
以下は研究の実測値ではない作例です。課題Aの3候補は「誤・正・誤」、課題Bは「正・誤・正」、課題Cは「誤・誤・誤」とします。候補は同じ依頼から生成され、正誤は後から同じ基準で分かった、という前提です。
先頭候補だけを見ると成功はBの1課題で、1/3。3候補のどこかに正解がある課題はAとBで、2/3です。ここまでは生成できた候補の話です。もし採用手順が「常に先頭を使う」なら、実際に採用できた正解はやはり1/3になります。
つまり、候補を多く出すことと、正しいものを選ぶことは分けて測れます。この3問の観察割合を、そのまま論文と同じpass@k推定値とは呼びません。論文では各課題で多数の候補を生成し、推定式を使って評価しています。
5〜10分で、比較表の条件を確かめる
まず上の正誤を3行の表へ写し、「先頭は正しいか」「どれかは正しいか」「採用したものは正しいか」の列を足します。正解候補があっても採用できなかった行に印を付けてください。次に手元のモデル比較記事から成功率を一つ選びます。
確認するのは、課題数、生成回数、生成条件、正解の判定方法、候補の選択方法です。見つからない項目は不明と残します。異なるkや設定の数字を同じ一発成功率として並べないことが、今日できる作業です。
自分の作業を評価するときも、失敗するたびに依頼文を直して得た成功と、同じ依頼から複数候補を出した結果は分けます。人間の修正や追加ヒントを含めて使いたいなら、その運用全体の成績として記録できます。
この表には正しい候補が合計3個ありますが、「3個正しかった」をそのまま課題の成功数にはしません。Bに正解が二つあっても、解けた課題としてはBの1件です。回答を単位に数える欄と、課題を単位に数える欄を混ぜないよう、表の見出しに分母を書いておきます。
テストに通った後にも、別の確認が残る
研究の合格は、用意されたテストに通ることです。テスト外の入力、既存システムへの組み込み、運用上の条件まで保証するものではありません。また、候補を選ぶために正解情報を使える評価と、正解が分からない現場は条件が違います。
比較表を読む目的は、試行回数の多い数字を退けることではありません。人が複数案を確かめる仕事には、その評価が参考になる場合もあります。自分が一度だけ使うのか、検証して選ぶのかを先に決めると、見るべき数字がはっきりします。
活用のアイデア
小さく試すなら
5〜10分で本文の3課題×3候補の正誤表を写し、先頭が正しい課題、どれかが正しい課題、採用した候補が正しい課題を別々に数える。次に比較記事の成功率を一つ選び、試行回数と候補の選び方が分かるかを見る。
役に立つ場面
AIの比較表にある成功率を、試行回数と選択方法まで含めて読み、自分の利用手順に近い数字かを確認できる。
試す前に確認すること
深めるなら
- 架空の3行表で、先頭成功と候補内成功を別々に数える。
- 採用手順を一つ決め、採用した回答の成功も数える。
- モデル比較の成功率で、kと生成条件と選択方法が分かるか確認する。
研究の限界
- 2021年のコード生成研究であり、現在の製品やモデルの性能比較ではない。
- 少数の作例は指標の違いの説明で、論文の推定式や統計的評価を再現していない。
- テスト合格は全仕様の正しさを保証しない。候補内の正解を見つけられることと、生成できることは別。