How Many Tries Does It Take? Iterative Self-Repair in LLM Code Generation Across Model Scales and Benchmarks
本論文は、大規模言語モデルのコード生成において、実行エラーをフィードバックする反復的自己修復が、モデルの規模や種類(Dense/MoE)を問わず、特に最初の 2 回で大幅な成功率向上をもたらし、現代の指示微調整済みモデルは追加の微調整なしにプロンプトのみで効果的に自己修復できることを示しています。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
この論文は、**「AI プログラマーが一度で完璧なコードを書けるわけではないが、エラーメッセージを見て『直し』を繰り返せば、驚くほど上手くなる」**という発見を報告したものです。
まるで、**「完璧主義な新人エンジニアが、上司(エラーメッセージ)の指摘を聞いて何度もリトライする」**ようなプロセスを、AI にやらせてみた実験ですね。
以下に、難しい専門用語を使わず、日常の比喩を交えて解説します。
🎯 結論:「一度きり」より「直し直し」の方が圧倒的に強い!
これまでの評価基準は、「AI が最初の一度で正解を出せるか?」というものでした。しかし、人間がプログラミングをするとき、最初に完璧なコードを書く人なんていませんよね?
「エラーが出た→原因を見て直す→また実行する」という**「試行錯誤」**の繰り返しです。
この論文は、最新の AI 7 種類(Llama 系列、Qwen、Gemini など)を使って、この**「エラーを見て直す(自己修復)」**プロセスを 5 回まで繰り返したところ、どんな小さな AI でも、どんな大きな AI でも、間違いなく成績が向上したことを発見しました。
🧩 具体的な発見:5 つのポイント
1. 「小さくても」賢くなれる(8B モデルでも OK)
昔の研究では、「小さい AI は直す能力がなくて、むしろ直すことで間違えるようになる」と言われていました。
でも、今回の最新の AI(2024〜2025 年製)は違います。
「8B(80 億パラメータ)」という比較的小さなモデルでも、指示を出すだけで、自分でエラーを直せるようになりました。 特別な勉強(微調整)は不要です。
2. 「最初の 2 回」でほとんど解決する
AI が直すのは、最初の 1 回目と 2 回目が最も効果的です。
- 1 回目直し: 大きな進歩。
- 2 回目直し: さらに良くなる。
- 3 回目以降: 効果は薄れてくる。
つまり、**「2 回くらい直せば、もう十分」**というのが現実的な目安です。
3. 「何が間違っているか」で難易度が違う
AI が直す成功率は、エラーの種類によって大きく異なります。
- 名前エラー(NameError): 「変数が定義されていません」というような単純なミス。直しやすさ:77%(簡単!)
- 構文エラー(SyntaxError): 文法ミス。直しやすさ:66%(まあまあ)
- 論理エラー(Assertion Error): 「コードは動いたけど、答えが間違っている」というミス。直しやすさ:45%(これが一番難しい!)
**「答えが合っているかどうかが分からない」**というミスは、AI にとっても人間にとっても一番直しにくいのです。
4. 「思考プロセス」を入れるとさらに賢くなる
AI に「ただ直して」と言うだけでなく、**「なぜ間違えたのか、理由を考えてから直して」と指示すると、特に高性能な AI はさらに劇的に成績が上がりました。
これは、「答えを急ぐのではなく、一度立ち止まって理由を考える」**のが効果的だということです。
5. 「直す」か「最初からやり直す」か?
「エラーを直して修正する」か、「同じ予算で最初から 5 回ランダムにコードを書かせる(リサンプリング)」か、どっちが得か?
- 高性能な AI: 「直す」方が、使う計算資源(トークン)が少なく、結果も良い。
- 低性能な AI: 「最初からやり直す」方が、偶然正解に当たる確率が高い。
つまり、AI が賢くなるほど、「エラーを直す」方が効率的になります。
🏆 優勝者は?
実験に参加した 7 つの AI の中で、最も高い成績を収めたのは Google の**「Gemini 2.5 Flash」**でした。
- HumanEval(プログラミングの基礎問題): 96.3% 正解
- MBPP(もう少し実践的な問題): 93.8% 正解
特に「Gemini 2.5 Flash」は、最初の試行で 86% だったのが、直しを繰り返すだけで 96% まで跳ね上がりました。これは、**「エラーを素早く理解して修正する能力」**が非常に高いことを示しています。
💡 私たちへの教訓(実用的なアドバイス)
この研究から、AI を使う際に役立つ 3 つのヒントが得られました。
- 必ず「直し」の機会を与えよう: 最初の回答が完璧でなくても、エラーメッセージを AI に返して「直して」と頼むだけで、成功率がグッと上がります。
- 2 回までが勝負: コストを抑えたいなら、2 回までの直しで十分です。それ以上やっても効果は薄いです。
- AI の能力に合わせて使い分ける:
- 高性能な AI なら「エラーを直す」のが一番お得。
- 高性能な AI なら「理由を考えてから直す(CoT)」と指示すると、さらに良くなる。
🎭 まとめ
この論文は、**「AI は一度で完璧ではないが、人間のように『失敗から学ぶ』ことができれば、驚くほど優秀なプログラマーになれる」**ということを証明しました。
これからは、AI に「正解を出せ!」と迫るのではなく、**「エラーが出たら、一緒に直そう!」**というスタンスで付き合うことが、最高の結果を生む鍵なのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。