Babel, Inc. Engineering Blog

株式会社バベルのtech blogです

Babel | Engineering Blog

 

株式会社バベルのtech blogです

超汎化言語モデル GPT-3のライセンスを日本でいち早く取得して使ってみた話

超汎化言語モデル GPT-3のライセンスを日本でいち早く取得して使ってみた話 はじめまして。
株式会社バベルでAIエンジニアとしてとして自然言語エンジンの開発をしている満石と申します。

この度バベルでは、日本のスタートアップではなかなか許可が降りないと話題のGPT3の使用許可申請を行なった所なんと!使用許可をもらうことができました!

そこで当記事ではGPT3では何ができるのか、これまでのモデルと何が違うのかについて実例を交えて紹介させて頂きます。

GPT-3とは

そもそもGPT-3とはOpen AIが開発した超巨大言語モデルで、そのパラメータ数なんと1750億。GPT-3が出てくるまで最大だったモデルの約10倍、GPT-3の前身であるGPT-2の約120倍であることを考えるとその巨大さが伺えるかと思います。

開発にかかった費用は、学習に使ったものだけで約4億9000万円。言語研究はまさにMoney is all you needといった様相を呈しています。

そんなGPT3ですが発表されるや否や話題騒然となり、ブログを書かせたら1ヶ月間AIによる文章だとばれなかったという話もあったりとものすごく高い精度を有しているようです。

実際に使ってみた

ではせっかく手元で使うことができるので実際にその精度を確かめてみましょう。

GPT-3ではモデルにプロンプトと呼ばれる"指示"を文章で入れることで目標とするタスクをこなすことができます。例えば

You and GPT3 are talking friendly;

と指示してみます。 そしてAPI keyの申請が通ると使うことができる、playgroundというサイトを使ってGPT3に

You: Give me a talk  
GPT3: 

と話しかけます。すると

f:id:FutoMitsuishi:20210609173424p:plain:w450
会話文応答: Talking Friendly


上図のようにGPT-3からの応答が返ってきました。かなり人間らしい応答ですね。しかしGPT-3の本領が発揮されるのはこれからです。

You and GPT3 are talking friendly. GPT3 loves you;

と指示を変えてみましょう。

f:id:FutoMitsuishi:20210609191459p:plain:w450
会話文応答: GPT3 loves you


少し指示を変えただけで回答が大きく変わりました。まさかAIに匂わせをされる日が来るとは。

You and GPT3 are talking friendly. GPT3 is pretty drunk;

と指示してみると

f:id:FutoMitsuishi:20210609173742p:plain:w450
会話文応答: GPT3 pretty drunk


「酔っ払ってないよ。ちょっとよろめいただけ」と言っています。まさに酔っ払いの常套句。なりきってくれています。

この様に指示の部分を少し変えるだけで自分に恋してるGPT3、酔っ払ったGPT3、などなど色々なGPT3と話すことができ、かなり衝撃です。

ちなみに実際のGPT-3からの応答はこんな感じで出力されます。

f:id:FutoMitsuishi:20210609200133g:plain:w450
会話文応答

Shot-learningの時代へ

GPT-3が驚異的なのはこのような高い精度を持つということ以上に、これらを学習を回さずに行えるという点です。

元々深層学習を用いて言語の問題を解決するには、解決したい問題が生じる度に0からモデルを学習する必要がありました。これには膨大なデータセットと計算資源が必要になり非常に高コストです。

しかし2018年にGoogleが開発した言語モデルBERTの登場によって状況は一変します。BERTによってpretraining&fine-tuningという手法で0からモデルを学習せずとも多くの問題を解決することができるようになったのです。pretraining&fine-tuningとは、これまでひとくくりだった学習のステップを2段階に分け、大量のデータ・大量の計算資源を用いる1段階目の学習(pretraining)と比較的少ないデータ・計算資源で学習できる2段階目の学習(fine-tuning)をそれぞれ別に行うというものです。Googleのような大企業がpretrainingを行い、そのモデルを公開してくれることでその他の研究者・企業は目的にあったfine-tuningを行うだけで問題を解決することができます。

arxiv.org

実は画像処理の分野ではこのpretraining&fine-tuningはもっと早くから広く使われていて、自然言語処理に応用する試みは当時からあったのですがなかなか上手くいっていませんでした。そこでBERTが新しい技術を導入することでpretraining&fine-tuningが言語でも使えるレベルとなりました。(BERTがどのようにpretraining&fine-tuningを成功に導いたのかはまたの機会に)

