😽

GPT-3を理解したい

2022/12/31に公開

 GPT-3を理解したい記事です。GPT-3はGPT-2の後継モデルで、GPT-2のさらに100倍以上のパラメータを持つ超巨大モデルです。2022年11月30日にChatGPTが発表されましたが、この背景にはGPT-3があります。

GPT-3の凄いポイント

  • 自然言語による指示を与えるだけで様々なタスクを実行可能
  • zero-shot、one-shot、few-shotにおいて複数のタスクでSOTAに匹敵する性能
  • パラメータをさらに増やせばまだ性能向上しそう
  • 人間が書くのと遜色ないニュース記事を生成できる

背景

 Transformerを利用した事前学習済み言語モデルを用いてファインチューニングを行うことで、タスク特有のアーキテクチャを準備すること無く様々な言語タスクが行えるようになりました。Transoformerについてはこちらを参照してください。

https://zenn.dev/sunbluesome/articles/078ac9a9afca6a

 一方で、タスク特有のデータセットとファインチューニングが必要で、モデルの実用性や安定性に欠ける、人間と言語タスクの学習方法が異なるなどの問題がありました。

実用性と安定性

 タスク特有のデータセットが必要ということは、タスクの数だけデータを用意する必要があるということです。ほとんどの場合タスクごとに数千から数万件のデータが必要で現実的ではありません。そして、安定性の観点からは、モデルの表現力が高く学習データ分布が「狭い」場合、学習データの疑似相関をモデルが悪用する可能性があります。

人間と言語タスクの学習方法が異なる

 一般的論として、人間が言語タスクを学習する場合、数個の例を教えられれば言語タスクを理解し、実行することができます。例えば、

「この文が喜びを表しているか、それとも悲しみを表しているか教えてください」

と質問された場合、人間は理解して返答することができます。そして質問に応じて様々なタスクを次々に行うことができます。

 GPT-2では筆者らが in-context learning と呼んでいる手法でこれらの問題を克服しようとしました。in-context learningは、事前学習された言語モデルへのテキスト入力でタスク指定を行う方法です。しかしファインチューニングした結果と比較すると遥かに悪い結果でした。GPT-2についてはこちらを参照してください。

https://zenn.dev/sunbluesome/articles/775ffd67fb7454

 また、GPT-2はWebTextデータセットに対してまだアンダーフィットしている状態で、パラメータを増やすことでさらなる性能向上が期待されていました。
そこで、さらに100倍以上パラメータを増やしたGPT-3が開発されました[1]。

アーキテクチャ

 アーキテクチャは基本的にはGPT-2と同じですが、attentionにsparse attentionを用いている点が異なります[2]。Sparse Attentionについてはこちらを参照してください。

https://zenn.dev/sunbluesome/articles/5f6a86dfa1e1be

パフォーマンス

 [1]では、zero-shot、one-shot、few-shot learningについて様々なタスクで検証しています。それぞれの設定を確認した後、結果を見ていきましょう(下図)。


[1] Figure 2.1 より

 zero-shotは例示を許可せず、自然言語による指示のみをモデルへ与える方法(上図左上)、one-shotは1回のみ例示を許可する方法です(上図中段左)、few-shotはモデルのcontext windowに収まるだけの例示を許可する方法です(上図左下)。

 few-shotに用いられる例は10~100程度だと筆者らは述べています(ちょうどモデルのコンテキストサイズ(n_{ctx}=2048)程度になるそうです)。つまり、タスクのために用意すべきデータがせいぜい100程度で良いということです!これまでメジャーだった事前学習とファインチューニングを用いるアプローチでは、タスクごとに数千以上ののデータが一般的に必要とされていたことを考えると、GPT-3の凄さがわかると思います。

 一方で、few-shotの結果はファインチューニング済みのSOTAに勝つのは難しいようです。では結果を見ていきましょう。

Language Modeling


[1] Table 3.2 より

 LAMBADAではacc(accuracy)、ppl(perplexity)ともにSOTAを達成しています。言語モデルにはLAMBADAがどんなタスクか教えていないわけですが、幾つかの例を与えることでより正確な推論が可能になっています。なぜかzero-shotよりone-shotの方が性能が低いですが、これはパターンを認識するのに複数の例が必要だからだろうと考察されています。

 HellaSwagとStoryClozeではいずれもSOTAを下回っています。HellaSwagは1.5Bパラメータのモデル(GPT-2相当)の75.4%よりも良い結果ですが、SOTAモデル(ALUM[5])の結果には及びませんでした。StoryClozeでは、BERTベースのモデルでファインチューニングしたSOTA[6]には及ばないものの、従来のzero-shotよりも約10%結果が改善されたとのことです。

