Skip to main content
QUICK REVIEW

[論文レビュー] Is Self-Repair a Silver Bullet for Code Generation?

Theo Olausson, Jeevana Priya Inala|arXiv (Cornell University)|Jun 16, 2023
Model-Driven Software Engineering Techniques被引用数 4
ひとこと要約

本稿では、大規模言語モデルが自らのコードをデバッグ・修正する自己修復(self-repair)が、コード生成におけるスケーラブルなパフォーマンス向上に寄与するかを調査している。HumanEvalおよびAPPSベンチマークでCodeLlama、GPT-3.5、GPT-4を用いて実験した結果、計算コストを考慮すると自己修復による向上は限定的であり、パフォーマンスはフィードバックの質に強く依存することが判明した。特に、モデルが生成するフィードバックを人間レベルのフィードバックに置き換えると、修復成功率が1.58倍に向上した。これは自己修復が万能解ではなく、モデルの自己内省的正確性に制限されていることを示している。

ABSTRACT

Large language models have shown remarkable aptitude in code generation, but still struggle to perform complex tasks. Self-repair -- in which the model debugs and repairs its own code -- has recently become a popular way to boost performance in these settings. However, despite its increasing popularity, existing studies of self-repair have been limited in scope; in many settings, its efficacy thus remains poorly understood. In this paper, we analyze Code Llama, GPT-3.5 and GPT-4's ability to perform self-repair on problems taken from HumanEval and APPS. We find that when the cost of carrying out repair is taken into account, performance gains are often modest, vary a lot between subsets of the data, and are sometimes not present at all. We hypothesize that this is because self-repair is bottlenecked by the model's ability to provide feedback on its own code; using a stronger model to artificially boost the quality of the feedback, we observe substantially larger performance gains. Similarly, a small-scale study in which we provide GPT-4 with feedback from human participants suggests that even for the strongest models, self-repair still lags far behind what can be achieved with human-level debugging.

研究の動機と目的

  • 計算コストを考慮した場合に、自己修復がLLMのコード生成パフォーマンスを顕著に向上させるかどうかを評価すること。
  • 特に複雑なコーディングタスクにおいて、フィードバック品質が自己修復の有効性に与える影響を調査すること。
  • 同等の計算リソースを割り当てた状況で、自己修復のパフォーマンスを単純なi.i.d.サンプリングと比較すること。
  • より強力なモデルや人間のフィードバックが、自己修復の限界を克服できるかどうかを評価すること。

提案手法

  • 本研究では、三段階の自己修復パイプライン(コード生成 → テスト実行 → フィードバック駆動修復)を用いて、CodeLlama-13b-instruct、GPT-3.5、GPT-4をHumanEvalおよびAPPSベンチマークで評価した。
  • フィードバック生成に関しては、モデル自身がフィードバックを生成するか、より強力なモデル(例:GPT-4)や人間参加者からのフィードバックを提供する。
  • 自己修復のパフォーマンスは、同等の計算リソースを割り当てたi.i.d.サンプリングと比較され、複数試行におけるパス率を測定した。
  • アブレーションスタディでは、初期サンプル数と修復試行回数を変化させ、多様性と修復の深さのトレードオフを評価した。
  • 人間のフィードバックは参加者から収集され、モデルが生成するフィードバックとの比較を通じて、その影響を評価した。
  • 定量的評価には、pass@k指標と、1つの誤りのあるプログラムあたり25回の修復試行における修復成功率を用いた。
Figure 1: Self-repair with separate code and feedback models. First, a user gives a specification in the form of text and a suite of unit tests (1). Then, a code model (blue) generates a program (2). The program is checked against the unit tests using a symbolic execution engine, and an error messag
Figure 1: Self-repair with separate code and feedback models. First, a user gives a specification in the form of text and a suite of unit tests (1). Then, a code model (blue) generates a program (2). The program is checked against the unit tests using a symbolic execution engine, and an error messag

実験結果

リサーチクエスチョン

  • RQ1計算コストを考慮した場合、自己修復はi.i.d.サンプリングに比べて顕著なパフォーマンス向上をもたらすか?
  • RQ2フィードバックの質が、コード生成における自己修復の成功率にどのように影響するか?
  • RQ3モデルが生成するフィードバックを、より強力なモデルのフィードバックや人間のフィードバックに置き換えることで、自己修復の結果が著しく改善されるか?
  • RQ4どのような条件下で自己修復が単純なサンプリングよりも有効となるか(例:初期サンプルの多様性が、多数の修復試行よりも価値がある状況はいつか)?
  • RQ5モデルが自らの誤りを内省し特定する能力が、自己修復の有効性にどの程度制限要因となるか?

主な発見

  • 計算コストを考慮した場合、自己修復は一貫してi.i.d.サンプリングを上回らない。一部のケースではパス率がベースラインのサンプリングと同等またはそれ以下である。
  • APPSでGPT-4を用いた場合、10個の初期サンプルと10回の修復試行(合計20回)では、pass@20ベースライン比で1.05倍のパス率を達成したが、2個の初期サンプルと10回の修復試行(合計22回)では、ベースライン比0.97倍にとどまった。
  • CodeLlama や GPT-3.5 に対して GPT-4 がフィードバックを生成するように人工的にフィードバック品質を向上させた場合、元の自己修復およびi.i.d.サンプリングを上回る著しい修復成功率が得られ、あらゆる計算予算で優位性を示した。
  • GPT-4自身が生成するフィードバックを人間が生成したフィードバックに置き換えることで、正常に修復されたプログラムの割合が1.58倍に向上した。これは、モデルの自己内省的正確性が主なボトルネックであることを示している。
  • 自己修復の成功はフィードバック品質に極めて敏感であり、モデルは自らのコードにおける微細な論理的誤りを特定するのが困難である。特に、概念的誤解に起因するエラーでは顕著である。
  • インパクト要因や階乗に基づく式の計算といったタスクでは、モデルが生成するフィードバックが原因を誤って特定することが多く、正しい推論を行っても修復に失敗する結果となる。
Figure 2: A repair tree begins with a specification $\psi$ (root node), then grows into initial programs $\{p_{i}\}$ , feedback $\{f_{ij}\}$ , and repairs $\{r_{ijk}\}$ .
Figure 2: A repair tree begins with a specification $\psi$ (root node), then grows into initial programs $\{p_{i}\}$ , feedback $\{f_{ij}\}$ , and repairs $\{r_{ijk}\}$ .

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。