しかしこのfine-tuning、pretrainingに比べれば少ない費用・時間でできるとはいえまだまだ多くのコストがかかりますし、運用には学習を行うAIエンジニアが必要です。まだまだ誰でもすぐに使えるものではありません。

そこで出てきたのがGPT-3。fine-tuningすら必要とせず、"Shot-learning"1だけで問題を解決することを目標としています。shot-learningとは、モデルに指示と例を入力するだけで解きたい問題を解いてもらおうというものです。例を一つも入れないのがZero-Shot, 1つだけ入れるのがOne-Shot, 複数個の例を入れるのがFew-Shotです。(前章でやっていたのはZero-Shotになります)当然ながら例を入れるほど精度は高くなります。つまり酔っ払いの会話の例を何個か作って入力するとよりちゃんと酔っ払ったGPT3と喋れるということになります。

arxiv.org

Shot-leaningが可能になれば学習に必要な費用・時間は限りなく0に近くなり、プロンプトの指示文と例を考えるだけなのでAIエンジニアでなくとも学習を行うことができます。プロンプト・プログラミングという概念もあるにはありますがfine-tuningに比べればいささか簡単です。

またShot-learningの更なる利点として、ユーザーごとに最適化したサービスの提供が可能になるという点が挙げられます。どういうことかというと、fine-tuningでは基本的にサーバ上に置くモデルを調整するため、入力が同じなら全てのユーザーに同じ出力が提供されます。しかしShot-learningではサーバ上に置くモデル自体は同じでも、ユーザーごとにプロンプトを用意することで各ユーザーに全く別の体験を提供することができます。つまり酔っ払ったAIと喋りたい人には酔っ払ったAIを、自分のことが好きなAIと喋りたい人には自分のことが好きなAIを、提供することが可能になります。

Shot-learningも構想自体はGPT-3の前身であるGPT-2の時に既に提唱されていましたが精度はfine-tuningの足元にも及びませんでした。しかしGPT-3の登場でついにShot-learningも現実的になってきました。fine-tuningを新しいアイデアで現実的にしたBERT, Shot-learningを資金力で現実的にしたGPT-3と面白い対比になっていますね。

実はこれは偶然ではなく、同じくOpenAIによってパラメータやデータ数等を増やせば増やすほどモデル構造による差がほとんど影響を与えなくなるということが理論的に証明されています(scaling lawといいます)。だったらつぎ込めるだけの資源をつぎ込もう、ということで生まれたのがGPT-3という訳です。

arxiv.org

もちろんShot-learningも万全ではなく、まだまだタスク次第ではGPT-3以前のモデルのfine-tuningを行った方がGPT-3のshot-learningより精度が高いということは報告されていますが、今後GPT-4, 5とパラメータ数・用いるデータ数が増えていくにつれてその差はほとんど気にならない程度のものになるでしょう。

このようにGPT-3はshot-learningを現実的にしたことで、誰でも・すぐに・ユーザーごとに解決したい問題に用いることができる、まさに次世代のAIモデルと言えそうです。

他タスクへの応用

最初に見せた実用例ではZero-Shotの会話の例のみでしたが、ここからは一番精度が高いFew-Shotを用いた他タスクへの応用例を見てみましょう。

まずは機械翻訳の例です。以下のように指示と例を入れて見ます。

Translate English into Japanese:
###
English: I do not speak Japanese.
Japanese: 私は日本語を喋りません.
###
English: See you later!
Japanese: また会おう!
###
English: Where is a good restaurant?
Japanese: どこかに良いレストランはありますか?
###
English: Where is the restroom?
Japanese:

出力結果は

f:id:FutoMitsuishi:20210609175831p:plain:w450
機械翻訳

と正確に翻訳してくれています。

次にネガポジ分類をしてみましょう

Classify the text as negative and positive:
###
This movie is bad --> negative
###
I like this movie so much --> positive
###
It's the best I've ever seen -->

と入力してみると

f:id:FutoMitsuishi:20210609180101p:plain:w450
ネガポジ分類

ちゃんとpositiveに分類してくれました。

他にも文法矯正や質問応答、映画を絵文字で表すという一風変わったタスクなどなど多くのタスクに応用することができます。

