AIが一般的な言葉でコードを自動生成できるようになる日が来る
近年、人工知能を使ってプログラミング言語間の翻訳を改善したり、問題を自動的に解決したりする研究が進んでいます。例えば、AIシステム「DrRepair」は、エラーメッセージが表示される問題のほとんどを解決できることがわかっています。しかし一部の研究者は、AIが専門家ではない人の簡単な説明に基づいてプログラムを書くことができる日を夢見ています。
先日、マイクロソフトとOpenAIは、テキストを生成する世界最先端のモデルの一つであるGPT-3を、自然言語の記述に基づくプログラミングに導入する計画を共有しました。これは、マイクロソフトが昨年OpenAIに10億ドルを投資し、GPT-3の独占ライセンス権を獲得して以来、実施されたGPT-3の最初の商用アプリケーションです。
マイクロソフトのCEOであるサティア・ナデラ氏は、開発者向けカンファレンス「Build」の基調講演で、「やりたいことを自然言語で記述すれば、GPT-3が最も関連性の高い数式のリストを生成し、その中から選択することができます。あとはコードが自動で作成されます。」と語りました。
また、マイクロソフト副社長のチャールズ・ラマンナ氏はWIREDに対し、GPT-3が提供する洗練された機能は、人々が複雑な課題に取り組むのを助け、コーディングの経験が少ない人々に力を与えることができると語りました。GPT-3は入力された自然言語を、Excelのマクロに似たかなりシンプルなプログラミング言語で「Microsoft Power Fx」へと翻訳をし、Power Fxはマイクロソフトが3月に導入したシンプルな数式言語です。
これは、AIをコーディングに応用した最新のデモンストレーションです。昨年のMicrosoftのBuildでは、OpenAIのCEOであるサム・アルトマンが、GitHubのコードで微調整された言語モデルをデモし、Pythonコードの行を自動的に生成しました。WIREDが先月詳述したように、SourceAIのようなスタートアップもGPT-3を使ってコードを生成しています。IBMは先月、50以上のプログラミング言語から1,400万のコードサンプルを集めた「Project CodeNet」により、自動車会社の数百万行のJavaコードを含むプログラムの更新に必要な時間を、1年から1カ月に短縮できることを示しました。
マイクロソフトの新機能は、Baidu、Google、Microsoft、Nvidia、Salesforceなどの大手テクノロジー企業で採用されているTransformerと呼ばれるニューラルネットワークアーキテクチャをベースにしており、ウェブからスクレイピングしたテキストトレーニングデータを使って大規模な言語モデルを作成します。これらの言語モデルは、継続的に大きくなっています。2018年に公開されたGoogleの言語モデル「BERT」の最大バージョンは、ニューラルネットワークの構成要素であるパラメータが3億4,000万個でした。1年前に公開されたGPT-3のパラメータは1,750億個でした。
しかし、このような取り組みは、まだまだ先の話です。最近行われたあるテストでは、AI研究者グループがまとめたプログラミング入門の課題で、最高のモデルが成功したのはわずか14%でした。
それでも、その研究を行った研究者たちは、テストが “機械学習モデルがコードの書き方を学び始めている “ことを証明していると結論づけています。
機械学習コミュニティに挑戦し、大規模な言語モデルがどの程度プログラミングに長けているかを測定するため、先週、AI研究者グループはPythonによる自動コーディングのベンチマークを紹介しました。そのテストでは、OpenAIの主力モデルと同様のアーキテクチャで設計されたオープンソースの言語モデルであるGPT-Neoが、GPT-3を上回りました。論文の主執筆者であるDan Hendrycksは、GPT-Neoが、共同でコーディングプロジェクトを行うための人気プログラミングリポジトリであるGitHubから収集したデータを用いて微調整されていることが要因であると述べています。
研究者やプログラマーが、言語モデルによるコーディングの簡素化について理解を深めれば、大きな進歩のチャンスが生まれると、ヘンドリクスは考えています。
Hendrycksは、Transformerアーキテクチャに基づく大規模な言語モデルの応用が、プログラマーの仕事を変え始めるかもしれないと考えています。最初は、特定のタスクに集中して適用され、その後、より一般的なコーディングに広がっていくだろうと彼は言います。例えば、プログラマーがある問題のテストケースを大量に集めた場合、言語モデルは様々な解決策を提案するコードを生成し、人間が最適な行動を決定することができます。そうすることで、「何かが通るまでスパムメールを送り続けるのではなく、人がコードを書く方法が変わります」と彼は言います。
ヘンドリクスは、次のコードを提案してくれるAIによって、人間のプログラマーの生産性が向上し、プログラマーの需要が減ったり、より小さなチームで目標を達成できるようになる可能性があると考えています。
OpenAIは現在、GPT-3のプライベートベータ版へのアクセスを提供しています。GPT-3は、SATのアナロジーを正しく完成させることから、質問に答えること、テキストを生成することまで、さまざまなタスクを達成する能力を実証しています。また、子供との性的行為を含むテキストを生成したり、黒人や女性、イスラム教徒に関する攻撃的なテキストを生成したりしています。OpenAIは、このような有害性に対処するためのフィルタリング方法をほとんど公開していません。もしOpenAIが、GPT-3によって生成された攻撃的で有害なコメントを排除する方法を見つけられなければ、その使用は制限される可能性があります。
Microsoft、OpenAI、GitHubがコーディングのためのAIにどのように応用されていくのかは、いまだに正確には分かっていません。MicrosoftがGitHubを買収した直後の2018年、同社はAIを含む一連の応用研究の取り組みの第一弾として、言語モデルを使ってセマンティックコード検索を実現する取り組みを詳述しました。このような機能があれば、プログラマーが自然言語を使ってコードを検索したり利用したりすることが容易になるかもしれない。なお、GitHubの広報担当者は、このプロジェクトの状況についてのコメントを控えています。