モデル・技術

HumanEvalとは?正解は実行結果——コード生成LLMの実装試験

読み:ヒューマンイーバル / 英:HumanEval

更新日: 読了目安:約6分

HumanEvalは、LLMコード生成能力を測るベンチマークです。関数の仕様を読んでプログラムを書き、ユニットテストを実行して通過したかで採点する——文章がそれらしく見えるかではなく、動く実装かが合格ライン——本記事はpass@kの式より、「なぜコード評価は実行ベースなのか」と、名前のHumanが人間評価を意味しない点に焦点を当てます。

なぜ実行で採点するか

コード支援では、もっともらしいコードが動かないことが日常茶飯事です(TF-0460)。変数名やインデントが整っていても、境界条件の漏れでテストが落ちる——だからHumanEvalは自動テストの合否を正解とします。

これはBLEUのような文字列の類似度や、GLUEのような分類精度とは思想が違います。コードの正しさは、多くの場合実行可能か・仕様を満たすかでしか判断できません。

HumanEvalの流れ

  • 問題 — 関数の説明・シグネチャ・入出力例が与えられる
  • 生成Codexなどのコード生成モデルが実装を出力
  • 実行 — サンドボックスでコードを動かし、隠しユニットテストを実行
  • 判定 — 全テスト通過なら正解、一つでも失敗なら不正解

OpenAIがCodex公開時に提示したベンチマークとして広く引用され、以降のコード特化LLMの性能比較の共通言語になりました(TF-0150)。

要素HumanEvalでの役割
問題セット手書きのプログラミング課題(訓練データとは別設計)
ユニットテスト採点の唯一の基準。人間の目視は標準フローではない
モデルCodex、GPT系、他社コードLLMなど

pass@kという報告の仕方

コード生成は確率的——同じ問題でも複数候補を出し、どれか一つでもテストを通れば成功と数える指標がpass@kです。kは生成する候補数、k個のうち少なくとも1つが正解だった問題の割合を報告します。

試験では数式の暗記より、「複数案を出して当てにいく評価」と覚えれば十分です。エディタの補完(Top-1)と、ベンチマーク(Top-k)で見る世界が違う——という対比が実務理解にもつながります。

他ベンチマークとの違い

ベンチマーク測るもの採点の軸
GLUE自然言語理解(複数タスク)分類・類推などの精度(G-348
BLEU機械翻訳・生成文参照文とのn-gram一致
HumanEvalコード生成ユニットテストの合否

生成AIの応用には要約・画像・コード生成が含まれます(TF-170TF-336)。HumanEvalはそのうち実装力だけを切り出して数値化した道具——モデル名(Codex)やサービス名(Copilot)とは別レイヤーです。

試験で押さえるポイント

  • 定義 — コード生成LLMの能力を測るベンチマーク
  • 採点 — ユニットテストの実行結果で正誤判定
  • 指標 — pass@k(k個の候補のうち成功した割合)
  • 対比 — GLUE=言語理解、HumanEval=コード実装。Human≠人間採点

演習で確認する

生成AIパスポート:TF-0150TF-0460

G検定:G-348TF-137TF-170TF-336

すり替えに注意

誤った説明正しい理解
HumanEval=人間が採点する評価名称はHumanEvalだが、標準は自動ユニットテスト
HumanEval=Codexベンチマーク vs モデル
HumanEval=学習用データセット性能評価用の問題集合
HumanEval=GLUEコード生成 vs 自然言語理解
HumanEval=BLEUテスト合否 vs 文字列類似度

よくある質問

HumanEvalは何を測るベンチマークですか?

LLMが関数の説明やシグネチャから正しいプログラムを書けるかを測るベンチマークです。生成したコードを実際に実行し、用意されたユニットテストを通過したかで採点します。文章の流暢さではなく、実装が動くかが合格ラインです。

HumanEvalと人間による評価は同じですか?

同じではありません。名前にHumanが付きますが、HumanEvalは自動実行のユニットテストで採点するベンチマークの名称です。人間が主観的に良し悪しを付ける評価手法そのものを指す用語ではありません。

HumanEvalとGLUEは同じですか?

同じではありません。GLUEは複数の自然言語理解タスクで言語モデルを比較するベンチマークです。HumanEvalはコード生成の実装正しさを測るベンチマークです。タスク(言語理解 vs コード生成)と採点方法が異なります。