
現行のAIベースのコード理解ツールは、要約、検索処理された生成(RAG)、知識グラフは、拡大するガラスを使用して、大陸をマップするようなものです。 彼らは脆弱であり、多くの場合、大きなコードベースのためのより大きな画像 - 特に見逃します。
リッチ・ストンのインスピレーションビターレッスン, 全コンテキストメソッドは異なるアプローチを取る. コードベースをチャンクに分解し、コードベース理解の部分をディバインダーとソフトウェアのトリックを使用して作成する代わりに、私たちの方法は、包括的な学習主導のソリューションを包括しています。 この短い投稿では、フラグメントされたメソッドが短くなり、AIの進化に並行して描画する理由を調べます。 また、初期の定性的結果については、後日より詳細な分析で報告します。 コードの理解の未来はここにあり、ソフトウェアのトリックや人間設計のヒューリスティックに依存しません。
ビターレッスンとショートカットが失敗する理由
計算強化学習の創設者であるリッチ・ストン(そして私の好きな教科書の作者)が書いたビターレッスン個人的なウェブサイト。 「計算を活用する一般的な方法は、最終的に最も効果的であり、大幅なマージンによる」というリマインダーです。 一般的な方法は、専門的、人間設計のヒューリスティックとドメインの知識を一貫して発信しています。 人工知能の歴史は、このような素晴らしい例でサポートしています。
- チェス、ディープブルー、アルファゼロ: 1997年、深い 青は世界チャンピオン、カスパロフを倒しました。 フィードバック 青は、大規模な検索と人間のチェス戦術の組み合わせを使用しました。 2017年、DeepMindのAlphaZeroは自己プレイを通して傷からチェスをマスターしました。 すべての人間を上回るだけでなく、世界トップクラスのコンピューターチェスプログラムを水に吹き込む。 その後、ストックフィッシュと他の「伝統」チェスプログラムも競争を維持するために、自分のエンジンの神経ネットワークを含むようになりました。
- コンピュータビジョン: 2000年代初頭に、SIFTやHOGなどの機能工学に依存するビジョンシステム。 2016年、ResNetなどのディープコンボリーショナルニューラルネットワークは、生ピクセルで訓練され、超人的精度でこれらの方法を上回りました。
- スタークラフトとアルファスター: 2019年、DeepMindのAlphaStarがBlizzardのStarCraft IIをモデル化し、何百ものユニット、マップ、および戦略をモデル化し、選択的なルールに依存せず、プロのゲーマーを再生します。
- 考古学: 2022年に、GoogleのDeepMindは、熟練した前提ではなく、生の言語パターンから学ぶことで古代のキュニフォーム錠を再構築しました。
- 蛋白質の折りたたみ: 2023年に、AlphaFold 2は、人間の加工された化学モデルを迂回し、生の分子データから学ぶことによって長期にわたるタンパク質の折る挑戦を解決しました。
テイクアウトは、全体的に、生データから一般化された学習と、多くのコンピュートが一貫したアウトパーフォームの巧妙なショートカットを組み合わせているようです。 AIコードの理解だけでなく、同様のアークを見ることを期待しています。
なぜコード理解が大きいコードベースのためのStruggles
2025年初頭のように、コードコピローは、数千行のコードを数千行以上スパンで動作させる必要があるコンテキストのときに苦労しています。 AIコードのドキュメンテーションジェネレーターは、大規模なコードベースに欠ける結果を生成します。 これは主に、多くのLMのより小さい(〜100kトークン)のコンテキストウィンドウとそれを克服するために使用される一般的なトリックの制限のためです。 次のようなトリック:
- サマライゼーションとメモリ: 大きな文脈に対処するための一般的なアプローチは、これまでに見たすべてのものの転がりまとめに向かってその一部を割り当てることです。 このプロセスは、非常に設計、損失です。 コードの理解のために、このアプローチはローカルの依存関係をキャプチャすることができますが、それは頻繁にコードベースを渡るクロスモジュールの全体的な依存関係を欠きます。
- リトリバル拡張生成(RAG): RAGは、コードベースのチャンクのベクターデータベースを持ち、与えられたクエリのコードベースを渡る最も「関連する」チャンクを取得します。 RAGは特定の情報検索に役立ちますが、しばしば信頼できません。 また、複数のチャンクが必要なタスクにはRAGは役に立ちません。
- 知識グラフ(KG): KGは、オブジェクトと関係の語彙が制限されている特定のドメイン内の質問回答に最適です。 しかしながら、大きく進化するコードベースをスケールアップすることに苦労しています。
より小さなコンテキストウィンドウは、開発者がコードベースを断片に分割し、限られた数の断片を同時に作業するように強制します。 コードが何千ものファイルを取り巻くパターンで生きたアーティファクトであるため、このアプローチはニュアンスを失う。 PyTorch のチームは、標準の要約ベースの技術を使用して PyTorch のドキュメントを生成し、その結果の文書が低品質であり、重要な依存関係を欠落させました。 対照的に、当社の全文メソッドは、はるかに明確でより正確な文書を作成しました。
全文方法
トークンの経済使用に焦点を合わせる代わりに、それを最大限にすることに焦点を合わせた場合はどうなりますか? コードベースを整理し、最も複雑な相互依存関係でもキャプチャを停止できます。 全文メソッドはまさにそのものです。 単一の統一されたコンテキストとして、すべてのファイル、コミット、コメントを含むリポジトリ全体を処理するために利用可能な最大のコンテキストウィンドウでLMを使用します。 それがどのように機能するかは次のとおりです。
- フル摂取: PyTorch(1.2M行)のような巨大なコードベースを1つで処理し、方法が欠けている相互依存性をキャプチャします。
- Commit-Awareの学習: 静的なコードではなく、意図と進化を理解するために、コミット履歴を微調整します。
- リビングドキュメントハブ: コードベースが進化し、デベロッパーやメンテナーを務めると同時に自動的に更新されるインタラクティブでクエリ可能なハブを作成します。
結論:ビターレッスンを具現化
アルファゼロは、学習、自己再生、検索の一般的な方法に基づいて、大規模な計算に基づいて世界クラスのチェスを教えました。 同様に, 全コンテキストメソッドは、手作りのヒューリスティックに依存しません, 損失の抽象化, または「アウトスマート」しようとするモジュラーパイプライン. 代わりに、ビターレッスンを取り入れています。真の理解は、エンコーディングの脆弱なドメイン知識ではなく、スケーラブルな学習システムを活用して、ハンドエンジニアにしようとしているパターンを発見することができます。
コードは、心のように、非常に複雑です。 Sutton が書いたように、現実世界は任意の構造で満たされています。クロスカットの懸念、レガシーハック、数千のモジュール間の動的相互作用。 人為的なモデルをシンプルにするためにはトラップです。 信頼できる方法は、現在の理解を含むシステムではなく、理解できるシステムを構築することです。
将来の投稿では、PyTorch、Kubernetes、レガシーエンタープライズシステムなどの大規模なコードベースでより詳細なベンチマークと例を共有します。 しかし、今でも、一つはクリアです。 次世代のデベロッパーツールは、より巧妙なハックから来ません。 全体を見るから来られます。
参考文献
- Sutton、R.S.(2019)。 ビターレッスン(不完全なアイデア)。
- シルバー, D., ら. (2017). 一般的な補強学習アルゴリズム(arXiv)でセルフプレイでチェスと将棋を習得する。
- Vinyals, O., ら. (2019). StarCraft IIでは、マルチエージェント強化学習(Nature)を用いたグランドマスターレベル。
- ジャンパー、J.、ら。 (2021)。 AlphaFold(Nature)による高精度なタンパク質構造予測。
- Assael, Y, ら. (2022). ディープニューラルネットワーク(Nature)を用いた古代のテキストの復元とアトリビュート