競技プログラミング(Competitive Programming)は、大規模言語モデルの推論能力を映し出す一面の鏡です。
LeetCodeの「Hard」問題、CodeforcesのDiv1問題、IOIレベルのアルゴリズム問題——これらは、単なる言語モデルの「語感」だけで乗り切れるものではありません。厳密な論理的推論、正確なアルゴリズム設計、そして境界条件に対する極限までの配慮が求められます。
南京大学NJU-LINK Labが取り組むSolvitaプロジェクト(Enhancing Large Language Models for Competitive Programming via Agentic Evolution)は、異なるアプローチを試みています。「より多くのプログラミング問題をモデルに与えて暗記させる」のではなく、「エージェント自身が自己進化する過程で、競技プログラミングを解く能力を自ら『育んでいく』」という道筋です。
エージェント進化とは何か
論文の核となる概念は「エージェント進化(Agentic Evolution)」です。その基本的なワークフローは以下の通りです:
自己生成:エージェントは受動的に問題を解くだけではなく、新たなプログラミング問題を生成したり、新しいテストケースを設計したり、新たな境界シナリオを構築したりします。このプロセスは、本質的にエージェントが自分自身のために試験問題を作成していることに他なりません。
自己検証:エージェントが書いたコードは、生成されたテストケース上で実行されます。通過したコードは保持され、失敗したコードは分析プロセスへと送られます。エージェントは「なぜ間違ったのか」を理解しなければなりません——アルゴリズムの発想そのものが誤っていたのか、境界条件の網羅が不十分だったのか、あるいは実装上のバグが原因だったのか。
自己反復:エラー分析に基づき、エージェントは自らの戦略を調整します。「この問題には動的計画法を使えばよい」と単純に記憶するのではなく、「どのようなタイプの問題に動的計画法が適しているか」「状態遷移式をどう設計すべきか」といった根本的な理解を深めていきます。
集団進化:複数のエージェントが並列して進化し、互いに学んだ戦略やテクニックを共有します。あるエージェントが発見した有効な解法パターンは、瞬時に集団全体へと伝播します。
既存手法との違い
現在、大規模言語モデルのプログラミング能力を向上させるための主流手法には以下のようなものがあります:
- 教師あり微調整(SFT):大量の(問題, 正解コード)ペアを用いてモデルを訓練します。効果はありますが、高品質なアノテーションデータに強く依存し、また訓練セットへの過学習が起こりやすいという課題があります。
- 強化学習(RL):正解率を報酬信号としてモデルを最適化します。一定の効果はありますが、訓練が不安定になりやすく、「報酬ハッキング(reward hacking)」——つまり、テストケースを通過するが論理的に誤ったコードを生成する——といった問題も生じます。
- 推論拡張(Reasoning Augmentation):思考連鎖(Chain-of-Thought)などの技術を用いて、モデルが段階的に推論できるように支援します。これは有用ですが、アルゴリズム設計能力そのものを根本的に高めることはできません。
一方、Solvitaの進化型パラダイムはこれらすべてと異なります。外部からのアノテーションデータを必要とせず(エージェントが自ら生成)、単一の報酬信号に頼らず(多面的な自己評価を実施)、特定の推論形式にも縛られません(戦略は自律的に進化していきます)。
実験結果
論文では、複数の競技プログラミングベンチマークを用いた評価が行われました。最も重要な知見は、エージェント進化により訓練されたモデルが、訓練中に一度も見たことのない問題タイプに対して、SFTおよびRLベースラインを明確に上回る汎化性能を示したことです。
これは論文の中心仮説——「進化によって獲得された能力は、『教えられた』能力よりも柔軟である」——を裏付けるものです。なぜなら、進化プロセスはエージェントに問題の本質的構造を理解させようとするからであり、単なる解法テンプレートの記憶にとどまらないのです。
IMO金メダル級推論論文との関係
興味深いことに、Solvitaは以前に話題となった「単純なスケーリングだけでIMO金メダルレベルの推論能力を達成する」という論文と、対照的な関係を描いています。
スケーリング論文の立場は「新しい手法は不要。モデルをもっと大きくすればよい」というものでした。それに対し、Solvitaの立場はまさに逆で、「より大きなモデルは不要。代わりに、より優れた訓練パラダイムがあれば十分だ」と主張しています。
どちらのアプローチが優れているかは、現時点では未解決の問いです。しかし、Solvitaの魅力の一つは、計算資源への配慮にあります——膨大な訓練用GPU時間を必要とせず、知的で洗練された訓練設計によって効率を高めることが可能なのです。
私の所感
Solvitaが最も興味深い点は、「エージェント」と「訓練」という二つの概念を融合させた点にあります。
従来の訓練パラダイムでは、エージェントは受動的です——人間がデータを与え、モデルはそれを学習します。しかしSolvitaでは、エージェントは能動的です——何を学び、どのように学び、どの失敗から教訓を得るかを、自ら決定します。
これは、現実世界における優れた人間のプログラマの成長プロセスに非常に近いものです。優れたプログラマは、LeetCodeの全問題を解き尽くすことで強くなるわけではありません。むしろ、常に新しい問題に挑み、自らの間違いを丁寧に分析し、他人のコードから学ぶことを通じて、アルゴリズムとプログラミングに対する深い理解を徐々に築き上げていきます。
Solvitaは、AIにもこうした道を歩ませようとしています。もし本当にこの道が開けるならば、競技プログラミングは単なる出発点にすぎず、同様の進化型パラダイムは、複雑な推論能力が求められるあらゆる分野へと応用可能になるでしょう。
もちろん、課題も少なくありません。エージェントが生成する訓練データの品質はいかに保証されるのか? 進化の過程で能力が逆退化することはないのか? 「本当に理解した」と「単にパターンを記憶した」の違いを、どう測定するのか?
こうした問いには、今後さらに多くの研究が必要です。しかしSolvitaは少なくとも、エージェントの自己進化という方向性が、プログラミング能力というハードコアな指標において実際に機能することを、実証しました。
主な情報源: