アーカイブ / LLM
コード修正の助言を、修正後のテスト結果で評価するCoffee-Gym
Coffee-Gym
Coffee-Gymの原論文から掲載した図です。細部はクリックして拡大できます。
原論文の図の説明を読む
Figure 1: A motivating example (Top) and Pass@1 accuracy in HumanEvalFix (Bottom). We compare the feedback from our model and various other models, both paired with DeepSeekCoder-7B as the code editor. SFT denotes the model trained on Code-Feedback ( Zheng et al., 2024 ) using the same backbone model as ours.
概要
- Coffee-Gymは、人のコード修正履歴を基にしたCoffeeと、助言後の修正コードをテストして採点するCoffeeEvalを組み合わせる。
- 著者らの実験では、DeepSeek-Coder-7BのPass@1が、助言の追加によりHumanEvalFixで60.4から73.8、Coffee-Testで33.8から47.2になった。
- 著者らが挙げる対象範囲は主に競技プログラミングのPythonコードで、修正後の効率や読みやすさは評価対象外である。
補足:編集した模式図で仕組みを確認する
VISUAL EXPLAINER
図でつかむ、Coffee-Gymの仕組み
- 01問題文と誤コード
- 02修正助言を生成
- 03助言に沿って編集
- 04テスト通過割合
原論文の説明をもとにした模式図です。処理の細部は省略しています。
研究の背景
Coffee-Gymは、誤ったコードを直すための文章による助言を作り、その役立ち方を測る。コード用の大規模言語モデルも誤りを出すため、修正箇所と直し方を伝える助言には実用上の意味がある。
助言モデルの学習には、異なる種類の誤りと、助言が修正につながったかを判断する材料が要る。著者らは、人がコードを直した履歴を集め、助言後の修正コードをテストする仕組みを組み合わせた。
手法
Coffeeは、競技プログラミングで人が提出した誤ったコードを、同じ人の最終的な正解コードと組にしたデータである。GPT-3.5-Turboに両者の違いを説明させて正しい助言を作り、誤ったコード同士の違いから誤った助言も作る。テスト入力は同モデルで生成し、期待出力は正解コードを実行して得る。
CoffeeEvalは、問題文、誤コード、助言を編集モデルに渡し、出力された修正コードがテストを通った割合を助言の点数にする。例えば、ある入力で誤るコードへの助言なら、その助言に沿った修正が期待出力を返すかを数える。単体テストとは、入力ごとに実際の出力と期待出力を照合する試験である。
新規性
Coffee-Gymは、助言の文章を直接採点する代わりに、助言に沿って編集したコードのテスト通過割合を報酬にする。報酬とは、学習時に望ましい出力を示す数値である。
評価に使う編集モデルは、正しい助言から正しい修正を作る例と、誤った助言から誤った修正を作る例の両方で学習する。助言の違いが修正結果に表れるようにした点が、この評価法の要である。
従来手法との違い
助言の評価では、GPT-4-Turboなどが文章を直接採点するG-Evalと、一般のコード用言語モデルに編集させてテストする方式を比較対象にした。CoffeeEvalは、正誤両方の助言に従うよう学習した編集モデルを使う。
修正性能では、助言なしに加え、実行結果、編集モデル自身、別のコード用モデル、GPT-3.5-Turbo、GPT-4-Turboによる助言と比較した。結果は組み合わせる編集モデルごとに示されている。
実験結果
著者らはCoffeeのテスト集合で、助言の正誤ラベルと評価点の一致を調べた。CoffeeEvalのPearson相関係数は0.149、平均二乗誤差は0.408で、GPT-4-TurboによるG-Evalの0.135、0.415と比較された。前者は点数とラベルの連動、後者は両者のずれを示す。
修正性能では、DeepSeek-Coder-7B単独のPass@1がHumanEvalFixで60.4、Coffee-Testで33.8、著者らの助言を加えると73.8、47.2だった。Pass@1は一度の修正で正解する割合を指す。Coffee-Testは学習側と問題が重ならない180件で、Coffeeの合成テストは問題当たり平均35.5件である。
応用の可能性
編集上の応用案 · 論文が実証した用途とは区別しています。
編集上の応用案:社内のPythonコードで、小さな不具合修正への助言を試す。問題の説明、修正前のコード、既存テストを入力とし、誤りと修正方針を示す文章を出力する。開発者が助言を確認してコードを直し、テスト結果も確認する流れを想定する。
社内向けにモデルを適応させるなら、利用可能な過去の修正前後のコード、問題の説明、入力と期待出力を持つテスト、助言の正誤ラベルが必要になる。専用センサーは要らない。この用途での効果は論文の実験からは確定しない。
応用先の候補からNauhに相談できます。
導入時の検証
導入時の検証案 · 対象データでの再評価が必要です。
導入時の検証案:Pythonの小さな修正課題を集め、問題説明、修正前後のコード、入力と期待出力を持つテストを用意する。モデルを社内コードに適応させる場合は、助言の正誤ラベルも確認して学習に使う。専用センサーは不要である。
同じ課題で、助言なし、実行結果による助言、Coffee-Gym方式の助言を比べる。初回の修正で全テストを通る割合と誤修正件数を記録し、テストにない条件も人が確認する。社内データへの適応と評価は分けて行う。
限界と課題
著者らが明示する範囲は、主に競技プログラミングの誤ったPythonコードの修正である。修正後の効率と読みやすさは評価対象外で、合成テストを誤ったコードが通過する可能性も挙げる。助言モデルの規模と構成は一種類で試している。
編集上の検証事項は、社内の仕様変更や複数ファイルの修正にも助言が通用するか、テスト不足で誤修正を見逃さないかである。論文の正解率を、そのまま社内開発での改善率として扱うことはできない。
出典
元のタイトル・要旨を確認する(英語)
Coffee-Gym: An Environment for Evaluating and Improving Natural Language Feedback on Erroneous Code
This paper presents Coffee-Gym, a comprehensive RL environment for training models that provide feedback on code editing. Coffee-Gym includes two major components: (1) Coffee, a dataset containing humans' code edit traces for coding questions and machine-written feedback for editing erroneous code; (2) CoffeeEval, a reward function that faithfully reflects the helpfulness of feedback by assessing the performance of the revised code in unit tests. With them, Coffee-Gym addresses the unavailability of high-quality datasets for training feedback models with RL, and provides more accurate rewards than the SOTA reward model (i.e., GPT-4). By applying Coffee-Gym, we elicit feedback models that outperform baselines in enhancing open-source code LLMs' code editing, making them comparable with closed-source LLMs. We make the dataset and the model checkpoint publicly available.
論文本体の取得範囲に基づく解説。AIが作成した未校閲の記事です。性能の数値は著者の評価条件に依存します。応用例と検証計画は編集上の提案です。解説更新:2026-10-01




