BioErrorLog Tech Blog

試行錯誤の記録

GPT-2を理解する | 論文メモ: Language Models are Unsupervised Multitask Learners

GPT-2の論文"Language Models are Unsupervised Multitask Learners" の論文要約メモです。

はじめに

今回まとめる論文はこちら:

Language Models are Unsupervised Multitask Learners

GPT-2に関する論文です。

なお初代GPT論文はこちら:

www.bioerrorlog.work

※ 本記事で掲載する図は論文からの引用です。

Language Models are Unsupervised Multitask Learners

概要

  • 背景
    • これまで自然言語処理タスクは、教師あり学習によって解かれてきた
  • 課題
    • これまでの言語モデルは、教師あり学習によるいわば特定領域のみの狭い専門家だった
    • 幅広い領域のジェネラリストな言語モデルを作ることはできていなかった
  • やったこと
    • WebページのスクレイピングデータセットWebTextを作った
    • 教師なし学習によるGPTモデルを構築した
      • WebTextを利用
      • ByteレベルをベースにしたBPEを利用
      • アーキテクチャは初代GPTベースに微改変
      • 最大モデル(1.5B)をGPT-2と呼ぶ
  • 結果
    • 文書理解タスクで、ラベルデータによる追加学習なしに既存モデルに匹敵する結果が出た
    • 言語モデリングタスクでは、多くのデータセットでSOTA達成
    • その他のタスクでもまあまあの結果だった
    • モデルサイズが大きいほど結果がよかった

手法

学習データセットWebTextの作成

  • WebText: RedditからリンクされたWebページをスクレイピングしてデータセットを作成
    • テキストのクオリティを担保するため、カルマ3以上のRedditスレを利用
      • リンクの数: 45 million
      • 2017/12時点のデータを利用
    • HTMLからのテキスト抽出にはDragnetNewspaperを利用
    • 計 8 millionのドキュメント / 40GBのテキストデータ
    • Wikipediaページは排除: すでにWikipedia用のちゃんとしたデータセットがあるので

WebTextの中に見られた、英語-フランス語翻訳情報の例

  • 明示的な翻訳ペアをデータとして用意しなくても、Webページ内にこのような翻訳データがあるので、翻訳タスクにも対応できることを期待

BPE: Byte Pair Encoding

文字列をどうエンコーディングしてモデルへの入力とするか?

課題:

  • Unicode文字列をUTF-8のbyte列として扱う従来の方法は、単語レベルのタスクで性能が出ない
  • BPE: Byte Pair Encodingは、その名前に反してUnicodeのbyte列ではなくコードポイントに対して行われている
    • Unicodeコードポイントに対してBPEする場合、必要な語彙は膨大になってしまう
    • Byteレベルを対象にしたBPEなら、必要な語彙は少なく抑えられる(256個)
  • しかし、BPEを直接byteレベルに適用しても、最適化は上手くいかない
    • 頻出単語と句読点の組み合わせが単語としてまとめられてしまったりする

で、どうしたのか:

  • ByteレベルのBPE
  • ただし、異なるカテゴリ間の結合は排除

これによって、byteレベルアプローチの汎用性を持たせたまま、単語レベルアプローチの性能を目指す。

モデルアーキテクチャ

初代GPTのアーキテクチャをベースにしながら少し変更:

  • Layer normalizationを、各Transformerサブブロックの入力に対して行うよう移動
  • 最後のself-attentionブロックの後にLayer normalizationを追加

初代GPTのアーキテクチャ | 画像はこちらより


また、複数サイズのモデルを作成。 最大サイズのものをGPT-2と呼ぶ。

4サイズのモデルハイパーパラメータ

結果

言語モデリングタスク

各データセットの結果

  • 8つのデータセットのうち7つでSOTA
  • 小さなデータセットでより大きな改善が見られた
    • WikiText2, PTB
  • 長距離依存のデータセットでも大きな改善が見られた
    • LAMBADA, CBT
  • 1BW (One Billion Word Benchmark)の結果は悪かった

CBTの結果とモデルサイズの関係

  • モデルサイズが大きいほど良い結果になった

常識的推論能力

Winograd Schema Challengeの結果

  • Winograd Schema Challenge: 文章のあいまいさを解消する能力から常識的推論力を測定する
  • SOTAを達成

文章読解力

Conversation Question Answering (CoQA)でテスト。

要約タスク

CNN and Daily Mailデータセット要約タスク結果

  • 既存モデルよりもあまり優れない結果
  • 直近の内容にフォーカスしてしまったり、詳細部分をちゃんと分かってなかったりする

翻訳タスク

タスクセット GPT-2の結果
WMT-14 English-French 5 BLEU
WMT-14 French-English 11.5 BLEU
  • WMT-14 English-Frenchの結果は、既存の教師なしモデルより少し低い
  • WMT-14 French-Englishの結果は、多くの教師なしベースラインよりも良いが教師なしSOTAよりは低い

QAタスク

事実を回答するスタイルのタスクにどのくらい答えられるか?

  • データセット: Natural Questions
  • GPT-2の正答率: 4.1% (exact match評価)
    • 最小モデルの結果(1%以下)に比べると良い結果なので、モデルサイズを上げていけば良くなるかもね
  • Retrievalを組み合わせた既存QAシステムは30-50%
    • GPT-2の方がずっと低い結果

Natural QuestionsデータセットへのGPT-2回答のうち、probabilityの高いもの

Generalization vs Memorization

これらの結果は、本当にGPT-2のGeneralization/汎化能力によるものなのか?
学習データセットとテストデータセットが被っていて、Memorization/思い出しによって解いてるのではないか? WebTextは雑多にWebページを大量に取ってきてるわけだし。。

の懸念について検証。

学習データセットとテストデータセットの8グラム重複

  • 学習データ(WebText)と各テストデータセットについて、8グラムのBloomフィルターで重複度合いを検証
  • WebTextの重複は1-6%ほど
    • 平均3.2%
  • 各テストデータセットそのものの学習データは平均5.9%の重複
  • むしろWebTextの方が重複が少なかった

おわりに/所感

以上、論文"Language Models are Unsupervised Multitask Learners"の要約メモでした。

以下は私の個人的なメモです。

  • 筆者たちは何を成し遂げようとしてるのか
    • 教師なし学習/zero-shotによるモデルの汎用的な言語能力を示したい
  • アプローチの鍵となる要素は何か
    • 高クオリティのwebスクレイピングデータWebTextの作成
    • モデルサイズを大きくして、教師なし学習
    • ByteレベルBPE
  • 次に読みたい引用論文は何か
  • 所感
    • 初代GPTがfine-tuningベースだったのに対して、GPT-2ではfine-tuningなしの教師なし学習での能力を示している。 この後のscaling lowと合わせて、モデルをデカくすればまずは上手くいく、の世界に入っていったのがうかがえて面白い。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

Language Models are Unsupervised Multitask Learners

Better language models and their implications

GPT-2: 1.5B release

GitHub - openai/gpt-2: Code for the paper "Language Models are Unsupervised Multitask Learners"