ここから本文です
ノートパソコン改造する
投稿一覧に戻る

ノートパソコン改造するの掲示板

プログラミングの自動化がついに実現する? AIが生成するコードの課題と可能性

コンピューターのコードをまともに書けるようになるには、数年を要することもある。だが、パリを拠点とするスタートアップのSourceAIは、プログラミング技術をそれほど難しく考える必要はないと考えている。

超高精度な文章生成ツール「GPT-3」は、“人間にしかできないこと”の定義を根本から揺るがした

SourceAIは、人工知能(AI)を使ったコード生成ツールの改良に取り組む企業だ。コードを書く際にAIが参照するものは、そのコードが処理すべき作業を短く記したテキストである。例えば、「ユーザーが指定するふたつの数字を掛け算せよ」と命じられると、そのツールはプログラミング言語「Python」で10行余りのコードを即座に生成してコマンドを実行するという。

SourceAIのこうした野心的な試みからは、ソフトウェア開発における大変革の兆しがうかがえる。機械学習の進歩に伴い、コードのオートコンプリートやアルゴリズムの微調整から、ソースコードの検索やしつこく発生するバグの拾い出しまで、際限なく増え続けるコーディング関連の作業が自動化されたのだ。

コーディング作業の自動化は、ソフトウェア開発に変化をもたらした。しかし、最新のAI技術が抱える制約と弱点は、新たな問題を引き寄せるかもしれない。機械学習のアルゴリズムは予測不能な動きを見せることがあり、コンピューターがつくったコードには有害なバグが隠れているかもしれない。このため慎重なチェックが欠かせないのだ。

言語生成アルゴリズムの新たな可能性
SourceAIをはじめ、同様のプログラムを開発する企業が目指すのは「GPT-3」の有効活用である。GPT-3は、AIの根本的発展に的を絞って事業を展開するサンフランシスコのOpenAIが、2020年5月に発表した高性能な言語生成アルゴリズムだ。

GPT-3の発表当初にプログラムへのアクセス権を手に入れた人は数百人ほどだったが、SourceAIの創業者たちはそのなかに含まれていた。OpenAIはGPT-3のコードを一般公開していないが、API(アプリケーション・プログラミング・インターフェース)を通じて一部のユーザーにアクセス権を付与している。

GPT-3は、インターネット上で収集された大量のテキストを読み込むことでトレーニングを積んだ、巨大な人工ニューラルネットワークである。テキストの意味を理解することはできないが、言語のパターンを巧みに捉え、与えられたテーマに沿って論文を作成したり、文章を簡潔にまとめたり、文書の内容に関する質問に答えたりできる。

「GPT-3の性能を試していたとき、これを使ってコードが書けるはずだと気づいたのです」と、SourceAIの創業者で最高経営責任者(CEO)のファーカン・ベクテスは語る。「SourceAIの開発を思いついたのは、そのときでした」

彼のほかにも、その可能性に気づいた人はいた。GPT-3がリリースされて間もなく、あるプログラマーがこの言語プログラムを使って短いコードを組み合わせ、ボタンやテキスト入力フィールド、色などをカスタマイズできるウェブアプリを作成していたのだ。SourceAIとは別のDebuildという企業が、この技術の製品化を計画している。

マイクロソフトも関心
SourceAIが目指すのは、ユーザーにさまざまな言語で多様なプログラムを作成してもらい、それによってソフトウェア開発の自動化をさらに促進することだ。「プロのソフトウェア開発者はコーディングにかける時間を節約できますし、コーディングの知識がない人も自分でアプリをつくれるようになるはずです」と、ベクテスは言う。

また、別の企業であるTabNineは、OpenAIが旧ヴァージョンの言語モデルとして一般公開している「GPT-2」を使い、開発者が入力を開始すると行や関数をオートコンプリートしてくれるツールを完成させた。

一部の大手ソフトウェア企業も関心を示している。マイクロソフトは19年に10億ドル(約1,090億円)をOpenAIに出資し、GPT-3の使用許諾契約を結んでいる。

