transformer を使うと、大規模なモデルで大量のデータを学習させると性能が向上し、さらに、その性能向上が頭打ちにならない。 自然言語処理の問題について大量のデータを用意するのは難しい(一般には、人力でラベル付けする必要があるため)が、 文章に続く次の単語予測であれば自動生成が可能である。 まず、次の単語予測で Pre-train (= 事前学習)しておいて、その後、各問題に対して fine-tuning (= 調整するための学習) を行えば 非常に少ない訓練(たとえば 3 epocks) で学習できる。
モデルが pre-trained によって自然言語の文法知識を学習していると解釈できる。 対象言語の文法を習得した上で、各問題への適応訓練を行うと、訓練が少なくて済む。
GPT が行うのは次単語予測なので、transformer の decorder 部である。 したがって、Masked multi-head attention (未来の word は参照できない)を使っている。
「文の最初」と「文の最後」だけではなく、「区切り」を導入した。
GPT では、最終層を問題ごとに取り換えて fine-tuning していたが、大規模な1つのモデル(1.5B parameters)でできる。 また、pre-trained によって文法知識だけではなく、Commonsense Reasoning (常識推論)もそれなりに取得できる。 ("The trophy cannot fit to the suitcase because it is too big. What is too big?" に正解できる)
大規模な Web Text データセットを新たに作成して使った。 文章の質が重要なので、「Reddit の link つき投稿で 3karma 以上の投稿」(8M links, 40GB)を使った。 ただし、GPT-2 のモデルではまだ Web Text に対して underfitting (= モデルの複雑さが足りない)であった。
大規模なモデル(175B parameters, transformer は 96 層。multi-head attention は 128次元 $\times$ 96個。)。 大量の学習データ(600GB の資料から生成した 300B tokens)。
pre-trained しておくと、非常に少ない例の fine-tuning で学習できる。 これを進めて学習が Few-show, 1-shot, 0-shot と進化した。
0-shot、すなわちfine-tuning(追加学習)なしでで問題を解く。すなわち「自然言語でタスクと例を与え、続きを生成させる」とするだけで、いろいろな問題が解ける。
In Context Learning, meta learning, multi-task learning の流れを背景としているらしい。 すなわち、 「大規模なデータセットの中には、いろいろな情報は既に入っている。これを学習すると、いろいろな問題を解く手法も学習していることになる」