GPT-3を用いたプロダクト3選

最後にこのGPT-3を十分に活用した、私が個人的に選ぶ凄いプロダクトtop3を紹介したいと思います。

1. Blog Idea Generator

会社でtech blogを書くことになったけど書くネタが思いつかない、なんて時ありますよね?そんな時にお薦めなのがBlog Idea Generator。サイトに飛ぶとこの様な画面が現れます。

f:id:FutoMitsuishi:20210608172219p:plain:w1000
Blog Idea Generatorサイト画面

enter your topic hereと書かれたスペースにキーワードを入れるとブログのタイトルと要旨を生成してくれます。試しにpythonと入れてみましょう。

f:id:FutoMitsuishi:20210608172413p:plain:w1000
Blog Idea Generato: pythonと入力した結果

プログラミングの初心者向けの記事をおすすめされました!確かにpythonのブログ記事としては適切そうです。

2. GPT3 books

自粛中本を読みたい!でも良い本が見つからない...。そんな時にお薦めなのがGPT3 books

f:id:FutoMitsuishi:20210608172456p:plain:w1000
GPT3 booksサイト画面

Suggest a book about...に読みたい本のtopicを入れるとGPT-3が一番適した本をお薦めしてくれます。

historyと入れてみましょう

f:id:FutoMitsuishi:20210608172518p:plain:w1000
GPT3 books: historyと入力した結果

The Underground Railroadをお薦めされました。19世紀アメリカで南部奴隷州から北部自由州への奴隷の脱出を助けた秘密組織The Underground Railroadに関するフィクションだそうです。タイトルにhistoryと入っていない歴史関連の本をお薦めできるのはすごいですね。

3. GPT-3 Tailwind CSS

最後は文章で作りたい図を説明すると自動でCSSを書いてくれるウェブサイトGPT-3 Tailwind CSSの紹介です。私はまだwaitlistの中なので本家のデモからの引用になります。

f:id:FutoMitsuishi:20210608172537p:plain:w1000
GPT-3 Tailwind CSS: 入力ホーム

Describe your layoutと書かれた中に作りたい図を文章で説明します。すると

f:id:FutoMitsuishi:20210608172559p:plain:w1000
GPT-3 Tailwind CSS: 出力結果

一番下のResult:の欄を見てください。確かにOpenAIと書かれたblack buttonとThemesbergと書かれたorange buttonが表示されています。

このように簡単なものであれば完璧なCSSコードを書いてくれるようです。夢のノーコードプログラミングの実現を匂わせてくれます。

現在実に300を超えるプロダクトがGPT-3を用いて開発されています。また最近ではマイクロソフト社が自然言語でコードがかける機能の開発をGPT-3を用いて行うことを発表するなど、まだまだGPT-3が与える影響は計り知れません。今後のGPT-3の動向に目が離せませんね。

まとめ

今回は、昨年公表され自然言語処理界隈に衝撃を与えたGPT-3のAPI keyを日本のスタートアップとしてはいち早く取得できたということで、GPT-3では何ができるのか・これまでとなにが違うのか・どのようなプロダクトへと応用されているのかについて紹介させて頂きました。

好評を頂けた場合には、どのようにバベルが日本のスタートアップではなかなか取得できないGPT3 API keyを取得したか等について紹介させて頂きたいと思いますので是非スター・シェア・ツイートをお願い致します!

参考にさせて頂いた記事一覧

Ryobot様 GPT-3の衝撃 - ディープラーニングブログ

Ryobot様 OpenAIが発見したScaling Lawの秘密 - ディープラーニングブログ

楽しみながら理解する自然言語処理入門 ニューラルネットワークを使った自然言語処理の歴史を理解する | 楽しみながら理解する自然言語処理入門

GEEK FEED様 GPT-3(OpenAI)のAPIが公開されはじめたので、機能や評価を纏めてみました | ソフトウェア開発のギークフィード

ell様 Few-shot Learningとは何なのか【Generalizing from a few examples: A survey on few-shot learning】 - Qiita

dhirooka様 GPT-3におけるFew-Shot・Zero-Shot


  1. GPT-3において使われるShot-learningは機械学習一般で使われるShot-learningと少し意味が異なります。本記事ではGPT-3におけるShot-learningの意味で用いていることにご留意ください。