GPT-3(OpenAI)のAPIが公開されはじめたので、機能や評価を纏めてみました

音声認識エンジンの開発を行う側、ボランティアでプログラマ向けにディープラーニングを教えたりしているAI事業部の大橋です。

OpenAIが開発しているGPT-3という言語モデルのAPIが一般に公開されはじめて、反響を呼んでいるようなので、どんな事ができるのか、どう評価されているのかについて纏めてみる事にしました。

本当は実際に触ってみて、その実力を確認したいところですが、現在は潜在顧客やテックジャーナリストにしかAPIを公開していないようなので、今回は、その概要について記述したいと思います。

GPT-3とは

まず、GPT-3についてですが、OpenAIが開発している言語モデルの最新版です。3とついているところからもわかるようにシリーズ化されており、今回の奴はバージョン3です。

ところで、これは余談ですが、OpenAIはイーロンマスクによって設立され、悪い奴が最初に最強のAIを開発してしまうと世の中にたいへん悪い影響があるだろうから、良い奴である我々が最初に最強のAIを開発しようという目的のために設立された非営利団体です。自分たちが100%良い奴と言い切ってしまっているあたりは危うさのある組織ですが、技術面では、言語モデルの世界ではGoogleとState-of-the-artを競い合っている実績があります。最近「100%良い奴」である事を止めることにしたのか、営利団体に鞍替えしたようです。

さて、本題のGPT-3ですが、言語モデルという型のモデルで、特徴はその巨大さです。

 

学習可能なパラメータの数、なんと175Bです。175Bは175,000,000,000のことですが、0が多過ぎて大きい数字なのか小さい数字なのかわかりません。でも、GPT-3の次に大型のモデルが13Bである事を考えるとちょっと前の類似モデルの10倍以上の規模であることがわかります。実は昨年公開したGPT-2は「その性能が凄過ぎて悪用されると困るので公開はしない」といって論文だけ発表して物議を醸したものなのですが、それが1.5Bだったことを考えると、とんでもない巨大モデルということが言えます。

またまた余談ですが、GoogleがBertというなかなかにクリエイティブなモデルを公開して当時のstate-of-the-artを塗り替えた時も、単純にモデルを巨大化させて抜き返した前科があります。社長が「俺たちは頭を使うよりも金を使おう、より巨大なモデルにより多くのデータを投入し、あとはコンピューテーションに金を使おう」と言ったかどうかはわかりませんが、実際に行われたのは正にそんな感じで、物量作戦で作り上げられたのがGPT-2です。なので、OpenAI、またやらかしたか、といった感じですね。

 

言語モデルとは

さて、GPT-3とは全然ダメだったタスクが巨大化した言語モデルであることはわかりましたが、そもそも言語モデルとはなんでしょうか。

結論からいうと、インプットされたテキストを元にその続きを予測するモデルです。名前が立派なので崇高な知性をイメージするのですが、統計的に次の文字はこれっぽいっていうのを出しているだけのモデルです。

上の図は言語モデルの例ですが、「今日の晩ご飯は」をインプットとして、それに続き単語をアウトプットとして予測します。当然ながら食べ物の可能性が高く、食べ物でなくても可能性のある単語はそれなりの確率で割り当てられます。文章として成り立たないような単語はほぼ0%ということになります。

一見すると、ただ単にリソースを多くぶっこんだだけに思えるGPT-3ですが、結果として、もの凄いものに仕上がっており、その使い方に関しては極めてクリエイティブなアイデアが提示されています。

 

ファインチューニングの必要なし?

学習させるパラメータの数も膨大ですが、学習に使ったデータセットも膨大です。トークン数で、約500Bというデータが投入されています。基本ウェブからスクレイピングしたデータですが、十分に膨大な量でデータを学習したのでファインチューニングを必要としないというのが、今回の論文の一番興味深い点です。

ファインチューニングとは

ところで、ファインチューニングとは、比較的簡単に手に入る大規模なデータセットで学習を行い、その結果を活用して、比較的入手が困難な小規模データセット向けにチューニングをする方法です。例えば、法律関連の文章の分類を行いたい時など、ウィキペディアで一般的な言語モデルを学習させ、その後法律関連の文章に最適化(このパートをファインチューニングと言います)、で最後にその結果を活用しつつ、分類モデルをトレーニングする、などです。

