← 最新の論文
🤖 AI

BoostAPR: Boosting Automated Program Repair via Execution-Grounded Reinforcement Learning with Dual Reward Models

BoostAPR は、強化学習中の微細な行レベルのクレジット割り当てを可能にするために、教師あり微調整と実行検証付き推論、および二重報酬モデルを組み合わせることで自動プログラム修復を強化する 3 段階のフレームワークであり、複数のベンチマークにおいて最先端のパフォーマンスと強力な言語間一般化を実現しています。

原著者: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

公開日 2026-05-12
📖 1 分で読めます☕ さくっと読める

原著者: Yuanhao Li, Hongbo Wang, Xiaotang Shang, Xunzhu Tang, Yiming Cao, Xuhong Chen

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

非常に賢いものの、少し不器用な見習いを、壊れた機械を修理する方法に教えることを想像してください。その機械はコンピュータコードの断片であり、「壊れ」はテストに失敗させるバグです。

長らく、私たちはこれらの見習い(AI モデル)に、壊れた機械とその修理の例を示すことで教育しようと試みてきました。しかし、問題があります。見習いが修理を試みると、機械は完璧に動作するか、あるいは爆発するかどちらかです。どのネジを締めたり、どの配線を切断したりしたことが決定的な違いを生んだのか、機械は見習いに教えてくれません。彼らが得るのは、二元的な「よくやった」か「ダメだった」かの評価だけです。これでは学習は遅く、イライラを招きます。

この論文は、これを解決するための新しいシステム「BOOSTAPR」を紹介しています。それは、その不器用な見習いを熟練したメカニックへと変えるために設計された、三段階のトレーニングキャンプのようなものです。

ステップ 1:「考えてから行動する」宿題(教師あり微調整)

まず、システムは見習いに単に最終的な修理を示すのではなく、熟練メカニックのノートを見せます。

  • 比喩: 熟練メカニックは、修理済みのエンジンを手渡すだけでなく、まず思考プロセスを書き留めます。「左側から音が聞こえたので、ベルトを確認し、緩んでいるのを発見して締め直した」といった具合です。
  • 論文の主張: AI は「実行検証済みデモンストレーション」で訓練されます。つまり、熟練メカニックが実際に問題を解決し、かつその推論を書き留めた事例のみから学習するのです。AI は「何」を変えるかだけでなく、「どのように」問題について考えるかを学びます。

ステップ 2:二人の異なるコーチを雇う(二重報酬モデル)

見習いが練習を始めた後、フィードバックが必要です。昔は、コーチは単に「そのパッチは成功した!」または「そのパッチは失敗した!」と言うだけでした。この論文では、それは曖昧すぎると述べています。そこで、二人の専門コーチを雇います。

  1. 「全体像」コーチ(RseqR_{seq}): このコーチは修理作業全体を見ます。機械は動作しましたか?はい、いいえ。彼らはパッチ全体に対してスコアを与えます。
  2. 「顕微鏡」コーチ(RlineR_{line}): これが新しい、秘密の調味料です。このコーチは修理を行ごとに観察します。
    • 比喩: 見習いがエンジンを修理したものの、車の色を奇妙な色に塗り替え、ラジオのチャンネルを変えてしまったと想像してください。「全体像」コーチは「動作するから、良い仕事だ」と言います。しかし、「顕微鏡」コーチは「待てよ、塗装ラジオはエンジンの修理には役立たなかった。ベルトの締め直しだけが功を奏した。成功の功績は塗装ではなく、ベルトに与えよう」と言います。
    • 論文の主張: このコーチは、実際にバグを修正したコード行(「編集スパン」)と、単なるノイズだった行を正確に特定することを学びます。「全体像」スコアを受け取り、成功の功績を重要だった特定の行に再配分します。

ステップ 3:スマートなフィードバックを伴う実践走行(PPO 最適化)

最後に、見習いはリアルタイムでバグを修理するシミュレーションに入ります。

  • 比喩: 見習いが動くたびに、二人のコーチが互いに話します。「顕微鏡」コーチは「全体像」コーチに、「作業全体に対してポイントを与えるだけでなく、その特定のボルトを締め直した見習いに追加ポイントを与え、その間に行われたランダムなタイピングにはゼロポイントを与えよ」と伝えます。
  • 論文の主張: AI は PPO(強化学習の一種)という手法を使って脳を更新します。「顕微鏡」コーチが非常に詳細なフィードバックを与えるため、AI は単に「良い/悪い」という一般的なシグナルしか得なかった場合よりも、はるかに速く、かつ正確に学習します。

結果:どの程度機能しましたか?

著者らは、この新しいトレーニングキャンプを、数千の壊れたコード例を含む 4 つの異なる「ガレージ」(ベンチマーク)でテストしました。

  • SWE-bench(実世界の GitHub バグ): AI は 40.7% のバグを修正しました。これは、この特別なトレーニングを受けていない同じ AI モデルと比較して、22.9% の大幅な上昇です。
  • Defects4J(Java バグ): AI は主に Python で訓練されましたが、Java バグの 24.8% を正常に修正しました。これは、「顕微鏡」コーチが、Python 固有のトリックだけでなく、一般的な修理スキルを見習いに学習させたことを示しています。
  • HumanEval-Java & QuixBugs: これらの特定のコーディング課題において、非常に高いスコア(84.5% と 95.0%)を達成しました。

なぜこれが重要なのか(論文によると)

この論文は、最大の画期は AI が賢くなったことだけでなく、どのように賢くなったかにあると主張しています。「動作したか?」(シーケンスレベル)から「どの特定の行が動作させたか?」(行レベル)へと移行することで、彼らは主要な学習のボトルネックを解決しました。

「顕微鏡」コーチ(RlineR_{line})は単独で重労働を担ったわけではありません。「全体像」コーチ(RseqR_{seq})が大部分の作業を行いました。しかし、「顕微鏡」コーチは、新しい困難な問題への汎化に必要な追加のブーストを提供し、トレーニングプロセスをより安定かつ効率的にしました。

要約: BOOSTAPR は、AI にコードを修理させるために、専門家の思考プロセスを示し、作業全体を評価するコーチを雇い、さらに締め直されたすべてのネジを評価する第二のコーチを雇うことで、AI が次回何をすべきかを正確に学習することを保証します。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →