← 最新の論文
🤖 machine learning

Reinforcement Learning for Code Optimization

本論文は、実行環境のキャリブレーション、正当性と速度の報酬の合成、および学習アルゴリズムの適応化を通じて、コード最適化への強化学習適用における不安定性を克服し、正当性を維持しながらより高速なコードの生成を大幅に向上させる3段階のフレームワークであるDMC-Optimを紹介する。

原著者: Pierre Chambon, Kunhao Zheng, Juliette Decugis, Benoit Sagot, Gabriel Synnaeve

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

原著者: Pierre Chambon, Kunhao Zheng, Juliette Decugis, Benoit Sagot, Gabriel Synnaeve

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

コンピューターが、非常に才能はあるけれど少し不器用なシェフのような世界を想像してみてください。彼らは完璧な料理を作るためのレシピ(動作するコードを書くこと)に従うことはできますが、多くの場合、一つの大きな飛躍で済むところを、千もの小さなステップを踏んで遠回りをしてしまいます。これが、人工知能(AI)コード生成の世界です。科学者たちは、フィードバックを与えることで、これらのAIシェフに料理の仕方を教えてきました。「もし料理が美味しかったら、金メダルをあげます」という具合に。この手法は**強化学習(Reinforcement Learning)**と呼ばれ、AIが「動作する」コードを書くことを非常に得意にさせました。しかし、落とし穴があります。そのコードは、まるでフードプロセッサーを使わずに玉ねぎをすべて手作業で刻むシェフのように、実行速度が遅いことが多いのです。大きな疑問は、「AIに単に料理を作るだけでなく、それを『速く』作る方法を教えられるか?」ということです。課題は、「速い」という概念は捉えどころがないことです。コードの実行時間を正確に測定することは、ストップウォッチが手の中で震えている状態でレースのタイムを計ろうとするような、ノイズの多い作業なのです。もしAIがタイミングを間違えると、速く走ることはできても台無しにしてしまったり、あるいはノイズに混乱して学習自体を止めてしまったりするかもしれません。

「Reinforcement Learning for Code Optimization(コード最適化のための強化学習)」と題されたこの論文は、研究チームが、どのようにしてAIシェフに「玉ねぎを手で刻むのをやめて、フードプロセッサーを使い始めさせるか」を、キッチンを火の海にすることなく教えたかについての物語です。彼らは、単にAIに「もっと速くなれ」と言うだけではうまくいかないことを発見しました。なぜなら、時間の測定値があまりにも乱れているからです。代わりに、彼らは特別な、超正確なキッチン(「校正されたサンドボックス」)と、AIに金メダルを与えるための新しい一連のルールを構築しました。彼らは、AIがテストされる方法を慎重に設計することで(つまり、速い解決策と遅い解決策の差が実際に現れるような、より大きく困難な問題を使用することで)、AIが正しく、かつ大幅に速いコードを書けるように教えられることを発見しました。その結果はどうでしょう? AIは、厳格なカテゴリーにおいて、複雑なパズルを最大**125%**速く解くことを学びました。これは、数学の問題を解くだけでなく、先生のストップウォッチが少しガタついていても、最小限の手順で解く方法を学ぶ学生のようなものです。

問題点: 「速いが間違っている」という罠

ロボットにレースの訓練をしていると想像してください。もし単に「できる限り速く走れ」と言ったら、ロボットはトラックを壊すような近道を選んでズルをしたり、急ぎすぎて自分の足に躓いて転んだりするかもしれません。コードの世界では、研究者がAIに速くなるよう教えようとしたときに、まさにこれが起こりました。彼らは報酬システムに「速度」を加えようとしました。「もしコードが動作し、かつ1秒で実行されたら大きな報酬を。10秒で実行されたら小さな報酬を」という具合に。

しかし、この単純なアイデアは失敗しました。なぜでしょうか? 時間の測定にはノイズが多いからです。コードが速く動いたのは、コードが賢かったからではなく、単にその時のコンピューターの調子が良かっただけかもしれません。逆に、コンピューターが他の作業で忙しかったために、コードが遅くなったこともあります。この「ノイズ」がAIを混乱させました。AIは「速さ」は重要ではないと学習し始めたり、さらに悪いことに、非常に速いが完全に間違っているコード(ゴールとは逆方向に全力疾走するロボットのようなもの)を書くことを学んでしまったりしました。論文は、測定ツールを修正せずに時間に報酬を加えるだけでは、AIの速度向上はほとんど見られず、時には正確さが損なわれることさえあることを示しています。

解決策: より良いキッチンの構築

研究者たちは、AIが学習できるようになる前に、3つのことを修正する必要があることに気づきました。それは、テスト報酬、そして学習方法です。

1. テスト: 短距離走からマラソンへ
AIに与えられていた元のテストは、短距離走のような非常に短く素早いものでした。短距離走では、わずかな遅延(くしゃみ一つなど)が時間に大きな影響を与え、ランナーが本当に速いのかどうかを判断することを不可能にします。研究者は、DMC-Optimと呼ばれる新しいテストセットを構築しました。これらはマラソンのようなものです。膨大な入力と、実行に数秒から数分かかる複雑な問題を使用します。マラソンでは、くしゃみなど関係ありません。誰が実際に速く走っているのかを明確に見極めることができます。彼らは2,723個の整理された問題を生成し、AIが優れた解決策と優れた解決策の差を実際に感じられるように設計された、遅い実行を前提とする352,740個の新しい「最適化テスト」を追加しました。

