開発者にとって悪いニュース?このAIはコードを書くのが非常に上手になっています。
DeepMindは、その研究が最終的にプログラマーがより効率的にコーディングするのを助け、コーディングをしない人々にもこの分野を開放する可能性があると述べています。
どのプログラミング言語を学ぶかを決めることは、開発者にとって大きな問題です。なぜなら、それには膨大な時間の投資が必要だからです。しかし、将来的に人工知能(AI)モデルが問題の説明を理解し、解決策をコーディングすることで重労働をすべて行うようになれば、その質問は無意味になるかもしれません。
GoogleのAI専門部門DeepMindの研究者たちは、AlphaCodeシステムが新しいプログラマーによって行われるプログラミングコンペティションで中央値レベルのスコアを達成するコードで問題の解決策を表現できると主張しています。これらのコンペティションでは、人間が自然言語で説明された問題を理解し、その後効率的にアルゴリズムをコーディングする必要があります。
新しい査読されていない論文で、DeepMindの研究者たちは、AlphaCodeが5,000人以上の参加者がいる10の過去のプログラミングコンペティションで、参加者の上位54.3%の平均ランキングを達成した方法を詳述しています。コンペティションはCodeforcesのコードコンペティションプラットフォームで開催されました。
参照: 雇用主はデータサイエンティストを切望しており、需要が急増しています
DeepMindは、AlphaCodeが人間の開発者のためのコードコンペティションで競争レベルで動作する最初のAIコード生成システムであると主張しています。この研究はプログラマーの生産性を向上させ、プログラミングを知らない人々がコードを書くことなく解決策を表現するのに役立つかもしれません。
人間の参加者と、それゆえにAlphaCodeは、課題やパズルの説明を解析し、それを解決するプログラムを迅速に作成する必要がありました。これは、GitHubデータを使用して単純なコーディングチャレンジを解決するモデルを訓練するよりも難しいです。
人間と同様に、AlphaCodeは問題の多段落の自然言語による説明、背景の物語の詳細、および入力と出力の観点から望ましい解決策の説明を理解する必要がありました。
問題を解決するために、競技者はアルゴリズムを作成し、その後効率的に実装する必要があり、制約を克服するために、例えばPythonよりもC++のようなより速いプログラミング言語を選択する必要があるかもしれません。
AlphaCodeの事前トレーニングデータセットには、C++、C、Go、Java、JavaScript/TypeScript、Lua、Python、PHP、Ruby、Rust、Scalaで書かれたGitHubリポジトリから取得した715GBのコードが含まれていました。チームは、Codeforcesや類似のデータセットから収集した競技プログラミング問題のデータセットを使用してモデルを微調整しました。
DeepMindがAlphaCodeに与えたブーストは、大規模なトランスフォーマーモデルを組み合わせることで達成されました。これには、OpenAIのGPT-3やGoogleのBERT言語モデルなどが含まれます。DeepMindはトランスフォーマーベースの言語モデルを使用してコードを生成し、その出力を評価のために提出された「有望なプログラム」の小さなセットにフィルタリングしました。
「評価の時期には、私たちは各問題に対して膨大な量のC++とPythonプログラムを作成します。これは以前の作業の桁違いに大きなものです」とDeepMindのAlphaCodeチームはブログ投稿で説明しています。
「次に、私たちはそれらの解決策をフィルタリング、クラスタリング、再ランキングして、外部評価に提出する10の候補プログラムの小さなセットにします。この自動化システムは、競合他社のデバッグ、コンパイル、テスト合格、最終的な提出の試行錯誤プロセスを置き換えます。」
DeepMindは、AlphaCodeが与えられた問題に対する解決策をどのようにコーディングするかをここで示しています。
DeepMindは、達成しようとしていることに対するいくつかの潜在的な欠点を考慮しています。例えば、モデルは「古いコードからの意図しない脆弱性や、悪意のある行為者によってトレーニングセットに注入された意図的な脆弱性」を含む、悪用可能な弱点を持つコードを生成することがあります。
参照: ウェブ開発者またはCTO、どの技術職の給与が最も急成長しているか?
また、環境コストもあります。モデルのトレーニングには、Googleのデータセンターで「数百ペタFLOPS日」が必要でした。しかし、AIコード生成は長期的には「自己を再帰的に書き換え、改善できるシステムにつながる可能性があり、急速により高度なシステムへと進化するでしょう。」
自動化が開発者の需要を減少させるリスクがありますが、DeepMindは、今日のコード補完ツールの限界を指摘しています。これらのツールはプログラミングの生産性を大幅に向上させますが、最近まで単一行の提案に限られ、特定の言語や短いコードスニペットに制限されていました。
しかし、DeepMindはその作業が人間のプログラマーに対する脅威にはほど遠いと強調していますが、そのシステムは人類を助けるために問題解決能力を発展させる必要があるとしています。
「コード生成の探求は改善の余地が広く、プログラマーの生産性を向上させ、現在コードを書かない人々にもこの分野を開く手助けとなるさらにエキサイティングなアイデアを示唆しています」とDeepMindの研究者たちは述べています。