AlphaCodeを使った競争力のあるコード生成というタイトルの新しい研究で、目標指向のコード合成に関して有望な結果が示されており、ディープsequence-to-sequenceモデルが使われている。それは以前のネットワーク(Codex、GPT-Neoなど)を拡張しており、CodeContestsという名前の新しいデータセットをリリースしている。これは、将来の研究ベンチマークに貢献するためである。
ディープトランスフォーマーベースのシーケンス処理は、言語タスクから分子生物学研究まで多くのアプリケーションで産業界と学界に確固たる基盤を確立している。転送学習能力が高いため、事前トレーニングレシピによって、検索エンジン、翻訳サービス、チャットボットが強化される。AlphaCodeは、競技プログラミングへの適用のための概念実証を提供することを目的としている。この取り組みは、タスクベースのプログラム生成のためにシーケンスモデルを活用する研究活動が増加している中の一部である(例:数値データサイエンス問題ソルバーJuPyT5)。
AlphaCodeには、マルチクエリアテンションモジュールを備えたさまざまな深さ(つまり、3億から410億のパラメータ)で、いくつかのトランスフォーマーアーキテクチャが含まれている。このアーキテクチャは、エンコーダとデコーダにそれぞれ1536と768の入力トークンを持つ非対称のエンコーダとデコーダのペアで構成されている。ネットワークは選択されたGithubオープンソースコードリポジトリ(715 GB)で事前トレーニングされている。その際、デコーダーでのクロスエントロピー損失とエンコーダー側でのマスクされた言語モデリング損失が使用されている。トレーニング中に使用されるトークンは、SentencePieceトークナイザーによって生成される。最終的な微調整は、提案されたCodeContestsデータセットを使って実行される。モデルのパフォーマンスを実際のプログラマーのパフォーマンスと比較するために、いくつかのCodeforcesチャレンジを使用する。結果は、AlphaCodeが異なる10のコンテストで、平均ランキングが上位54.3%に到達できたことを示している。
トランスフォーマーでモデル化できる言語理解に加えて、競技プログラミングは、入出力解析や計算効率などの選択された課題の制限により、さらに複雑になる。一般的なライブラリ/フレームワークリポジトリとは異なり、競技プログラミングコードリポジトリは比較的少なく、微調整ステップで利用可能なデータソースが制限される。予測を改善するために、AlphaCodeの出力がサンプリング、フィルタリング、クラスター化されて、タスクごとに可能な限り最良の候補が選別される。
この研究は、ディープネットワークを使ったプログラム合成に関して、初の有望なものとなるが、それでも実際の使用にはほど遠いため、より大きなデータセットが必要になる。
AlphaCodeで生成されたものの例は、公式Webサイトで閲覧できる。関連するDeepMindのブログ投稿も興味があればご覧ください。