2023-08-10 ML勉強会

GPT-3の論文を改めて

Language Models are Few-Shot Learners

Abstract

  • GPT-3以前のTransformer系
    • 大量のコーパスで事前学習(汎用的な言語モデル)&少量の特定タスク用の教師ありデータでファインチューニングして精度をあげてきた
      • 少量とはいえ数千程度の特定タスク用教師ありデータセットが必要で結構大変
      • 言語モデルの有用性が制限されてしまう
  • でも人間の場合は?
    • いくつかの例や簡単な説明で様々な言語タスクを実行できるよね
    • つまりスケールアップした言語モデル&数ショットの例や説明でファインチューニングレベルの性能を出すことができる!はず!
    • 数ショットで済むなら様々なタスクに簡単に応用できるのでめちゃくちゃよさそう!
  • GPT-3では
    • パラメータ数175B(以前の非スパース言語モデルの10倍)
    • 色々なタスクでfew-shotでファインチューニングを用いたSOTAモデルに匹敵!
      • いくつかのタスクはまだうまくできなかった
 

1 Introduction

GPT-3以前のTransformer系の課題

  1. タスクごとにデータセットを用意してファインチューニングするのが大変。その結果、言語モデルの有用性を制限してしまう(用意できないから解けないタスクが出る)
  1. 学習データ内の見せかけ(spurious)の相関でタスクを解いてしまう可能性がある
      • 学習データへの過学習によって汎化性が下がる
      • モデルの表現が高すぎたり、学習データの分布が狭いと発生しやすい
  1. 人間は例や簡単な説明で言語タスクを解けるが、それができない。できたほうがいい。
 

課題を解決するための手段

  • 言語モデルのメタ学習
    • 膨大なデータを用いることで、学習時に幅広いタスクに対する認識性能を獲得できる
      • 膨大なデータを用いて次単語予測のタスクを解かせることで、その中に含まれる多数のドメイン領域(計算、単語正規化、翻訳など…)に関する知識を獲得できる
    • これによって推論時に求められた特定タスクに迅速に適応できる
    • GPT-2でも同じようなアプローチを試みたが、ファインチューニングモデルに対してかなり負けていた
      • メタ学習が実用的なレベルになるには大幅な改善が必要
  • 言語モデルを大きくする
    • パラメータを増やすほどテキスト合成や下流タスクが改善される傾向がある
    • GPT-3では175B(1,750 億)パラメータの自己回帰言語モデルをトレーニングする
 

評価

  • プロンプトの与え方別で評価
    • few-shot: コンテキストに収まる範囲で10〜100個のデモンストレーションを与える
    • one-shot: 1つのデモンストレーションを与える
    • zero-shot: デモンストレーションなしで、いきなり質問
    • ※今回はファインチューニングなし
  • モデルの規模別、プロンプトの与え方別の評価結果
    • 単語からランダムな記号を削除することを要求する単純タスクのパフォーマンスで計測
    • モデルが大規模になるとコンテキスト内の情報が効率的に使用された
    • 与えるデモンストレーションの数が多いほど精度が上がった
 

タスク別の評価結果

  • 評価に用いたタスク
    • 24種類以上のNLPデータセット
    • +学習データに含まれていなさそうなドメインの新しいタスクを用いた
  • プロンプトの与え方の違い
    • 各タスクにおいて、zero, one-shotでも悪くない性能が出た
    • 一部タスクにおいて、few-shotではファインチューニングを用いたSOTAモデルに匹敵する性能がでた
  • タスクの得意・不得意について
    • 計算や新語の処理などといった、適応力が問われるタスクについてもone, few-shotによって良い性能を発揮した。
    • 言語推論や文章読解などいくつかのデータセットでは、GPT-3の規模でもまだまだの結果となった。
 

2. Approach

モデル、データ、トレーニングを含む基本的な事前トレーニング アプローチは、GPT-2と同様。
異なる点として、GPT-3ではSparse Transformerで用いられているものと似た、計算量を削減したtransformerレイヤを用いている
 
またモデルサイズと性能の関係を検証するために、8種類の大きさのモデルを構築した。最も大きな175BパラメータのモデルがGPT-3である。
  • nparams: パラメータ数
  • nlayers: 層の数
  • dmodel: 各ボトルネック層のユニット数
    • (常にフィードフォワード層はボトルネック層の 4 倍のサイズ: dff = 4 ∗ dmodel)
  • dhead: 次元
  • すべてのモデルは、nctx = 2048 トークンのコンテキスト ウィンドウを使用
  • ノード間のデータ転送を最小限に抑えるために、深さと幅の両方の次元に沿ってモデルを GPU 間で分割
  • 各モデルの正確なアーキテクチャ パラメーターは、GPU 全体のモデルのレイアウトにおける計算効率と負荷分散に基づいて選択される
  • 以前の研究 [KMH+20] は、妥当な範囲内では検証損失がこれらのパラメータにそれほど敏感ではないことを示唆している
 

2.2 Training Dataset

Common Crawl データセットは大規模だがあまり質が良くない
 
平均品質をあげるための手順
  • (1) さまざまな高品質の参照コーパスとの類似性に基づいて、CommonCrawl のバージョンをダウンロードしてフィルタリングしました。
  • (2) 冗長性を防ぎ、データセットの整合性を維持するために、データセット内およびデータセット間で文書レベルでファジー重複排除を実行しました。
  • (3) CommonCrawl を強化して多様性を高めるために、既知の高品質のリファレンス コーパスをトレーニングデータに対してミックスして追加
 
