ソフトウェア

自動プログラミングAIの「AlphaCode」をDeepMindが発表、競技プログラミングレベルのコード生成が可能


DeepMindが競技プログラミングレベルのプログラミングが可能な人工知能(AI)の「AlphaCode」を発表しました。AlphaCodeのほかにも自動でプログラミングが可能なAIは存在しますが、AlphaCodeは414億ものパラメーターを保持した特に精度の高いAIに仕上がっているとのことです。

Competitive programming with AlphaCode | DeepMind
https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode

Competition-Level Code Generation with AlphaCode
(PDF)https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

DeepMind claims its new code-generating system is competitive with human programmers | VentureBeat
https://venturebeat.com/2022/02/02/deepmind-claims-its-new-code-generating-system-is-competitive-with-human-programmers/

AI研究機関のOpenAIは、2021年8月に自然言語をコードに変換することが可能なAIシステム「Codex」を発表しました。Codexはソースコードの続きを自動で補完する「GitHub Copilot」の強化版といった位置づけで、自然言語で入力した単純なコマンドからコードを生成できるため、素人でも簡単にコーディングが可能になるとのこと。

OpenAIが入力した自然言語から自動でコードを出力するAIシステム「Codex」をリリース - GIGAZINE


DeepMindが発表したAlphaCodeは、このCodexを改善して競技プログラミングレベルのプログラミングが可能になるまで精度を向上させたAIであるとのこと。競技プログラミングコンテストのCodeforcesが開発したプログラミングテストにおいて、AlphaCodeは5000人以上の参加者がいる10のテストで上位54.3%以内に入っています。なお、これは過去6カ月でCodeforcesのプログラミングテストに参加したユーザーの上位28%以内に入る成績であるとのこと。

DeepMindの主任研究員であるOriol Vinyals氏は、コンピューターシステムが競技プログラミングレベルのプログラミングを達成したのはAlphaCodeが初めてであるとして、「AlphaCodeは自然言語を読み取り、コンパイルするだけでなく、正しいコードを生成することができます」「AlphaCodeは最高レベルのパフォーマンスを達成し、AIシステムの問題解決能力を向上させるために、まだやるべきことがあることを示しています。このベンチマークが、問題解決とコード生成のさらなる革新につながることを期待しています」と語りました。

ケンブリッジ大学の調査によると、開発者の労力の少なくとも半分はデバッグに費やされており、ソフトウェア業界では年間推定3120億ドル(約35兆7000億円)もの費用がかかっているとのこと。AlphaCodeのようなAIを利用したプログラミングサポートツールが誕生すれば、コーダーが創造的で反復性の少ないタスクに集中できるようになり、開発コストの削減も可能になります。


AlphaCodeの最大バージョンには414億ものパラメーターが含まれることとなり、これはCodexの約4倍のサイズです。AlphaCodeはC++、C#、Go、Java、JavaScript、Lua、PHP、 Python、Ruby、Rust、Scala、TypeScriptといったプログラミング言語に対応。トレーニングデータセットは715.1GBとなっており、600GB以上のCodexとほぼ同等のサイズです。機械学習において、パラメーターは過去のトレーニングデータから学習されたモデルの一部であるため、「パラメーター数と洗練度の間の相関関係は非常によく保たれる」とVentureBeatは指摘しています。

AlphaCodeはアーキテクチャ的にはTransformerベースの言語モデルとなっており、Salesforceの「CodeT5」と非常によく似ています。

Transformerアーキテクチャーはエンコーダーとデコーダーの2つのコアコンポーネントで構成されており、エンコーダーにはテキストや画像などの入力データをレイヤーごとに繰り返し処理するためのレイヤーが含まれています。各レイヤーは入力のどの部分が互いに関連しているかに関する情報を使用してエンコードを生成し、これらのエンコーディングを次のレイヤーに渡していき、最終的なエンコーダーレイヤーに到達することとなります。

また、Transformerは通常、教師なし事前学習を行った後に教師あり学習や半教師あり学習を受けることで学習内容を微調整します。この微調整プロセスにより、Transformerは質問への回答や感情の分析、ドキュメントの言い換えといった特定のタスクを実行可能になるとのこと。


なお、AlphaCodeはまだまだ多くの問題を抱えており、特にC++でのプログラミング時には構文的に正しいコードを出力できないケースもあります。DeepMindによると、複雑な数学的問題を解決するための動的計画法に関するコードなどを生成する際に、AlphaCodeはパフォーマンスを低下させるとのことです。

この記事のタイトルとURLをコピーする

・関連記事
OpenAIが入力した自然言語から自動でコードを出力するAIシステム「Codex」をリリース - GIGAZINE

プログラマーの書いたソースコードの続きを自動で記述する「GitHub Copilot」はエンジニアを駆逐してしまうのか? - GIGAZINE

GitHubにソースコードの「続き」を自動で補完する機能「GitHub Copilot」が登場、OpenAIの協力により - GIGAZINE

GitHubのソースコードで学習したプログラミングAI「Copilot」は著作権侵害なのか? - GIGAZINE

in ソフトウェア, Posted by logu_ii

You can read the machine translated English article here.