← 最新の論文
💬 NLP

Stable-DiffCoder: Pushing the Frontier of Code Diffusion Large Language Model

Stable-DiffCoderは、調整された継続的事前学習戦略とウォームアップスケジュールの活用を通じて、コードベンチマークにおいて比較対象となる自己回帰型ベースラインや他の大規模言語モデルを凌駕しつつ、構造化されたコード編集、推論、および低リソース言語へのサポートを強化したブロック拡散コードモデルである。

原著者: Chenghao Fan, Wen Heng, Bo Li, Sichen Liu, Yuxuan Song, Jing Su, Xiaoye Qu, Kai Shen, Wei Wei

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

原著者: Chenghao Fan, Wen Heng, Bo Li, Sichen Liu, Yuxuan Song, Jing Su, Xiaoye Qu, Kai Shen, Wei Wei

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

あなたはロボットにコンピュータコードの書き方を教えていると想像してください。長い間、この標準的な方法は、子供に物語を左から右へと一文字ずつ書くように教えるようなものでした。「昔々あるところに」と言い、ロボットは次の単語、その次の単語を予測しなければなりません。この手法は**自己回帰(Autoregressive: AR)**生成と呼ばれ、非常に優れていますが、少し融通が利きません。実際のプログラマーは必ずしも一直線にコードを書くわけではありません。彼らは途中に内容を書き足したり、最後まで書き終えた後に最初の方のミスを修正したり、あるいは複数の独立したブロックを同時に書き進めたりすることがよくあります。

ここで、Stable-DiffCoderが登場します。これは、ロボットにより人間らしいプログラミング思考を教えようとする新しいモデルです。単に左から右へと書くのではなく、「拡散(Diffusion)」という技術を使用します。

「デノイジング(ノイズ除去)」のアナロジー

拡散法は、**「伝言ゲーム」「損傷した絵画の修復」**のようなものだと考えてください。

  1. 従来の方法(AR): ロボットは白紙の状態から始まり、最初の単語を書き、次に二番目の単語、三番目の単語と書いていきます。一度書いた単語について、後から考えを変えることはできません。
  2. 新しい方法(Diffusion): 完成した完璧なコードがあるとし、その一部をランダムに黒いマーカーで塗りつぶしたと想像してください(これがデータの「破損」です)。ロボットの仕事は、この乱れた、覆い隠されたバージョンを見て、その下にあるはずの綺麗なコードがどのようなものかを突き止めることです。ロボットは、小さな推測を繰り返し、間違った部分を消去し、コードから「ノイズ」が消えて再び完璧になるまで、ステップ・バイ・ステップで洗練させていくことでこれを行います。

なぜこれが優れているのか?

論文では、この「混乱を修正する」アプローチは、注意深く行えば、学習における「スーパーパワー」になると主張しています。

  • データの再利用: 従来の方法では、ロボットは一つのコードを一度だけ見て次へ進みます。しかし、新しい方法では、ロボットは同じコードを100回見ることができます。ただし、毎回異なる部分が隠されています。これは、数字を異なる順番で隠しながら数学の問題を解こうとする学習に似ています。これにより、ロボットは単に答えを暗記するだけでなく、コードの「ルール」をより良く学ぶことができます。
  • 並列思考: ロボットは(クロスワードパズルのように)一度に複数の欠落したピースを推測するため、一文字ずつではなく「ブロック」単位で考えることができます。これにより、全体像を把握する能力が向上し、より高速かつ効果的になります。

「Stable(安定)」の秘訣

研究者たちは、単にこの新しい手法に切り替えるだけではうまくいかず、ロボットが混乱して間違いを犯し始めることを発見しました。これを解決するために、彼らは2つの主要なトリックを備えたStable-DiffCoderを考案しました。

  1. ウォームアップ: いきなり「乱れた」コードの深いプールにロボットを投げ込むのではなく、最初は非常に小さく簡単なタスク(1つか2つの単語だけを隠すなど)から始めました。ロボットが上達するにつれて、隠すブロックのサイズを徐々に大きくしていきました。これは、重いウェイトを扱う前に軽いウェイトから始めるアスリートのトレーニングのようなものです。
  2. 「空のブロックなし」ルール: ロボットが練習する際、隠されたブロックの中に、実際に推測しなければならない単語が少なくとも一つは含まれるようにしました。これにより、学ぶべきことが何もない状態で時間を無駄にすることを防ぎました。

結果:それは機能するのか?

チームは、この新しいロボットを、既存の最高峰のコード作成ロボット(GoogleやMetaといった企業の巨大モデルを含む)に対し、多種多様なコーディングテストを用いてテストしました。

  • 巨人を打ち負かす: Stable-DiffCoderは、競合モデルと同じサイズ(約80億の「脳細胞」)であるにもかかわらず、ほぼすべてのテストで一貫して高いスコアを記録しました。従来の「左から右へ」のモデルよりも、より優れたコードを書き、バグをより良く修正し、複雑な指示をより正確に理解しました。
  • 編集能力の向上: 「空白を埋める」ように訓練されているため、既存のコードを編集することに非常に長けています。プログラムの中間にある関数を変更するように頼んだ場合、他のモデルよりも優れた結果を出しました。
  • 低リソース言語: 学習データが少ないプログラミング言語においても、驚くほど優れた成果を上げました。「推測して修正する」方法が、標準的な手法よりも早くこれらの希少な言語を学習するのに役立ちました。

まとめ

この論文は、Stable-DiffCoderが、「拡散」法(破損したデータから学ぶ方法)が単なる面白い実験ではなく、コードモデルを訓練するための優れた方法であることを証明していると主張しています。スマートなトレーニングスケジュールとこの手法を組み合わせることで、より多くのデータや大きなコンピュータを必要とすることなく、現在の最先端モデルよりも正確で汎用性の高いモデルを作り上げました。これは、反復、修正、そして隙間を埋める作業を通じて、人間が実際にどのようにプログラミングを行うかを模倣した、ロボットにコードを教える新しい方法なのです。

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

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

Digest を試す →