HumanEvalは、OpenAIが開発した大規模言語モデルのコード生成能力を測定するための代表的なベンチマークデータセットです。Pythonの基本的なプログラミング問題164問で構成されており、生成されたコードが用意された単体テストを正しく通過するかどうかを評価します。AIのコーディング実力を客観的に測る標準指標として広く用いられています。
HumanEvalとは
HumanEval(ヒューマンイーバル)は、AIや大規模言語モデルがプログラムのコード生成を正しく行えるかを客観的に測定・評価するために設計された、手作りの高品質なベンチマークです。
詳しく解説
HumanEvalは、2021年にOpenAIの論文において提案されました。164個 of Pythonプログラミングタスクを含んでおり、それぞれのタスクには関数のシグネチャ、英語による機能説明、テストケース、および正解となる参照実装が含まれています。特徴的なのは、単純な文字列の一致で評価するのではなく、実際に生成されたコードを実行し、複数の単体テストをパスするかどうかを測定する「実行ベースの評価」を採用している点です。これにより、コード生成の実力を正確に測ることが可能となりました。主に「Pass@k」という指標が使われ、モデルが生成した複数の解答候補(k個)のうち、少なくとも1つがテストを通過する確率を評価します。
具体例・使われ方
HumanEvalの具体的な利用例は、新しい大規模言語モデルの開発時やファインチューニング時におけるコード生成性能の測定です。例えば、GPT-4やClaudeなどの最新モデルがリリースされた際、開発チームや研究者はHumanEvalのデータセットを用いてテストを行い、1回の生成でテストを通過する割合などの数値を公表することで、従来のモデルや競合モデルと比較したコーディング性能の優位性を客観的に示します。
似た用語との違い
HumanEvalと混同されやすい評価基準に「MBPP」があります。HumanEvalがOpenAIによって手作業で作成された厳選された164問で構成されているのに対し、MBPPは約1,000問のクラウドソースで収集された基本的なPython問題で構成されています。HumanEvalは問題数が少ない分、テストケースが非常に厳密に設計されている点が特徴です。また、従来の自然言語生成の評価で使われる指標がテキストの記述の類似性を比較するのに対し、HumanEvalはコードを実際に動かして動作の正確性を確認する点で大きく異なります。
注意点
HumanEvalを解釈する上での注意点として、まず「データ汚染」の問題が挙げられます。ウェブ上の大量のデータを学習している大規模言語モデルが、トレーニングデータ内にHumanEvalの解答をそのまま含んでしまっている場合、モデルが真の意味でプログラミングを理解していなくても高スコアを出してしまうおそれがあります。また、HumanEvalはPythonの短いアルゴリズム問題に特化しているため、実務における大規模なソフトウェア開発や、複数ファイルの連携、別言語でのコード生成能力を包括的に測れるわけではない点にも留意が必要です。