Closed Book Question Answering


[1] Table 3.3 より

 TriviaQAでは、zero-shotの時点でclosed-bookのファインチューニングモデルを上回る性能が出ています。few-shotではSOTAではSOTAです。WebQSはzero-shotでは酷い性能ですが、few-shotではSOTAと比較してもまずまずな性能が得られています。これは、WebQSがGPT-3の分布外のタスクであることを示唆しているとのことです(例示しないと解けないということだと思います)。NaturalQSではSOTA全然及びません。しかしながら、zero-shot、one-shot、few-shotと性能が上昇していることもわかります。事前学習分布の限界を示している可能性があるとのことです。

Translation


[1] Table 3.4 より。学習データは93%が英語、それ以外が7%。

 few-shot設定において、英語への翻訳において3つの言語でSOTAを達成しています。En-Roで飛ぼ抜けて性能が悪いが、これは英語学習用に作られたGPT-2のBPEトークナイザーを利用していることが原因ではないかと考察しています。BPEについてはGPT-2の記事をご覧ください。

https://zenn.dev/sunbluesome/articles/775ffd67fb7454

Winograd-Style Tasks


[1] Table 3.5 より

 Winograd Schemas Challengeは代名詞がどの単語であるか当てるタスクです。Winogradデータセットでも、Winogrande(XL)データセットでもファインチューニング済みのSOTAには及びません。ただ、WinogradについてはSOTAに迫る性能が出ています。Winograndeでも例示の数が増えるにつれて性能が上がっていることがわかります。

Common Sense Reasoning


[1] Table 3.6 より

 PhysicalQA(PIQA)は物理に関する一般常識を問う問題で、zero-shotの時点でSOTAを達成しています(人間のスコアはさらに10%以上高い)。ARCは、3年生から9年生の科学テストから集めた多肢選択問題のデータセットです。ARCもOpenBookQAも、SOTAには全然及びません。

Reading Comprehension


[1] Table 3.7 より

 モデルの読解力を評価するタスクです。対話形式と単一質問の両方で、抽象的な回答形式、多肢選択形式、スパンベースの回答形式を含みます。上記表においてGPT-3の性能が大きくばらついていることから、回答形式によって性能が異なることが示唆されています。

SuperGLUE


[1] Table 3.8 より

 SuperGLUEは自然言語処理タスクです。文章と質問が与えられ、それに対してyes/noで回答したり、選択肢から正しい回答を選ばせたり多くのタスクがあります(それぞれのタスクが上記表の各列に対応します)。タスクの詳細については原著をご覧ください。
こちらもReading Comprehension同様、タスクによって性能に差がありますが、8タスク中4タスクでファインチューニング済みのBERT-Largeモデルを上回る性能で、さらに2タスクはSOTAに迫る性能です。

NLI


[1] Figure 3.9 より

 Natural Language Inference(NLI)は、2つの文の関連性理解を評価するタスクです。通常2クラスまたは3クラスの分類問題になっており、第一文から第二文が導かれるか否か、もしくは中立かを分類します。図を見てわかる通り、175Bパラメータのモデルのfew-shot設定のみが、ランダムの性能を明確に上回っています(明確にという表現は正しくないかもしれません)。進歩の兆しは見えたものの、NLIはGPT-3でもまだまだ難しいタスクであるとのことです。

Synthetic and Qualitative Tasks

 GPT-3で導入された新規のタスクです。GPT-3の能力を確かめるために、以下のようなことを評価しています。

  1. Arithmetic(算数)
  2. Word Scrambling and Manupulation Tasks(単語中の文字の並べ替え)
  3. SAT Analogies(SAT形式の類題を少数回で解く)
  4. Learning and Using Novel Words(新出単語を文中で使う)
  5. Correcting English grammer(英文法の修正)
  6. News Artivle Generation(ニュース記事生成)

Arithmetic


