[論文レビュー] ReCode: Robustness Evaluation of Code Generation Models
本稿では、コード生成モデルの耐性を評価するための包括的ベンチマークであるReCodeを紹介する。本研究では、ドキュメンテーション文字列、関数名、構文、フォーマットの4つの側面にわたり、30種類以上の自然で意味を保つ変更を適用し、現実的でない入力の変化に対するモデルの安定性を評価した。その結果、CodeGenはInCoder や GPT-J よりも耐性が優れていることが判明し、特に構文およびフォーマットの変更に対して顕著な差が見られた。
Code generation models have achieved impressive performance. However, they tend to be brittle as slight edits to a prompt could lead to very different generations; these robustness properties, critical for user experience when deployed in real-life applications, are not well understood. Most existing works on robustness in text or code tasks have focused on classification, while robustness in generation tasks is an uncharted area and to date there is no comprehensive benchmark for robustness in code generation. In this paper, we propose ReCode, a comprehensive robustness evaluation benchmark for code generation models. We customize over 30 transformations specifically for code on docstrings, function and variable names, code syntax, and code format. They are carefully designed to be natural in real-life coding practice, preserve the original semantic meaning, and thus provide multifaceted assessments of a model's robustness performance. With human annotators, we verified that over 90% of the perturbed prompts do not alter the semantic meaning of the original prompt. In addition, we define robustness metrics for code generation models considering the worst-case behavior under each type of perturbation, taking advantage of the fact that executing the generated code can serve as objective evaluation. We demonstrate ReCode on SOTA models using HumanEval, MBPP, as well as function completion tasks derived from them. Interesting observations include: better robustness for CodeGen over InCoder and GPT-J; models are most sensitive to syntax perturbations; more challenging robustness evaluation on MBPP over HumanEval.
研究の動機と目的
- 現実世界のシナリオにおいて、コード生成モデルの耐性を包括的かつ定量的に評価するためのベンチマークが不足しているという問題に取り組む。
- 意味を保つが自然なプロンプトの微小な変更(例:ドキュメンテーション文字列の言い換え、変数名の変更)がもたらすモデルの脆さを特定・特徴づける。
- コード実行を根拠とした客観的評価を活用する一般化可能な評価フレームワークを開発し、現実世界での信頼性を反映する耐性メトリクスを提供する。
- HumanEval や MBPP のような多様なデータセットと、さまざまなタイプの変更に対して、最先端のコード生成モデルを比較可能な標準的かつ拡張可能なベンチマークを提供する。
提案手法
- ドキュメンテーション文字列(例:逆翻訳、要約の再構成)、関数/変数名(例:キャメルケースへの変更、類義語置換)、コード構文(例:文の順序変更、演算子の変更)、コードフォーマット(例:インデント、改行)の4つのコード的側面にわたり、30種類以上の自然で意味を保つ変換を設計・適用する。
- 90%以上のパーセンテージで元の意味を保持し、自然さを維持していることを確認するため、人間による評価と意味的類似度スコア(例:BERTScore)を用いる。
- 3つの耐性メトリクスを定義する:Robust Pass @k(変更されたプロンプトでの正答率)、Robust Drop @k(通常プロンプトからの正答率の相対的低下)、Robust Relative @k(一般的な不安定性を測る指標)、すべて実行結果に基づく正答性を基準とする。
- HumanEval および MBPP に対して、SOTA モデル(CodeGen, InCoder, GPT-J)にこのベンチマークを適用し、安定した推定を得るため、top-p サンプリングを温度 0.2 で n=100 で実行する。
- 生成コードの実行を客観的評価として用い、正答性を表面的な文字列一致ではなく、機能的挙動に基づいて測定する。
- 複数の変更タイプおよびモデルのバリエーション(例:モノリス対マルチ、2B から 16B パラメータ)にわたり、耐性を評価する。
実験結果
リサーチクエスチョン
- RQ1最先端のコード生成モデルは、自然で意味を保つプロンプトの変更に対して、どのように動作するか?
- RQ2ドキュメンテーション文字列、名前付け、構文、フォーマットのうち、どのタイプの変更がモデルの耐性を最も著しく低下させるか?
- RQ3モデルアーキテクチャおよび事前学習データの多様性は、プロンプトの変化に対する耐性にどのように影響するか?
- RQ4Robust Pass、Robust Drop、Robust Relative といった耐性メトリクスは、異なるデータセットにおけるモデルの性能と安定性とどのように相関するか?
- RQ5HumanEval や MBPP のような異なるコード生成ベンチマークにおいて、耐性のパフォーマンスは一貫しているか?
主な発見
- CodeGen モデルは、すべての変更タイプにおいて InCoder や GPT-J よりも顕著に優れた耐性を示し、通常条件での HumanEval における Robust Pass @1 は CodeGen-16B-mono で 0.306 に達した。
- 構文の変更が性能低下を最も引き起こし、CodeGen-16B-mono では Robust Drop @1 が 60.87% に達した。これは構造的変更に対して極めて感受性が高いことを示している。
- フォーマットの変更、特に改行やタブインデントの変更は、耐性の著しい低下を引き起こす。MBPP において、フォーマット変更では Robust Drop @1 が 39.13%、コード後の改行変更では 45.42% に達した。
- モデルは HumanEval において MBPP よりも高い耐性を示し、同じタイプの変更に対して、MBPP では InCoder-6B で Robust Drop @1 が 45.42%、HumanEval では CodeGen-2B-mono で 16.67% にとどまった。
- Robust Drop は異なるサンプリング温度や n 値に対しても安定しており、Robust Pass および Robust Relative は k が増加するにつれて上昇する傾向を示しており、推論設定が異なる場合でもメトリクスの挙動が一貫していることが示された。
- 人間による評価により、90%以上の変更済みプロンプトが意味を保持していることが確認され、ReCode ベンチマークの自然さと妥当性が裏付けられた。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。