平均的なプログラマーと同等の能力があるAIコーディングが登場
Photo by James Harrison on Unsplash

平均的なプログラマーと同等の能力があるAIコーディングが登場

アルファベットの子会社であるDeepMindは「AlphaCode」と名付けられたAIシステムを開発し、それが「競争力のあるレベルでコンピュータープログラムを書くことができる」と発表した。

吉田拓史

アルファベットの子会社であるDeepMindは「AlphaCode」と名付けられたAIシステムを開発し、それが「競争力のあるレベルでコンピュータープログラムを書くことができる」と発表した。DeepMindは、人間のコンテストで使用されるコーディング課題に対してシステムをテストし、そのプログラムが人間のプログラマーの上位54%に入ったことを明らかにした。

査読前の論文によると、AlphaCodeのスキルは、一般的なプログラマーが直面するプログラミング課題を必ずしも解決するものではないが、この結果は自律的なコーディングにとって大きな前進であるという。

AlphaCodeは、コーディングアシスタントの作成や、将来的には自分でソフトウェアを作成することも可能だ。AlphaCodeは、Codeforcesが監修した課題でテストされた。Codeforcesは、世界中から何万人もの参加者が集まり、自分のコーディングスキルを試すために定期的にコンテストを開催している人気のプラットフォーム。評価対象としたのは、今回の学習データよりも新しい、最近の10のコンテスト。その結果、「AlphaCode」は中央値と同程度の成績を収め、AIコード生成システムがプログラミングコンテストで競争力のあるレベルに達した初めての例となった。

その結果、平均して上位54.3%の回答にランクインした。DeepMindの試算によると、このシステムのレーティングは1238で、過去6か月間に同サイトで競技を行ったユーザーのうち、上位28%にランクインしたことになる。

この結果を受けて、研究チームは競技用のプログラミング問題とその解答のデータセットをGitHubで公開している。このベンチマークが、問題解決やコード生成のさらなる革新につながることを期待している。。

AlphaCodeがテストされたでは、限られた入力セットを使って、ランダムに繰り返されるsとtの文字列を、同じ文字の別の文字列に変換する方法を見つけることが求められている。例えば、ただ単に新しい文字を入力するのではなく、元の文字列の中のいくつかの文字を削除する「バックスペース」コマンドを使用しなければならない。

問題はCodeforcesのもので、解答はAlphaCodeが生成したもの。出典:DeepMind.
問題はCodeforcesのもので、解答はAlphaCodeが生成したもの。出典:DeepMind.

このモデルは、GitHubで公開されているコードを使って事前に学習し、比較的小規模な競争力のあるプログラミングデータセットを使って微調整を行います。プログラミングの評価時には、問題ごとに大量のC

DeepMindの主席研究員であるOriol Vinyalsは、The Vergeに対し「この研究はまだ初期段階にあるが、今回の結果によって、柔軟な問題解決型AI、つまり現在は人間だけの領域となっているコーディングの課題に自律的に取り組むことができるプログラムの作成に近づいたと言える。「長期的には、プログラマーや非プログラマーがコードを書く手助けをしたり、生産性を向上させたり、ソフトウェアを作る新しい方法を生み出したりする可能性に期待している」とビニャルズは述べている。

Codeforces社の創設者であるMike Mirzayanov氏は、DeepMind社が発表した声明の中で、「AlphaCodeの結果は、私の期待を上回るものであったと断言できる。なぜなら、単純な競争問題であっても、アルゴリズムを実装するだけでなく、それを発明することも必要になることが多いからだ。しかし、AlphaCodeは、有望な新しい競争相手と同等の性能を発揮することができた」と述べている。

他にも多くの企業が同様のアプリケーションに取り組んでいる。例えば、Microsoft社とAIラボOpenAI社は、OpenAI社の言語生成プログラムGPT-3を、文字列を仕上げるオートコンプリートプログラムとして機能させた(GPT-3と同様に、AlphaCodeもトランスフォーマーと呼ばれるAIアーキテクチャをベースとしており、自然言語やコードなどの連続したテキストを解析することに長けている)。エンドユーザーにとっては、Gmailの「Smart Compose」機能のように、書きかけの文章を完成させるための方法を提案してくれるシステムだ。

AIシステムは、バグの多い脆弱なコードを生成すると批判されてきた。近年、AIコーディングシステムの開発は大きく進展しているが、これらのシステムは人間のプログラマーの仕事をそのまま引き継ぐにはほど遠いものだ。AIが生成するコードにはバグが多く、また、システムは通常、公開されているコードのライブラリで学習されるため、著作権で保護されている素材を複製してしまうこともある。

コードリポジトリ「GitHub」が開発した「Copilot」というAIプログラミングツールを調査したところ、出力されたコードの約40%にセキュリティ上の脆弱性が含まれていたという。セキュリティアナリストの間では、悪者が意図的にバックドアを隠したコードを書いてオンラインで共有し、そのコードをAIプログラムの学習に利用して、将来のプログラムにそのエラーを挿入するのではないかという指摘もある。

このような課題があるため、AIのコーディングシステムは、プログラマーの仕事に少しずつ組み込まれていくことになる。まずはアシスタントとして、提案を疑ってかかるようにしてから、単独で仕事を任せられるようにしていくのだ。言い換えれば、彼らには見習い期間があるということだ。しかし、今のところ、これらのプログラムの学習速度は速い。

ML