インターネットから収集されたデータによって言語モデルを学習する際の懸念として、学習データと評価時のベンチマークでデータが重複すると、正当な評価が得られない可能性がある。これを防ぐために、評価用のベンチマークと学習データの重複を除去した。(が、フィルタリングのバグにより一部の重複の見逃しがあった。学習コストの大きさのため再学習は行なっていない。)
 

2.3 Training Process

大きなモデルは大きなバッチサイズと小さい学習率で学習する場合が多い。今回は各モデルで学習時の勾配のノイズのスケールを測定し、これに基づいてバッチサイズを決定した。
学習時は行列積に対するモデル並列と、各層に対するモデル並列を合わせて、Microsoftから提供されたV100 GPUクラスター上で学習を行なった
 
 

2.4 Evaluation

  • Few-shotのプロンプトの作り方
    • 各タスクの学習データからランダムに抽出したK件をデモンストレーションとして与える
    • LAMBADAやStoryclozeなど教師ありデータが得られない場合はdevelopment setのデータによって条件付け、test setに対して評価を行った。
    • デモンストレーションの数Kは0から100程度まで変化させた
      • 基本的に多くのデモンストレーションが与えられるほど良い結果になったが、常に良い結果だったわけではなかった
      • よってdevelopment setとtest setが分かれているデータではdev setで最適なKの値を探索し、test setに適用した。
      • いくつかのベンチマークでは自然言語の指示をデモンストレーションに加えて入力した。
  • タスク別のやりかた色々
    • 穴埋めなどの選択式のタスクでは、K件の入力+正解の後に、対象の文章を入力し、各選択肢に対する尤度を比較した。
      • 多くのベンチマークではトークンあたりの尤度を比較している。一方でARC, OpenBookQA, RACEベンチマークでは、"Answer: "や"A: "という文字列をanswer_contextとして、以下の値を用いて予測を行う。
    • 2値分類タスクでは、文として意味を持つように、0/1ではなくTrue/Falseという単語を用意して、選択式タスクとして扱った。
    • 自由記述式タスクでは、ビームサーチを用いてタスクを処理した。モデルの評価は各ベンチマークで主に使われる物に倣って、F1 similarityやBLEUを用いている。
  • 最終的な評価は、テストセットが公開されているものについては各サイズのモデル、推論設定(zero, one, few-shot)で評価を行った。
    • テストセットがプライベートなものは、development setに対する評価結果を提示した。
    •  

3. Results

様々なタスクで良い結果が!!!
(タスクが多すぎるので元の論文を見てもらったほうが早い)
 
 
QA
 
Translation
WSC(Winograd-Style Tasks )
 
Common Sense Reasoning - PhysicalQA (PIQA)
 
 
 
 
 

4 Measuring and Preventing Memorization Of Benchmarks

ネットから情報を拾ったためにデータ汚染と戦った話
GPT-3のトレーニングデータセットはインターネットから取得されており、トレーニングとテストの間で重複するデータがある可能性がある。しかし、GPT-3は大量のデータを含んでおり、トレーニングセットをオーバーフィットすることはない。汚染は頻繁に発生する可能性が高いが、その影響は懸念されているほど大きくない可能性がある。クリーンなバージョンで大幅に低下している場合や、潜在的な汚染が非常に高い場合には、問題がある結果を削除する必要がある。

5 Limitations

few-shot性能の向上の課題
GPT-3は、テキスト合成といくつかのNLPタスクにおいて依然として顕著な弱点を抱えており、その制限と長所をよりよく理解するために、500個の未精選の条件付きサンプルのコレクションをリリースすることを提案しています。また、GPT-3には構造的およびアルゴリズム上のいくつかの制限があり、双方向モデルを作成することや、大規模な事前トレーニング済み言語モデルのトレーニング前のサンプルの効率を向上させることが将来の研究の有望な方向性であると述べられています。
 

6. Broader Impacts

GPTの有害な応用の問題の話
 

7. Related Work

関連

8. Conclusion

私たちは、ゼロショット、ワンショット、および少数ショットの設定で多くの NLP タスクとベンチマークで優れたパフォーマンスを示し、場合によっては最先端のファインのパフォーマンスにほぼ匹敵する 1,750 億パラメーターの言語モデルを提示しました。 調整されたシステムだけでなく、オンザフライで定義されたタスクで高品質のサンプルと強力な定性的パフォーマンスを生成します。 微調整を使用しなくても、おおよそ予測可能なパフォーマンスのスケーリング傾向を文書化しました。 このクラスのモデルの社会的影響についても議論しました。 多くの制限や弱点にもかかわらず、これらの結果は、非常に大規模な言語モデルが、適応可能な汎用言語システムの開発における重要な要素である可能性があることを示唆しています。
 

Discussion

  • この後GPT-3.5、GPT-4につながる
    • GPT-3.5
      • GPT3からの性能差はそこまで大きくない?
      • パラメータ数3550億
      • チャットUIで強力な市民権を得る
      • 人間のフィードバックによる強化学習
    • GPT-4
      • 性能がさらに上がる
      • パラメータ数1.2兆?(噂)
      • 複合モデルなのではという噂