-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[2005.14165] Language Models are Few-Shot Learners [paper-reading] #72
Comments
GPT-3 の論文も読んでみる。 ページ数が多め (75 ページ) なので、issue に細かく書きすぎると大変なので、特に興味を持った部分をかいつまんで情報として残しておくことにする。 |
事前学習した Transformer Decoder を fine-tuning すれば同一のアーキテクチャで多様なタスクが高い性能で解けるようになってきた。しかし、まだタスク固有のデータや fine-tuning が必要であり、これらも無くすことができれば真に汎用的なモデルが作れたと言えよう。これができれば特に次の 3 つの観点で嬉しい。 1 つめは言語処理のタスクは非常に多様(文法の修正から抽象的な概念の例の生成、短編小説の批評など)で、そのようなタスクの教師付きのデータは大規模には存在しないものが多いので、そのような教師付きデータに依存せずに解けるようになれば多様なタスクを楽に解くことができる。 2 つめは fine-tuning は非常に狭い分布で学習するので十分に汎化していないとこもあって、与えたデータに対しては良い結果だけどそこから外れると性能が落ちるというケースも観測されるが、もし fine-tuning なしで解けるようになれば多様なタスクの広い分布において十分に汎化できていると考えられる。 3 つめは人間と同じような流動性と汎用性を持たせることができる。例えば、人間は複数の例示に適応してタスクを解いたりすることができる(例:「勇敢に行動する人々の例を2つ示します。3つ目の勇敢さの例を挙げてください」)。このような能力の獲得により、多くのタスクやスキルをシームレスに組み合わせたり切り替えたりすることが可能となる。 これを実現する一つの有望な方向性が meta-learning で、概念的には以下の図のようなもの。 先行研究の重要な発見として、SOTA にはまだ叶わないが、モデルを大規模にすると性能が連続的に向上しているので、もっともっと大規模にすれば凄い性能になるのではないかと考えたわけである。自然な考えだが、圧倒的に脳筋である。 この論文ではパラメタ数 1750 億の GPT-3 (GPT-2 よりも 2 桁大きい) を作り、20以上の自然言語処理のデータセットや学習データに直接含まれている可能性が低いタスクの性能を調べている。 |
in-context learning は、名前の通りコンテキストウィンドウ内に収まるだけ(GPT-3 では 2048 トークン)の例示から学習するというもので、この例示の数が 0 ならば zero-shot で、1 ならば one-shot で、few-shot という場合は 10~100 くらいにする。 モデルサイズと例示の数の関係を、単語から特定の記号を削除するという単純なタスクで実行した結果が以下。 |
全体的には、GPT-3は自然言語処理タスクにおいて zero, one-shot 設定で良い結果を達成し、few shot 設定ではものによっては SOTA 程度にもなる。 accuracy で測定できるタスクにおけるモデルサイズ毎の性能を示したものが以下。 苦手なデータセットとしては、ANLI のような自然言語推論タスクや、RACEやQuACのようないくつかの読解データセットが挙げられる。GPT-3の長所と短所を幅広く提示することで研究をより促進させたいと述べている。 |
アプローチの部分では zero, one, few-shot と fine-tuning の違いを説明。
以下は英語からフランス語への翻訳の例。 |
モデルとアーキテクチャに関して GPT-2 と同様で、以下のように少し手を加えている。
モデルサイズは複数個作っていて一番大きいのが GPT-3 である。改めて眺めると モデルのパラメタ設定は、モデルパラメタに対して validation loss がそんなに sensitive ではないことが知られているので、計算効率のためだけに設定しているというのは面白い。
|
学習データは、GPT-2 では WebText という Reddit のリンクをベースにデータを作ったが、ここではより大規模なデータが欲しいということで GPT-2 の時はデータの質に問題があるからと使わなかった Common Crawl を使っている。ちなみに Common Crawl のデータであれば GPT-3 を同じデータを繰り返すことなく十分に学習できる程度のサイズと言っている。 そのままだとデータの品質の問題が大きいので、以下の 3 つの方法でデータを前処理して質を高めている。
データセットのサイズは最終的には以下のようになっている。 なお、本論文で研究したすべてのベンチマークの学習データとテストデータとの重複を検索して削除しようとしたが、残念ながら、フィルタリングのバグにより一部の重複を無視してしまったと書いてある。 |
モデル評価に関して。 few-shot の場合、学習データからランダムに k 個取り出してタスクに応じて改行を入れてモデルに食わせる(データセットによっては学習データに教師付きのデータがない場合はがあるが、適宜 development set から取るなどで対応する)。 選択肢を選ぶ形式とかは基本的に GPT-2 と同じように選択肢毎に尤度を計算してトークン長で正規化して最も尤度が高いものを答えとして選ぶ。それ以外もタスク毎に色々調整してるが特に難しいところはない。 最終的な結果は test set に対する性能で測るが、データが公開されていないものは training set で測る。 |
まずは言語モデルの事前学習のべき乗則に関して。 これはかなり impressive なグラフだ。 これ以降は節ごとに様々なデータセットでの結果を評価し考察している。 |
言語モデルに近いタスクに関して。 PTB の結果は GPT-2 が SOTA で perplexity が 35.8 であったが、これが 15 points も改善して GPT-3 では 20.5 で圧倒的な SOTA を叩き出している。 LAMBADA は結構面白い。
これにより以下のように zero-shot SOTA を更新するのみならず、few-shot では人間に 10 points 差程度まで性能を発揮している。モデルの重みを更新しないでここまでできるということはかなりのインパクトを残す結果である。 HellaSwagデータセットは、物語や一連の指示から結末を選ぶものです。例は、言語モデルには難しく人間には容易(acc:95.6%)であるように敵対的に作成されていることもあり、GPT-3は one-shot で acc:78.1%、few-shot で acc:79.3% であり、fine-tuned の SOTA 85.6% にはまだまだ及ばない。 StoryCloze 2016データセットではGPT-3は zero-shot で acc:83.2%、few-shot(K=70)で ac:87.7% を達成。これは、fine-tune した BERTベースのモデルのSOTAよりも 4.1 point 低いが、以前の zero-shot の結果を約 10 points 改善している。 言語モデルと相性の良いタスクに関しては全体的にやはり性能が高く、まだ fine-tune した SOTA には及ばないものの、かなり肉薄してきていることが分かる。スケーリング則と合わせて、もう一段性能の高いモデルが出てきたら fine-tune したものや人間と同等レベルになると想像することは妥当であるというレベルまできている。 |
モデルサイズと性能向上が顕著に出ているタスクとしては質問応答がある。 どのデータセットでも良い性能を残すし、out of domain っぽいものでも few-shot でかなりの改善を見せるが、ひとつ具体的に TriviaQA を取り上げると、以下のように fine-tune したモデルの SOTA を上回るレベルになっている。 知識に依存するという意味で、大規模な事前学習をすればするほど性能が高まる(モデルに様々な基本的知識が装着される)、というのは期待通りの結果だが、ここまで顕著だと思わず笑ってしまうほどの凄さだ。 |
逆に、GPT-3 でもまだ過去の SOTA との乖離が大きいのは文章読解系のタスクである。他にも natural language inference も苦手。 データセットがたくさんあって色々ここに残すのは大変なので、そのうちの DROP https://arxiv.org/abs/1903.00161 だけ少し見てみる。 その後のモデルとして、GPT-4 とか PaLM 2 では 80 以上(PaLM 2 では 85.0) の F1 score を達成するようになっていて、この手のタスクも更なる大規模化で解けるようになっている。 |
GPT-3 論文が面白いのは、既存のタスクだけの評価だと生成 AI モデルの強力さを充分には伝えきれないということで様々なタスクを定義して検証しているところ。 例えば、単純な数字の演算。 そして何よりもニュース記事生成タスク。 生成した文章は例えば以下(Article が生成した文章)。
|
学習データがめちゃくちゃ大きいので、data leak などを調べる。 シンプルな方法として、評価タスクのデータから重複しているものを除いて評価をして、フルのデータセットでの評価と比較している。結果として、殆ど結果が変わらなかったので、data leak の影響は大きくないと結論づけている。 具体的なタスクをいくつか絞ってさらに深掘りしているけど、ここでは文章読解だけを見てみる。QuAC, SQuAD2, DROPのタスク例の90%以上が潜在的に混入しているとフラグ付けされたが、手動で確認したら質問-回答ペアは含まれてなかったので、背景情報は得たかもしれないけど答えを暗記してはいないと述べている。 |
limitations も色々書かれているが、特に興味深いところは以下:
|
あとは悪用とか差別的な話とかがあるけどこの辺は自分がそんなに興味ないのでここには書かない。 |
ということで一通り終了。 実験が多いので記載は適宜スキップしつつだけど、この実験とか様々な観点を盛り込んだというのが新しい生成AI時代の幕開けという感じがあっていいよね。 モデルに関しては公開されている情報が全然なくて、"Open"AI ですねと揶揄される方向性が加速している。 |
論文リンク
https://arxiv.org/abs/2005.14165
公開日(yyyy/mm/dd)
2020/05/28
概要
GPT-3 の論文。
GPT-2 よりも2桁大きい 1750 億というパラメタ数の言語モデルである GPT-3 を作成し、その性能を非常に広い範囲で検証している。
事前学習した大規模言語モデルに対して、モデルの重みを変えないが予測の際に具体的な例示を与える few-shot learning の構造によって様々なタスク(翻訳、質問応答、穴埋めタスク、etc......)で高い性能を発揮していて、大規模言語モデルの強力な汎用性を確固たるものにしている。あらゆる自然言語タスクに対して高い性能ということではなく、文章読解や natural language inference など SOTA に遠く及ばないタスクもある。
モデルサイズのスケーリング則がより明確になり、既存のタスクだけでは大規模言語モデルを評価しきれないということで算術やテキスト生成などの独自のタスクを準備して評価しているなど、生成AI時代の幕開けという感じの論文である。
なお、公開されているコードの情報はどんどん少なくなってきており、モデルやコードの情報などはなくてデータについての情報があるだけである。
公式GitHub(モデルとかの情報はなくデータについてちょっと情報が公開されている程度): https://github.com/openai/gpt-3
The text was updated successfully, but these errors were encountered: