GPT-3の登場で見えてきた「AIによるコード生成」の可能性:AIによるソフトウェア開発【前編】
OpenAIの「GPT-3」は自然言語処理分野に大きな驚きをもたらした。GPT-3が持つ文章生成能力は、プログラムのコーディングにも応用できるのではないか。そう考えた人々による取り組みも始まっている。
プログラミングをデータ中心に変えるAI
ソフトウェアを支える基本モデルはデータの重要性を反映する方向へとシフトしている。アプリケーションアーキテクチャでは、このようなデータ駆動型モデルの頂点を表すのがAIだ。AIはサンプルデータを使ってモデルをトレーニングすることで「プログラミング」される。その後、実社会のデータを使ってモデル自体の決定を下すことができる。トレーニングデータが適切であるほど、トレーニングデータに含まれていないデータセットが提示されても正しい決定を下す可能性が高くなる。
関連記事
- COVID-19で変革を強いられるAIシステムのアーキテクチャ
- 「AIは物理学を理解するのではない。パターンを理解する」が持つ重大な意味
- 地盤沈下する日本の道路を守る切り札はAI
- Uberらの仕事割り当てアルゴリズムは公平・適切か
- AIの拡大で増大するカスタムハードウェア需要
ソフトウェア開発におけるAIの役割に目を向けると、Webで多くの話題を集めていたのがOpenAIの「GPT-3」だった。
GPT-3は自然言語処理の新しいAIだ。GPT-3のデザイナーによると、GPT-3は「テキストを入力して、結果をテキストで出力する」汎用(はんよう)のインタフェースを提供するため、どんな仕事でも英語を使って行うことができるという。2020年6月、OpenAIはGPT-3用のAPIをリリースした。OpenAIはそのアルゴリズムを説明するブログ投稿に次のように記載している。「任意のテキストプロンプトが与えられると、APIは利用者が指定したパターンに一致させようと試み、テキストを補完して返す。利用者は行いたいことの例をほんの少し提示することで『プログラミング』を行うことができる。成功するかどうかは、タスクの複雑さによって異なるのが一般的だ。このAPIにより、利用者が提示した例のデータセット(小規模または大規模)でトレーニングを行うか、ユーザーやラベル付けツールが提示する人間のフィードバックから学習を行うことで、特定のタスクのパフォーマンスを利用者が向上させられるようになる」
実際には、GPT-3のプログラミングでは幾つか例を示す必要がある。その後はあらゆることをGPT-3が判断する。
Twilioでソフトウェア開発者を務めるミゲル・グリンバーグ氏は最近、GPT-3の使用方法を示す例をアップロードした。この例では、GPT-3とPythonの「Flask」フレームワーク(訳注)を使ってTwilioのチャットbotを構築している。このアプリケーションの興味深い点は、同氏が記述するステップによって実在する中で最も強力なAIエンジンの一つが呼び出され、ランダムな質問に人間のように答えることだ。同氏が記述するステップに必要なのは幾つかのかなり基本的なPythonコードだけだ。
訳注:原文は「Flack」だが、Flaskの誤りと判断した。FlaskはPython用のWebアプリケーションフレームワーク。
GPT-3を使ってプログラムを作成しているWebのコメンテーターもいる。CrowdboticsもGPT-3はソフトウェア開発にとって革新的なものと見ている企業だ。同社は最新のブログ投稿に次のように記載している。「高品質の自然言語処理の登場は、人間が使う多くの技術ツールに変革的な影響を与えると考えている。ユーザーインタフェースを備える製品をリリースしているあらゆるテクノロジー企業は、GPT-3が自社のビジネスにどのような影響を与えるかを考えるか、言語をよりインテリジェンスに利用するツールに置き換える戦略を考え出す必要があるだろう」
PayPalでCTO(最高技術責任者)を務めるスリ・シバナンダ氏は、AIのトレーニングを行って作成できるアプリケーションもあると考えている。コードは複数のビルディングブロックで構成される。こうしたビルディングブロックを組み立てることで、大規模で複雑なシステムが生み出される。そのため、プログラマーは繰り返し作業の速度を上げるためにスクリプトを作成することもある。この考え方はシンプルなアプリケーションにも拡張できる。事実、決済アプリケーションはそのような構造になっている。ソフトウェアスタックの最下部にはデータベースやOSが存在する。シバナンダ氏は次のように語る。「AIはコーディングを支援できる。コードと動的なロジックで知識を生み出すことは可能だ。だが、ルールベースのコード作成が可能にするにはそこまでだ」
AIが作成するコードもあるだろう。だが、プログラミングの複雑さのレベルはさまざまだ。AIが適しているタスクもあれば、適していないタスクもある。例えば、ワードプロセッサは文章をインテリジェントに訂正できる。「全てのドキュメントプロセッサは基本的な文法チェック機能を既に多数提供している」とシバナンダ氏は話す。ワードプロセッサは文章を読み取り、文法規則を当てはめる。プログラミングエディタや対話型開発環境でも、構文を訂正するために同じ技法が用いられる。
こうしたルールベースのチェックは、プログラマーがコンパイラと高度なプログラミング言語を使ってアプリケーションを開発する以前から存在していた。実際、コンパイラや静的コード分析ツールは、コードが正しい形式で構築されているかどうかをチェックする。
後編(Computer Weekly日本語版 11月4日号掲載予定)では、ソフトウェア開発におけるAIの適用分野とその可能性を紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.