画像処理では結構前からごく一般的な手法で、言語処理ではようやく使われ始めたくらいのものなのですが、GPT-3はファインチューニング無しで、いきなり様々な用途に使えて、性能も悪くない、というのが論文の主張です。

その中で、ファインチューニングはしないものの、クエリーの仕方に工夫があり、そのクエリーの仕方に「Zero Shot」「One Shot」「Few Shot」などという名前を付けています。実は論文のタイトルも「Language Models are Few-Shot Learners」です。

 

Zero-Shot、One-Shot、Few-Shot とは

では、Zero-Shot、One-Shot、Few-Shotについて、意味を確認していきましょう。

Zero-Shot

Zero-Shotとは「お題」だけをインプットするクエリーの仕方です。

上の図では、「Translate English to French: 改行コードcheese =>」がインプットです。お題に当たる部分は英語からフランス語への翻訳で、最後にcheeseが与えられています。正解はフランス語版のcheeseです。

なんと、問題と回答欄のようなフォーマットを言葉(自然言語)で与えています。

では、One-Shotとは何でしょうか。

One-Shot

インプットとして「Translate English to French: 改行コードsea otter => loutre de mer改行コードcheese =>」と答えのフォーマットの例を与えています。これはかなりクリエイティブですね。

もう、お分かりだと思いますが、Few-Shotsの例も載っけておきます。

Few-Shots

予想通り、例の部分が複数になっています。

画期的なところは、どんな事も一つのモデルで出来てしまうところです。

例えば、ファインチューニングを使って法律関連の文書分類モデルをつくるケースであれば、ウィキペディアでベースとなる言語モデルの学習、法律文書による言語モデルのファインチューニング、そして法律文書による分類モデルの学習という3ステップが必要になるわけですが、最後のステップは、言語モデルではなく分類モデルなので、文章と分類したいクラスのデータセットの用意が必須です。データセットは基本、頑張ってアノテーションして拵える事になります。

クエリーの仕方も画期的ですが、もし、別データセットを用意する必要がなくなるのであれば、その点も画期的ですね。

API活用事例

さて、ここで、APIのアクセス権を得た方がどんな実験をしているのか見ていきましょう。論文の結果は、まぁ、書き手が載っけている事なので、全然ダメだったタスクは除外している可能性がありますからね。

GPT-3によるプログラムのコードを自動生成

まず、GPT-3にコードを書かせている人いますね。ReactJSのコードやシェルスクリプトを自動生成させています。シェルスクリプトはコマンドの数が少ないせいか、かなりの精度で生成されています。デモがビデオで公開されていますので、ご興味のある方は是非。

文章の自動生成

GPT-3は言語モデルで、そもそも文章を生成する事を目的として作成されたものなので、当たり前といえば当たり前ですが、文章を生成してその実力を評価している例が多いです。このブログは、センセーショナルなタイトルでHaker newsで話題になっている記事ですが、なんと前半部分はGPT-3によって生成されたものだそうです。 

質問と回答

文章生成の一種ですが、質問をして、GPT-3がどんな答えを返すかも多く試されています。文章を与えて、「これを5才の子供にもわかるように言い換えて」とかそんな具合です。

APIを試してみたユーザーからの評価

試してみた方からは概ね驚きの声が聞こえてきますが、一方で言語モデルの限界も指摘されています。まず、簡単な算数もできるようになったものの、ウェブ上に問題集が落ちているような簡単なものしか解けず、論理を理解しているというよりは答えを記憶している可能性が高いです。また、ファインチューニングをしなくてもそれなりの精度が出る、分類モデルなどを特別に準備する必要がないというのは凄い事だと思いますが、ファインチューニングから個別モデルの学習を行ったモデルの性能には肉薄はしていますが、勝ててはいません。膨大なデータを膨大なモデルに食わせれば、どこかで統計的なパターン以上の論理を学習するのではないかという期待は今のところ現実のものとはなっていないようです。

とはいえ、文章を生成するというオリジナルのタスクに関しての性能は凄まじく、フェイクニュースの性能がワンランク上がってしまいそうですね。

そう言えばモデルのアーキテクチャに関してですが、実はGoogleのBertもOpenAIのGPTもTransformerという同じ部品をベースとしています。そこら辺の技術的な話はまたの機会に。

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
kouohhashi
2019年までシリコンバレーに住んでいました。音声認識エンジンの開発をする側、ボランティアでプログラマ向けにディープラーニングを教えたりしています。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