マイクロソフトが開催した開発者向けイヴェント「Microsoft Build 2020」では、OpenAIの共同創業者のサム・アルトマンによるデモンストレーションがあり、GPT-3がオートコンプリート機能を駆使してコーディングする様子が披露された。自社のソフトウェア開発ツールにAI技術をどう活用するのかという質問に対し、マイクロソフトはコメントを避けている。

ニューヨーク大学コンピューターサイエンス・エンジニアリング学科の助教授のブレンダン・ドーラン=ギャヴィットは、GPT-3のような言語モデルはほとんどの場合プログラマーたちを補佐する目的で使われることになるだろうと語っている。製品への応用例としては、ほかに「言語モデルが『異質』とみなすものを探すことによって、コードに紛れ込んでいるバグとおぼしきものを見つけ出す」といった使い方が考えられるという。

アルゴリズム任せで生じる課題
だが、AIを使ってコードの生成や解析をした結果、かえって不具合が生じる可能性もある。

マサチューセッツ工科大学(MIT)の研究チームが21年3月にインターネット上で発表した論文によると、コードの安全性を確認するよう訓練されたAIプログラムも判断を誤ることがあるという。例えば特定の変数を置き換えるなど、巧妙な変更をいくつか加えることによってAIプログラムを欺き、有害なプログラムをつくらせることができてしまうというのだ。

この研究に携わった博士課程の学生であるシャシャンク・スリカントは、AIモデルを過度に信頼してはならないと言う。「こうしたモデルが量産されるようになれば、あっという間に大混乱に陥る可能性があります」と、彼は言う。

ニューヨーク大学助教授のドーラン=ギャヴィットは、コーディング用ツールを作成するために言語モデルを利用するやり方自体にも問題があると指摘する。「言語モデルをそのまま使おうとすると、おそらくバグだらけのとても安全とは言えないコードができ上がるはずです」と、彼は言う。「そもそも言語モデルは人間が書いたコードを使って学習しており、そこにはバグや不安定な部分がたくさんあるのですから」

ドーラン=ギャヴィットがつくった「This Code Does Not Exist(このコードは存在しません)」と題するウェブサイトがある。サイトを訪れた人にコードを提示し、それが人間によって書かれたものか、それともGPT-2の特別版を使ってつくられたものかを当ててもらうサイトだ。彼は現在、セキュリティソフトをテストする目的で、故意にバグを含むコードを作成するAIの開発に取り組んでいる。

AIが拓く新たな可能性
コンピューター科学者たちは、コードを自動生成する方法について数十年前から研究を続けている。だが、AIの登場によってその可能性に新たな関心が集まっているのだ。

フェイスブックの研究チームは、機械学習を用いて同じ機能をもつコード群を識別するツール「Aroma」の詳細を19年4月に明らかにしている。バグを発生させず、より速くコードを書けるよう開発者を支援するツールである。

20年10月には英企業のDeepMindが、人間がつくったアルゴリズムをより効率的なものに改良できるというAIプログラムを発表した。またインテルは、「Machine Inferred Code Similarity(MISIM:機械推論コード類似性)」と名づけたプロジェクトを立ち上げ、AIを使って一つひとつのコードの役割を見極める技術の開発に取り組んでいる。複雑なプログラムの作成を自動化することが狙いだ。機械学習は別の機械学習アルゴリズムを構築し、微調整する際に必要な作業の一部を自動化する手段としてもにわかに注目を浴びている。

SourceAIのツールが実際にどの程度うまく機能するかは未知数だ。技術デモの様子もまだ公開されていない。しかし同社の創業者であるベクテスによると、簡単なコマンドであれば80~90%の精度で動作するという。

ソフトウェア開発をいろいろな意味で変えることができるはずだと自信を示しながら、いたずらっぽく彼は言う。「学生たちはこれを使って宿題をさっさと終わらせようとするでしょうね」

WILL KNIGHT