Google傘下のAI研究部門DeepMindは、2022年2月に大規模言語モデル「AlphaCode」を発表した。AlphaCodeはアルゴリズムを解析し、複雑なプログラムを生成することで、コンピュータープログラマーを打ち負かす可能性があるのではとして話題を呼んでいた。
DeepMindの研究者たちは、今週新たに科学誌Science誌に発表した論文の中で、AlphaCodeがは、標準的なプログラミングコンテストにおいて、平均的な人間のコーダーの半数を打ち負かしていると述べている。
DeepMindの開発者は、人間の開発者にプログラミングの問題を与え、その結果で順位を決める競技プログラミングサイトでAlphaCodeをテストし、その可能性を検証した。
機械学習が飛躍的に進歩したとはいえ、複数のことを得意とするAIを作るのは難しい。つまり、あるクラスのプログラミング課題に対応するデータを使ってマシンを訓練しても、別の問題に取り組ませると失敗してしまうのだ。そこで研究チームは、アルゴリズムやコード構造に関する訓練をすべて省略し、プログラミングを翻訳問題のように扱うことにした。
プログラミング課題には通常、課題の説明が含まれており、人間の参加者が提出した結果のコードは、技術的にはその説明を表現したものに過ぎない。
AlphaCodeは、414億個のパラメータからなるトランスフォーマーベースの言語モデルである。これは、120億のパラメータのみを解析するGitHub Copilotの言語モデルCodexの4倍のサイズである。
プログラミング課題には通常、課題の説明が含まれており、人間の参加者が提出した結果のコードは、技術的にはその説明を表現したものに過ぎない。そこで、AlphaCodeのアーキテクチャでは、以下の3つのフェーズで課題を処理することにしている。
- データ:AlphaCodeには、GitHubの公開リポジトリからデータが供給される。
- 学習:ツールはデータセットで学習し、タスクの要件に合わせてキャリブレーションを行う(例:Codeforcesの競合プログラミング)。
- サンプリングと評価:学習の後、AIツールは、各問題に対するプログラムのバリエーションを大規模にサンプリングする。そして、フィルタリングとクラスタリングのプロセスを通じて、プログラムを10個の小さなサブセットにランク付けし、外部評価のために提出する。
AlphaCodeのAIシステムは、C++、C#、Go、Java、JavaScript、Lua、PHP、TypeScript、Ruby、Scala、Rust、Pythonなど様々なプログラミング言語で事前にトレーニングされている。このデータセットは、約715GBのコードとそのコードを説明するコメントで構成されている。Ars Technicaが指摘するように、それは膨大な量のテキストデータだ。プログラミングのエッセンスを内包したDeepMindは、独自のプログラミングコンテストを立ち上げ、その結果をAIに送り込んでモデルの性能を微調整した。これは過去のコーディングマシンが得たものとは桁違いの学習データであり、それがすべての違いを生んだと研究チームは述べている。
研究者は、AlphaCodeがコーディング問題に対する膨大な数の解答候補を生成できることを発見したが、そのうちの約40パーセントは利用可能なシステムメモリをすべて使い果たしてしまうか、妥当な時間内に解答に到達できないことがわかった。実際に良いコードとなる1パーセントの解答を見つけるためには、データをフィルタリングする必要がある。DeepMindは、類似したコードのクラスタがより良い答えを示すのに対し、間違ったコードはランダムに分布していることを発見した。これらの答えに焦点を当てることで、AlphaCodeはコーディング課題の約3分の1に正しく答えることができた。だが、多くの人間のプログラマーはもっと優秀で、結果としてAlphaCodeは上位54パーセントに入るに留まった。
AlphaCodeの出現によって、エンジニアがすぐさま仕事を失うようなことはないだろうが、今後の進化によってはそのようなことも十分起こるだろう。
また、プログラミングそのものを考えるという観点からも、今回の実験は魅力的だ。AlphaCodeは、何がアルゴリズムを構成しているのか、一般的な例は何一つ与えられておらず、課題の内部表現にアルゴリズムと認識できるものが含まれているかどうかも分かっていない。しかし、言語翻訳に使われるのと同じようなAI構造によって、機能的なコードを生成することができた。人間の脳がどのようにコンピュータープログラミングに取り組んでいるのかを考えるきっかけを与えるかも知れない。
研究の要旨
プログラミングは強力かつ普遍的な問題解決ツールである.プログラマーを支援し、あるいは自らプログラムを生成できるシステムは、プログラミングをより生産的で身近なものにすることができるだろう。最近のジェネレータベースのニューラルネットワークモデルは、素晴らしいコード生成能力を示す一方で、競争的なプログラミング問題のような問題解決能力を必要とする複雑なタスクでは、まだ十分な性能を発揮していない。ここでは、Codeforcesプラットフォーム上で最近行われたプログラミング競技の模擬評価で、上位54.3%の平均順位を獲得したコード生成システム「AlphaCode」を紹介する。AlphaCodeは、特別に学習させたジェネレータベースのネットワークを用いて数百万の多様なプログラムを生成し、それらのプログラムを最大10件までフィルタリング、クラスタリングすることで問題を解決している。今回の結果は、人工知能システムがプログラミングコンテストで競争力を発揮した初めての例となる。
コメントを残す