2. 報酬: 三段階のゲート
単に「速い方が良い」と言う代わりに、研究者は「三段階のゲート」として機能する巧妙な報酬システムを設計しました。

  • ゲート1(正確性): コードは動作しなければなりません。動作しない場合、大きなペナルティ(金メダルなし)を与えます。
  • ゲート2(最適化): もし動作する場合、それは「スピードテスト」に合格しているでしょうか? AIは人間のエキスパートのリーダーボードと比較されます。AIが人間の上位30%に入れば、報酬が得られます。
  • ゲート3(シグナル): 報酬は単なる数字ではなく、明確なシグナルです。彼らは、ディマー(調光)スイッチではなく、「バイナリ(二値)」報酬(電球のオン・オフのようなもの)を使用しました。これにより、AIが時間のわずかなノイズによる違いに混乱するのを防ぎます。コードが正しく、十分に速ければ、ライトがオンになります。そうでなければ、オフのままです。このシンプルな「オン・オフ」のシグナルが、驚くほど強力でした。

3. 学習: 安定したコーチ
ノイズの多いタイミングデータを用いてAIを訓練することは、手が震えている状態で犬を訓練するようなものです。研究者は、学習アルゴリズム(GRPOと呼ばれます)をより安定するように調整する必要がありました。AIが各問題に対して行う試行回数を増やし(例えば、犬にコースを1回ではなく16回走らせるようなもの)、ノイズを平均化しました。また、スコアの計算方法を調整することで、AIが失敗しても挫折しないようにしました。これにより、タイミングの測定が多少ガタついていても、学習を安定して継続させることができました。

結果: クラッシュすることなくスピードアップする

これらすべての要素を組み合わせたとき、結果は目覚ましいものでした。彼らは、Qwen 2.5(70億および320億パラメータのモデル)やCWM 32Bを含む異なるAIモデルでテストを行いました。

  • 大きな飛躍: 最も困難なテスト(コードが人間のスピードの上位30%に入る必要があるテスト)において、CWM 32Bモデルのパフォーマンスは**13.7%から30.9%へと跳ね上がりました。これは相対的に125%**の改善です!
  • 正確性の維持: 決定的なことに、AIは速度のために正確さを犠牲にしませんでした。コードが(たとえ遅かったとしても)「正しい」回数は、変わらないか、むしろわずかに向上しました。AIは「速く、かつ正しい」ことを学んだのです。
  • ベースラインを打ち破る: 標準的な学習方法と比較した場合、新しい最適化訓練を受けたモデルは、LiveCodeBenchと呼ばれる別のベンチマークにおける直接対決において、**83%**の確率で勝利しました。

AIは実際に何を学んだのか?

研究者たちは単にスコアを見ただけでなく、AIがどのようなテクニックを学んだのかを確認するために、コード自体を調査しました。彼らは別のAI(「判定役」)を使用して、新しいコードを古いコードや人間の解決策と比較しました。

  • 「I/O」のテクニック: 最も一般的な改善は、入出力(I/O)の最適化でした。AIは、冷蔵庫のドアを開け閉めする時間を無駄にするのをやめたシェフのように、データをより効率的に読み書きすることを学びました。これが勝利の**47%**を占めました。
  • 「数学的」ショートカット: **6%**のケースで、AIは数学的なショートカットを見つけ、すべての計算を行う必要はないことに気づきました。
  • 「アルゴリズム」の変更: **13%**のケースで、AIは問題の解決方法そのものを変更しました(例えば、遅い総当たり攻撃からスマートで効率的な方法への切り替え)。これが最適化の「聖杯」です。
  • 人間を凌駕する: 人間は依然としてより複雑な改善を見つけることが一般的であり(複雑性の改善において人間が22%の勝利に対し、AIは7%)、人間の方が優れていました。しかし、AIは複雑性の改善が見つかったケースのうち、**7%**において最高レベルの人間による解決策を上回りました。

限界と未来

この論文は、これが魔法の杖ではないことを注意深く述べています。AIは依然として最も困難な問題に苦戦しており、人間は依然としてより複雑なアルゴリズムの変更を見つけることに長けています(人間は複雑性の改善において22%の勝利に対し、AIは13%でした)。また、AIはコードを速くするために、必要な部分まで削ぎ落してしまうことがあり、これは現実世界のソフトウェアにおいては安全ではない可能性があります。

しかし、この論文は、これが大きな前進であることを示唆しています。より良い「キッチン」(テストとサンドボックス)を構築し、より明確な指示(報酬システム)を与えることで、AIは単に正しいコードではなく、効率的なコードを書くことを学べることを証明しました。これは、AIが単にソフトウェアを書くだけでなく、人間エキスパートが設計するような速い速度で動作するソフトウェアを書く未来への礎となります。研究者たちは、次のステップとして、AIに対して「なぜその解決策が速いのか」についてより具体的なフィードバックを与え、さらなる複雑なアルゴリズムのトリックを発見させることを提案しています。

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

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

Digest を試す →