ディープラーニングブログ

Mine is deeper than yours!

GPT-3の衝撃

f:id:Ryobot:20200720105817p:plain:w700

この1週間はGPT-3のユースケースの広さに驚かされる毎日でした.

シリコンバレーでは話題騒然ですが日本ではほとんど話題になっていないので,勢いで書くことにしました.

GPT-3はOpenAIが開発した言語生成モデルです.名前の由来であるGenerative Pretrained Transformerの通り,自然言語処理で広く使われるTransformerモデルを言語生成タスクで事前学習しています.

先月申請すれば誰でもGPT-3を利用できるOpenAI APIが発表され,様々な業種の開発者によって驚くべきデモンストレーションがいくつも公開されています.

特に話し言葉からJSXやReactのコードを生成するデモは著名なベンチャーキャピタルから注目を集め,誇大広告気味だと警鐘を鳴らす事態に発展しています.

私のTwitterタイムラインは英語圏Deep Learning関連のツイートしか流れませんが,最近はGPT-3に関するツイートが30%ほど占めており,BERTの登場時を超える熱量を感じます.Twitterの本社などがあるサンフランシスコでは「GPT-3」がトレンドに乗ったようです.

GPT-3

最初にGPT-3の仕組みを簡単に紹介します.

ここ数年の自然言語処理のトレンドは,データサイズ・モデルサイズ・訓練時間を同時に上げてパフォーマンスを改善することです.この単純な方針は驚くほどうまく機能します.昨年のGPT-2はその最たるもので,人間が書いた文章と見分けがつかないレベルの言語生成を達成しました.

GPT-2はWeb上の様々なドメインの文章を事前学習することで,与えたコンテキストに沿ってあらゆる文章を生成できました.例えば「質問: アメリカの首都は? 答え: 」というコンテキストを与えれば「ワシントンD.C.」と生成し,「日本語: 私の名前は中村良です。 英語: 」というコンテキストを与えれば「My name is Ryo Nakamura.」と生成します.質疑応答や翻訳のデータセットで学習したわけでなく,Web上の大量の未分類の文章で「次に来る文章」の予測を事前学習した結果,質疑応答や翻訳といった個別のタスクを遂行するほどに後続する文章の予測精度が上がったのです1.これを「ゼロショット」といい,GPT-2は個別のデータセットで学習せずに読解・翻訳・文章要約・質疑応答など様々なタスクを実行できました.

GPT-3はGPT-2のパラメータ数を116倍にしたモデルです.

GPT-3はタスクの説明・少数の実例・プロンプトに沿って文章を生成します.論文では実例 (モデルに実行してほしいタスクのサンプル) の数が多いほど,タスクを正確に実行すると報告されています.

f:id:Ryobot:20200720130720p:plain:w700

OpenAI API

GPT-3の登場時はそれほど話題になっていませんでした.かくいう私もGPT-2がパワーアップした程度の認識でした.

ところがOpenAI APIがこの認識を覆します.

OpenAIはGPTシリーズの悪用を懸念し,GPT-2では小さな事前学習モデルから段階的にリリースし,社会に与える影響を調査しました.GPT-3ではそもそもリリースを行わず,代わりにプロンプトを送るとGPT-3の生成文が返ってくるAPIを申請者に公開しました.

様々な業種のリサーチャー・エンジニア・デザイナーがAPIを利用し始めると,GPT-3は瞬く間に話題になりました.

以下のツイートでは,あらゆる話し言葉のクエリに対して,回答と対応するURLを返す自然文検索エンジンを実演しています.

以下のツイートでは,Googleのホームページの見た目を記述すると,バグのない完璧なhtml/cssを生成しています.

以下のツイートでは,書きかけのコードをプロンプトにしてReactコンポーネントを生成しています.

以下のツイートでは,UIデザインツールFigma上で話し言葉からデザインを生成するプラグインを実演しています.

以下のツイートでは,プログラミングに関する質問にGPT-3が対話形式で答えています.「fooという変数名の配列を要素を逆順にして表示するコードを書いて」と質問すると,GPT-3は「はい。print(foo.reverse)」と正しく返答しています.後半は完璧ではありませんが,かなりよい線をいっています.

以下のツイートでは,イーロン・マスクの真似をするGPT-3に「ロケットを教えて!」や「SpaceXでどんなロケットを作ってる?」など質問しています.

