米ライス大学のコンピュータ科学者が、ディープラーニングを利用したコーディング支援システム「Bayou」を開発した。Webサイト「askbayou.com」でJavaコード用のBayouを試用できる。
Bayouは、米国国防高等研究計画局(DARPA)から資金援助を受けたプロジェクトで開発された。このプロジェクトは、GitHubのようなオンラインソースコードリポジトリから知識を抽出することを目的としている。
Bayouは、プログラマーがAPIを使いこなす際に役立つ。APIはソフトウェア開発でますます大きな役割を果たすようになっているものの、しばしばドキュメントが整備されていないことがあるからだ。
プログラムを書き下すアプリケーションの開発は、人工知能(AI)分野における長年の目標の一つだ。
「人々は60年前から、コードを作成できるシステムを作ろうとしてきたが、問題は、コードの作成手法があいまいなことだった」と、ライス大学コンピュータ科学准教授で、Bayouの共同開発者の一人であるスワラト・チャウドゥーリー氏は語る。
「通常、今から作りたいプログラムが何を行うかについての大量の詳細情報をシステムに与える必要がある。そうした詳細情報を記述する仕事は、人が自らコードを書き下す作業と負荷があまり変わらない」(チャウドゥーリー氏)
「だが、Bayouは大幅に改良されている。非常に少量の情報(幾つかのキーワードや指示)を与えるだけで、Bayouはプログラマーの意図を読み取り、プログラマーが求めているプログラムを予想する」と、チャウドゥーリー氏は説明する。
チャウドゥーリー氏によると、Bayouは、人間が書いた数百万行のJavaコードを学習して自身をトレーニングした。「基本的に、BayouはGitHub上のあらゆるものを学習した。自力でコードを作成する際にその知識を利用している」
Bayouの共同開発者の一人で、ライス大学コンピュータ科学教授のクリス・ジャーメイン氏によれば、Bayouはソフトウェアで使うAPIのコードサンプルを合成する際に特に便利だという。同氏はチャウドゥーリー氏と共同で、ライス大学のインテリジェントソフトウェアシステムラボラトリーを運営している。
「今日のプログラミングは、30~40年前とは全く違う。プログラマーが一からコードを書いていた時代は大昔に終わっている」(ジャーメイン氏)
同ラボラトリーの研究者でBayouのアーキテクトであるビジェイ・ムラリ氏はこう語る。「モダンなソフトウェア開発ではAPIが肝心だ。コードが特定のハードウェアプラットフォームやOS、データベース、他のソフトウェアとやりとりすることを可能にするシステム固有のルールやツール、定義、プロトコルがある。数百のAPIがあり、開発者にとって、それらを使いこなすのは非常に難しい。そのため、開発者はstackoverflow.comのような質問サイトに行き、長い時間をかけて他の開発者に相談している」
ムラリ氏によると、開発者はそうした質問の一部をBayouに対して行うことができ、Bayouはすぐに答えを返すという。
「そうした素早いフィードバックですぐに問題が解決することもあるだろう。そうでなくても、Bayouのサンプルコードを使い、その後に人間の開発者へより具体的な質問をすることもできるだろう」(ムラリ氏)
ジャーメイン氏によると、開発チームの主な目標は、開発者にBayouの拡張を試みてもらうことだ。そのため自由度の高いオープンソースライセンス(Apacheライセンス2.0)でBayouを公開した。
「人々がBayouのようなシステムに何を求めているかという情報が多く得られれば得られるほど、われわれはBayouをより良いものにできる。できるだけ多くの人にBayouを使ってもらいたい」(ジャーメイン氏)
Bayouが行う学習には、ニューラルスケッチラーニングという手法が使われている。この手法により、数十万のJavaプログラムから抽象度の高いパターンを認識するように人工ニューラルネットワークをトレーニングできた。Bayouは、読み取った各プログラムの「スケッチ」を作成し、これをプログラムの「意図(インテント)」と関連付けることで、パターン認識を行っている。
ユーザーがBayouに質問をすると、どのようなプログラムを作成しようとしているのかをシステムが判断する。その後、システムは、ユーザーが作ろうとしているプログラムのスケッチを何種類か作成する。
「この推測に基づいて、Bayouの別の部分が4~5種類のコードチャンクを生成する。Javaの低レベルの細部を理解し、論理的な自動推論を行えるモジュールだ。BayouはWeb検索の結果を返すように結果をユーザーに表示する。最も有力な候補を最初に表示し、続いて幾つかの候補を表示する」
0 件のコメント:
コメントを投稿