概要 Language Models are Unsupervised Mmultitask Learners(2018)
April 1, 2023Zero-shotかつマルチタスク用のモデルとしてGPT-1の後経のGPT-2を提案した。 マルチタスク学習は、複数のタスクむけにモデルを訓練する手法である。 特徴の入力形式はタスクによらず同じであり、タスク間で知識を補うことで各タスクの汎化性能を向上させる。 GPT-1の用途がファインチューニングであるため、GPT-1とGPT-2では解けるタスクが違う。 学習のために、45,000,000件のリンクを含む高品質なコーパスであるWebTextを人の手もかりて用意した。 GPT-2のアーキテクチャは、GPT-1に層正規化の位置を変え、residual layerの重みをスケールしただけであり、GPT-1と大きな違いはない。
あるタスクを言語モデルにならって表現する場合、条件付き確率\(p\)で\(p(\text{output}|\text{input})\)と表現できる。 マルチタスクであれば\(p(\text{output}|\text{input}, \text{task})\)である。 たとえば、McCann, B.らは、翻訳であれば(translate to french, english text, french text), 質問であれば(answer the question, document, answer)のように、タスクの指示、入力文、出力文をトークンでつなげた系列であらゆるタスクを統一的に表現することで、モデルに複数のタスクを訓練できることを示した。 GPT-2の入力形式もMcCann, Bらにならう。
大きいだけでなく品質もよい学習データが必要であったため、データセットWebTextを作成した。 WebTextは、karmaが3以上のRedditの外部リンクをスクレイピングし、それを人の手で編集、フィルタしたコーパスである。 既存の大規模なコーパスにCommon Crawlがあるものの、Trieu H. Trinhらによると学習に足る知的な文書は少ない。
出現頻度の低い単語や未知語に対応するために、バイト単位のByte Pair Encoding(BPE)を使用した。 BPEは、文を文字列に分解し、次に最も出現回数の高い隣接文字をペアとしてマージする。 これを期待する語彙集合の要素数に到達するまで繰り返す。 ただし、BPEをそのまま適用すると、dog., dog!, dog?のように同じ単語に対応する複数のバイト列が生成されすぎたので、同じカテゴリのバイト列同士のみがマージの対象になる。
モデルのアーキテクチャは、GPT-1とほとんど変わらず、Transformerのデコーダからなる。 変更点は、層正規化の位置と、残差結合層の重みのスケールである。 既存の層正規化を各ブロックの入力部分に移し、最後の注意機構の後に新たな層正規化を追加した。 また、残差層の数を\(N\)とすると、残差結合層の重みを\(1/\sqrt(N)\)だけスケールし初期化する。
論文のリンク
雑記
モデル自体ではなく、モデルに入力するデータの品質を用意したことが貢献になったのだろう。 入力文を表現するために使用されたByte Pair Encoding(BPE)はSentencePieceでも使われている。
スクレイピングに使用したツールは、newspaperとdragnetである。 WebTextの一部は、公開されている。 各サンプルは、入力と出力を"\n\n"で連結した2つの文からなる。