以下のツイートでは,1880年代の作家に「Twitterにいることの重要性」という小説を書かせています.

以下の引用ツイートは「あなたのツイートが全然理解できなかったからGPT-3に説明してもらったけど合ってる?」というリプライに対して,ツイート主は「95%意味が伝わるし90%正解」と言い,「自分の複雑なツイートをGPT-3より正確に説明した人を見たことがない」と語っています。

以下のツイートでは,色とカラーコードの組み合わせを実例にして他の絵文字をプロンプトとして与え,その絵文字から連想されるカラーコードを生成しています.

以下のツイートでは,話し言葉からLaTeXの数式を生成しています.

日付を見てもらえればわかりますが,ほんの数日のうちにすべて起こっています.

しかも,1人のエンジニアがハッカソン感覚で数時間以内に開発できます.

自然文検索エンジンを.

映画のレコメンダーシステムを.

はっきり言って異常です.

他にも,GPT-3にチューリングテストを行ったりAI DungeonというテキストアドベンチャーゲームのストーリーをGPT-3で生成したりどんな映画を見たいか説明すると,GPT-3が映画を推薦してくれたり,ゲームから実用的なアプリまで様々なユースケースが生まれています.

議論

BERTとGPT-3の違いについて.

最大の違いは,前者が個別のデータセットでモデルのパラメータをファイン・チューニングするのに対し,後者はモデルのパラメータを変更せずプロンプトをいじって生成を制御することです.GPT-3の方法はこれまでのDeep Learning研究の観点からみるとかなり特殊です.むしろ新しいプログラミングパラダイムと見るべきかもしれません.

This is a rather different way of using a DL model, and it’s better to think of it as a new kind of programming, where the prompt is now a “program” which programs GPT-3 to do new things. Written by Gwern

GPT-3を使ってアプリを作成する場合,プログラマーはGPT-3と対話し,GPT-3がタスクを「理解」するまで自然言語でプロンプトを調整します.この作業は高度に抽象化されたメタ学習であり,プロンプト・プログラミングです.

もしくは,プロンプトを調整してフォワードパスで生まれる注意の重みを調整していると解釈できます.GPT-3において,注意の重みこそ一般的なモデルの重みに相当するものなので「じゃあGPT-3自体はなんだ?」と聞かれれば,理 (ことわり) のように感じます.理は完全に抽象化された事前学習用データセットです.

小難しい話になりましたが,これまでのDeep Learningの考え方とはかけ離れているのは間違いないです.

誇大広告について.

GPT-3のデモは人々に深い感銘を与えますが,一方でいくつかの課題が指摘されています.

  1. GPT-3の生成はとても遅いです.OpenAI APIの利用者の報告によると,GPT-3は1分間におよそ150単語を生成します.機械翻訳ライブラリMarianと比較すると2000倍近く遅いため,ユーザー体験は著しく損なわれます.

  2. GPT-3のデモはチェリー・ピッキング (意図的に良いものを選択) されています.生成の成功率は30~40%なので,使用可能なReactコンポーネントの生成には平均して3試行かかります.

  3. OpenAI APIの利用者は全員同じGPT-3を使用するので,モデルのスキルからビジネス上の競争優位性が生まれません.また,プロンプトはリバースエンジニアリングされる可能性があります.

  4. GPT-3はWebの映し鏡です.誹謗中傷やヘイトスピーチなどの有害なバイアスを学習しているので,ドメイン次第では生成をサニタイズする必要があります.

  5. OpenAI APIのベータ版は無料ですが,リリース版は有料化されます.FP16でも16GBメモリのGPUを22枚必要とするモデルサイズを考えると利用料は安くないはずです.ユニットエコノミクスの観点から多くのスタートアップが消滅する可能性があります.

以上の課題から,すぐにGPT-3がプログラマーを代替したり,AGIになったりしません.

公平性のために悲観的な話題も取り上げましたが,GPT-3は間違いなく自然言語処理を前進させ,まだ気づいていないポテンシャルをいくつも秘めていると思います.

最後に.

GPT-3に関する議論が白熱する中,TeslaのAI部門を率いるAndrej Karpathyが「GPT-3が生成したテキストをネットに投稿することで,GPTの将来のバージョンのための訓練データを汚染している」と指摘しているのが斜め上を向いてて個人的に好きです.


  1. GPT-3の論文ではこの現象をin-context learningと命名し,GPTシリーズを理解する上でかなり重要な概念です.