[1] Figure 3.10 より

 桁数が少ないほどaccuracyが高くなっています。2桁の足し算では100%、引き算では98.9%の正解率です。大きな桁数で正解率は下がるものの、汎化可能性が示唆されるとのことです。

Word Scrambling and Manupulation Tasks


[1] Table 3.10 より。数値はaccuracyです。

 上記表の各列に対応するタスクは以下の通りです。

  1. Cycle letter in word (CL):文字を循環させたものを復元させるタスクです。例えば、「lyinevitab」が与えられたときに「inebitably」を出力させます。
  2. Anagrams of all but first and last characters(A1):最初と最後の文字以外が全てランダムにシャッフルされた単語を復元するタスクです。例えば、「criroptuon」が与えられたときに「corruption」を出力させます。
  3. Anagrams of all but first and last 2 characters(A2):最初と最後の2文字以外が全てランダムにシャッフルされた単語を復元するタスクです。例えば、「opepnnt」が与えられたときに「opponent」を出力させます。
  4. Random insertion in word(RI):単語の各文字の間にランダムな句読点または空白を挿入し、元の単語を復元するタスクです。例えば、「s.u!c/c!e.s s i/o/n」が与えられたら、「succession」を出力させます。
  5. Reversed words(RW):逆順に綴られた単語を元の単語を復元するタスクです。例えば、「stcejbo」が与えられたら、「objects」を出力させます。

 上記の結果に共通することとして、zero-shotではほとんど正解できず、one-shotでも性能が著しく悪いことがわかります。これは、上記のタスクが事前学習にほとんど現れておらず、あたかもテスト時にタスクを学習しているように見えるとのことです(正確な確認をしたわけでもないとのこと)。

SAT Analogies


[1] Figure 3.12 より

 175Bパラメータのモデル(GPT-3)のfew-shotで65.2%、one-shotで59.1%、zero-shotで53.7%まで出ています。ちなみに、大学受験生の平均点は57%とのことです。

News Article Generation


[1] Table 3.11 より

 GPT-3にニュース記事を生成させて、人間に実際の記事と区別させて評価をしています。Mean accuracyを見ると、175BのGPT-3では52%にまで落ちており、人間では実際の記事かどうか正確に判断できなくなっていることがわかります。

Learning and Using Novel Words

 実在しない単語の定義を与え、文章中で使用するようにGPT-3へ指示を与えます。私にはよくわかりませんが、それっぽい結果になっているとのことです。以下がその具体例です。


[1] Figure 3.16 より

Correcting English Grammer

 英文法修正タスクです。few-shotとone-shotで結果を出力させています。以下が具体例です。


[1] Figure 3.17 より

Poor EnglishとGood Enblishという表現がありますが、PoorとGoodの解釈が複雑であるということに留意しているとのこと。例えば、

Poor English input: Mary arranged for, in St. Louis, John to rent a house cheap.
Good English output: Mary arranged for John to rent a house in St. Louis.

では意味が変わってしまっています。

まとめ

 随分と結果を省略してまとめましたが、GPT-3の論文自体はここまでで半ばといったところです。SOTAに及ばないにしても、few-shot設定ならそれなりの性能でタスクをこなせるということがわかるかと思います。また、記事が長くなりすぎるのであえて省略してきましたが、モデルのパラメータ数が大きくなるにつれてモデルの性能が上昇している例が多いです。これは、モデルをさらに大きくすればまだ性能が上昇するであろうことを示唆しています(これ以上大きいモデルで学習が現実的に可能かどうかはさておき)。

 個人的には、SOTA云々よりも自動生成か実際の記事か判別できないような記事を生成できることが衝撃でした。

以上、終わります。残りやタスクの細かい条件等については自然言語を仕事で扱うようになったらまた精読しようと思います。

参考文献

  1. Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., Agarwal, S., Herbert-Voss, A., Krueger, G., Henighan, T., Child, R., Ramesh, A., Ziegler, D. M., Wu, J., Winter, C., … Amodei, D. (2020). Language Models are Few-Shot Learners. arXiv. https://doi.org/10.48550/arxiv.2005.14165
  2. Child, R., Gray, S., Radford, A. & Sutskever, I. (2019). Generating Long Sequences with Sparse Transformers. arXiv. https://doi.org/10.48550/arxiv.1904.10509

Discussion