オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】GPT-2

Index

GPT-2 とは

複数のタスク(Multi Task) やドメイン(Multi Domain) で事前学習を大規模に行うことで、 タスクやドメインごとに行うファインチューニングを 行わない(Zero-Shot Learning)、もしくは少数のデータでのみの学習(Few-Shot Learning) で精度を向上させることを目的とした手法.

アプローチ

考えの根幹となるのは言語モデル.

 n-1 個の系列の文章  { s_{1},\ \cdots,\ s_{n-1} } があったとき、  n 個目の単語を予測する確率モデルは以下のように表現できる.

 p(x)\ =\ \displaystyle \prod_{i=1}^{n} p(s_{n} | s_{1},\ \cdots,\ s_{n-1})



このように言語モデルを条件付き確率で表現できれば、 確率の計算をニューラルネットに行わせば良いと考える.

一般的な確率のフレームワークを以下のように表現できる.

 P(output\ |\ input)



さらに、タスクによって確率の計算方法が異なる(変わる)ことが多いので、条件付確率にタスクも追加する.

 P(output\ |\ input,\ task)


(タスクの条件による確率器の内容の変更は、アルゴリズムやネットワークアーキテクチャレベルの変更も考えられる.)

学習データ

学習データは、多様なドメインに渡るようにし、大規模なデータセットで構築する.

そこで、Web スクレイピングを利用. 安定した品質のデータの取得のため、 ある程度品質が保証されている Web サイトをフィルタリングして、データを取得する.

その結果

  • 4500万のリンクからテキストを取得
  • データクリーニング後に、40GB / 800万のテキスト
  • (Wikipedia は削除)

Byte Pair Encoding (BPE)

ニューラル言語モデルへ入力するための処理として、

などがある.

これらの処理をスキップする方法として、単語を UTF-8 bytes の系列(シーケンス)に変換する Byte Pair Encoding (BPE) がある.

ネットワークアーキテクチャ

Transformer の Decoder をベースにしている GPT-1 を踏襲している.

変更点は、

  • Attention Layer と FFN Layer の後にあるNormalization をそれらの前に移動. (Pre Normalization)
  • Pre Normalization を行うと Decoder Layer の最後の出力が FFN Layer になるので、Normalization を加える.

  • Pre Normalization

  • 語彙を50257に増やす.

  • コンテキストサイズを512から1024に増やす.
  • バッチサイズを64から512に増やす.

学習済みモデル

gpt2-xl-japanese

参考

Web サイト