[論文レビュー] CodeScore: Evaluating Code Generation by Learning Code Execution
CodeScoreは、UniCEフレームワークを通じてコード実行を学習することにより、Refのみ、NLのみ、およびRef&NL入力全体で機能的正確性を推定する、LLMベースのコード評価指標です。複数のデータセットにおいて、真の機能的正確性との相関が最先端となっています。
A proper code evaluation metric (CEM) profoundly impacts the evolution of code generation, which is an important research field in NLP and software engineering. Prevailing match-based CEMs (e.g., BLEU, Accuracy, and CodeBLEU) suffer from two significant drawbacks. 1. They primarily measure the surface differences between codes without considering their functional equivalence. However, functional equivalence is pivotal in evaluating the effectiveness of code generation, as different codes can perform identical operations. 2. They are predominantly designed for the Ref-only input format. However, code evaluation necessitates versatility in input formats. Aside from Ref-only, there are NL-only and Ref\&NL formats, which existing match-based CEMs cannot effectively accommodate. In this paper, we propose CodeScore, a large language model (LLM)-based CEM, which estimates the functional correctness of generated code on three input types. To acquire CodeScore, we present UniCE, a unified code generation learning framework, for LLMs to learn code execution (i.e., learning PassRatio and Executability of generated code) with unified input. Extensive experimental results on multiple code evaluation datasets demonstrate that CodeScore absolutely improves up to 58.87% correlation with functional correctness compared to other CEMs, achieves state-of-the-art performance, and effectively handles three input formats.
研究の動機と目的
- 表面的な類似性を超えて機能的正確性を捉える評価指標の必要性を動機づける。
- 複数の入力形式にわたってコード実行の正確性を推定する、LLMベースの指標であるCodeScoreを提案する。
- 実行ベースのスコアを予測するようLLMsを訓練する統一学習フレームワークUniCEを紹介する。
- コード評価データセット3つ(APPS-Eval, MBPP-Eval, HE-Eval)を作成・活用してCEMをベンチマークする。
提案手法
- PassRatioを、生成コードの出力が期待出力と一致するテストケースの割合として定義する。
- PassRatioがゼロのとき、実行可能コードと非実行可能コードを区別するためのExecutabilityを導入する。
- 層ごとのプーリングと最初のトークン埋め込みを用いてCodeScoreとExecを生成する、マルチ形式入力学習フレームワークUniCEを提案する。
- L = L_C + L_EとしてUniCEを訓練する。L_CはCodeScoreをPassRatioに合わせ、L_EはExecutabilityをモデル化する。
- Ref-only、NL-only、Ref&NL入力形式をそれぞれL^{Ref}、L^{NL}、L^{Ref+NL}損失を用いて処理するマルチタスク訓練を実装する。
- CodeScoreを3つのデータセットで、ベースラインのマッチベース、LLMベース、実行ベースの指標と比較評価し、基準となる真実値との相関としてKendall-Tau、Spearmanのrs、Pearsonのrp、MAEを用いる。
実験結果
リサーチクエスチョン
- RQ1RQ1: CodeScoreは他の評価指標と比較して、機能的正確性とどの程度相関するか?
- RQ2RQ2: 依存関係が満たされている場合、Execは生成コードの実行可能性を特定するのにどれだけ有効か?
- RQ3RQ3: 異なる入力形式におけるUniCE損失L^{Uni}の影響はどのようか?
- RQ4RQ4: 人間の評価者はCodeScoreや他の指標を機能的正確性の判断にどのくらい信頼するか?
- RQ5RQ5: 実際のコード評価の場面でCodeScoreとベースラインはどの程度の性能を示すか?
主な発見
- CodeScoreはAPPS-Evalで、マッチベースと他のLLMベースの指標の両方より機能的正確性との相関が著しく高くなる(τ、rs、rpの改善がそれぞれ40.56%、55.07%、58.87%)
- CodeScoreはGround Truthと強い相関(例:rs > 0.6)を達成し、APPS-Evalでベースライン中最も低いMAEを示す。
- CodeScoreの実行時間は他のLLMベース指標と同程度だが、大規模実行ベースのCEMよりは桁違いに高速である(例:1k〜20k×高速)。
- CodeScoreはMBPP-EvalとHE-Evalへ微調整/ゼロショットで generalizeし、ベースラインに対する相関を引き続き上回る。
- UniCE損失L^{Uni}はRef-only、NL-only、Ref&NL形式のCodeScoreを改善し、Ref&NLがしばしば最良の結果をもたらす。
- 人間の評価はCodeScoreが他の指標を上回ることを示す(CodeScore 0–5スケールで3.4対Ground Truthの4.6)、有意統計的支持を得ている。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。