HumanEval Benchmark — HumanEvalベンチマーク

From Systems analysis wiki
Jump to navigation Jump to search

HumanEvalは、課題のテキスト記述に基づいてAIモデルが生成するコードの品質を客観的に評価するために設計されたデータセット(ベンチマーク)である[1]。2021年7月に、マーク・チェン(Mark Chen)が率いるOpenAIの研究者によって発表され、生成されたプログラムの機能的な正しさを測定するための主要な標準の一つとなった。

HumanEvalの開発は、コード生成を確実に評価する手法の必要性から生まれた。以前は、言語モデルが生成したコードの品質は、間接的な指標(例:BLEU)や人手によって評価されることが多く、プログラムの実際の動作との一致を保証するものではなかった。HumanEvalは、機能的な正しさに焦点を当てることでこの問題を解決する。生成されたコードは、参照実装との構文的な類似性ではなく、一連の自動化されたユニットテストに合格できるかどうかによって評価される[1]

タスクセットの構造

このベンチマークは、モデルの学習データに含まれないことを保証するために人手で作成された164個のプログラミング問題で構成される。すべての問題はPythonで記述され、説明付きのコードスニペットとして提供される[2]

各タスクには以下が含まれる。

  • 関数ヘッダ: 関数名と引数を含む関数のシグネチャ。
  • テキスト記述: 要求される機能を説明する英語のdocstring。
  • 関数本体: モデルが生成したコードで埋めるべき空の領域。

各タスクには、モデルからは見えない以下の要素も用意されている。

  • 標準解法: 正しい(参照)実装。
  • ユニットテストスイート: 生成されたコードの正しさを自動的に検証するために用いられる。テストは、基本的なケースとエッジケースの両方をカバーする。

課題は、基本的な言語構造やアルゴリズムから単純な数学まで幅広いトピックをカバーしており、モデルにとって多様で挑戦的なセットとなっている。

モデルの評価方法

HumanEvalにおける主要な評価指標はpass@kであり、モデルが機能的に正しく解いた問題の割合を測る[1]。生成されたコードが、ある課題のすべての自動テストに合格すれば、その解法は成功と見なされる。

  • pass@1: 最も基本的で、最も頻繁に用いられる指標。モデルが最初の1回の試行で解いた問題の割合を表す(すなわち、問題ごとに解答を1つだけ生成した場合)。
  • pass@k: 一般化した指標で、モデルが生成したk個の解答のうち少なくとも1つがすべてのテストに合格した問題の割合を示す。例えばpass@10は、各問題に最大10回の試行が許された場合にモデルが解ける問題の割合を表す。

pass@kを直接計算するには多数のサンプリングが必要となるため、著者らはこの指標を統計的に適切に計算する方法を提案し、不偏推定量を得られるようにした[1]

実際のテストは隔離された「サンドボックス」環境で実行される。生成されたコードはコンパイルされ、一連の検証テストにかけられる。この方式により、参照実装と構文的に似ているだけでなく、実行可能で正しいコードを生成するモデルの能力を測定できる。

結果と業界への影響

HumanEvalでの初期の実験では、汎用モデルと、コードに特化して訓練されたモデルとの間に大きな差があることが示された。

  • 2021年、OpenAIのCodexモデル(120億パラメータ、GitHubのコードで訓練)は、最初の試行で課題の約28.8%を解いた(pass@1)。
  • 一方、コードで訓練されていない、より大規模な言語モデルであるGPT-3(1750億パラメータ)は、正しく解けた課題が一つもなかった[1]

これらの結果は、優れたコード生成にはプログラミングデータでの専門的な訓練が必要であることを浮き彫りにした。HumanEvalの登場後、このベンチマークは新しいモデルの進歩を比較する標準的なテストとして急速に普及した。

  • GPT-3.5系列のモデル(2023年初頭)は、pass@1で約48%を達成した。
  • GPT-4モデル(2023年)はさらに高い結果を示し、基本バージョンで約67%を達成した。追加のチューニングやプロンプトの工夫を施した設定では、85%を超えるスコアも報告されている[3]
  • Code Llama(Meta、2023年)やWizardCoder(2023年)などのオープンモデルも高い結果(それぞれpass@1で約53%、約57%)を示し、初期のプロプライエタリモデルを上回った[4]

ベンチマークの拡張版と派生版

HumanEvalの成功は、より広い条件のもとでモデルを評価することを目的とした、いくつかの派生版の作成を促した。

  • CL-HumanEvalCross-Lingual HumanEval): 2024年に発表されたクロスリンガル版。元のHumanEvalの課題を、英語以外のさまざまな言語による記述を理解しつつPythonコードを生成するモデルの能力を測るために適応させたものである[5]
  • Multilingual HumanEval: 2023年に発表された拡張で、英語の記述に基づいて10以上のプログラミング言語(Java、C#、JavaScriptなど)でコードを生成する能力を評価することを目的とする[6]
  • HumanEval-XL: 2024年に発表された大規模なベンチマークで、上記の両方のアプローチを組み合わせている。12のプログラミング言語の課題と、ロシア語・中国語・アラビア語などを含む世界23言語へのテキスト記述の翻訳を備える。HumanEval-XLは合計で22,000以上の「記述とコード」のペアを収録している[7]

外部リンク

参考文献

  • Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
  • Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
  • Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
  • Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
  • Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
  • Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
  • Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
  • Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
  • Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
  • Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
  • Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
  • Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.

脚注

  1. 1.0 1.1 1.2 1.3 1.4 Chen, M. et al. "Evaluating Large Language Models Trained on Code". arXiv:2107.03374, 2021. [1]
  2. "openai/openai_humaneval". Hugging Face Datasets. [2]
  3. Niu, C. et al. "On Evaluating the Efficiency of Source Code Generated by LLMs". Proceedings of the 2nd International Conference on AI-generated Content, 2024. [3]
  4. Rozière, B. et al. "Code Llama: Open Foundation Models for Code". arXiv:2308.12950, 2023. [4]; Luo, Z. et al. "WizardCoder: Empowering Code Large Language Models with Evol-Instruct". arXiv:2306.08568, 2023. [5]
  5. Sato, M. et al. "CL-HumanEval: A Benchmark for Evaluating Cross-Lingual Transfer through Code Generation". Proceedings of the 38th Pacific Asia Conference on Language, Information and Computation, 2024. [6]
  6. Athiwaratkun, B. et al. "Multi-lingual Evaluation of Code Generation Models". ICLR 2023, arXiv:2210.14868. [7]
  7. Peng, Q., Chai, Y., Li, X. "HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization". LREC-COLING 2024, arXiv:2402.16694. [8]