NLP を学ぶ - 7

はじめに

前回 BERTについて基礎を学んだが今回はNLP関連の最新モデルをまとめる。
前回に引き続き transformersライブラリを利用する。

NLPモデル

transformersには以下のモデルが実装されている。

NLPモデル
0 BERT
1 OpenAI GPT
2 OpenAI GPT2
3 Transformer XL
4 XLM
5 XLNet
6 RoBERTa
7 DistilBERT
8 CTRL
9 CamemBERT
10 ALBERT
11 XLM-RoBERTa
12 FlauBERT
13 Bart
14 T5
15 ELECTRA

BERT

  • word, position, taskの3種類のembeddingを持つ
  • transformer を重ねたアーキテクチャ
  • Book Corpusと英語wikipediaデータを事前学習に利用
  • 事前学習にmasked language modeling とnext sentence predictionを用いている

OpenAI GPT, OpenAI GPT-2

OpenAI GPT1はOpen AIが発表したTransformerを用いた事前学習モデルである。

  • 学習コーパスは Toronto BookCorpus (学習語彙数 : 40478)
  • 事前学習手法はcausal language modeling
  • positional embeddingとtransformerによる

OpenAI GPT-22

  • 800万のwebページ(WebText データセット)から事前学習。
  • 文章のencodingとしてbit pair encodingを採用
  • 事前学習手法はcausal language modeling
  • GPTからネットワークアーキテクチャを少し修正

Transformer XL

Transformer XL3はTransformerの長期依存に強い性質をそのままに
入力長の制限をなくしたモデルである。

  • Transformerを用いている
  • positional embedding に relative sinusoidal positional embeddingを採用している
  • 入力長の制限がない

解説 : https://webbigdata.jp/ai/post-2729

XLM

XLM4 は複数の言語に対応可能な事前学習モデルである。

  • 事前学習データセットはXNLI5
  • causal language modeling, mask language modeling, translation language modelingの3つのタスクで事前学習
  • word単位でlanguage情報をembeddingする
  • 英語-独語, 英語-仏語, 英語-ルーマニア語間のモデルを持つ

XLNet

XLNet6 はBERTの事前学習時とfine-tuning時のdiscrepancyを改善した事前学習モデルである。

  • transformer-XLの発展形
  • generalized auto regressive modelingによる事前学習
  • 文章内の単語の入れ替えとpositional embeddingを工夫することでautoregressionモデルとautoencodingモデルの両方の利点を持つ
  • 入力長の制限がない

RoBERTa

RoBERTa7はBERTの事前学習を改良したモデルである。

  • モデルのアーキテクチャはBERTと同じ(前処理は少し違う。GPT-2と同じ)
  • BOOKCORPUS, CC-NEWS, OPENWEBTEXT, STORIESデータセットを事前学習に利用。
  • BERTのハイパーパラメータを調整
  • next sentence predictionによる事前学習をなくす。

DistilBERT

DistilBERTはBERTをdistillationしたモデルである。

  • BERTを事前モデルとしてdistillation
  • token-type embeddingsをなくし層数を半分にし40%のモデルサイズの削減を達成。
  • 速度は60%速い
  • 性能はBERTの97%程度
  • 通常のloss, teacherとのlossに加えてstudentとteacherの隠れ状態に対するcos 類似度に対するlossも導入。

CTRL

CTRL8 は条件付き文章生成用の事前学習モデルである。

  • causal language modelingで事前学習
  • controlコードを与えることで文章生成をある程度制御可能。

CamemBERT

CamemBERT9はフランス語のみで学習したBERTである。

  • OSCARというデータセットを使って学習している
  • ハイパーパラメータはRoBERTaと同じ
  • camembert (カマンベール)にかけている

ALBERT

ALBERT10はBERTを改良したモデルである。

  • embeddingの工夫とTransformer層間のパラメータ共有によりパラメータ数を減らす
  • next sentence predictionの代わりにsentence order predictionを導入

XLM-RoBERTa

XLM-RoBERTa11はその名の通りXLMの多言語タスクをRoBERTaで学習したものである。

  • CommonCrawlから得た100言語のデータで学習
  • language embeddingは使用していない

FlauBERT

FlauBERT12 はCamemBERTと同様にフランス語で学習したBERTである。

  • 様々な文献から収集した非圧縮で270GBのデータで事前学習
  • BERTと同じモデルアーキテクチャ
  • next sentence predictionは利用しない

BART

BART13はBERT系とGPT系を複合した事前学習モデルである。

  • sequence-to-sequenceなdenoising autoencoderである。
  • tokenのマスク、文章内の単語の入れ替えなど様々なノイズを与えた文章を復元するという事前学習を行う

T5

T514は文章-文章(text-to-text)変換タスク用の事前学習モデルである。

  • Common CrawlからColossal Clean Crawled Corpusを作成して事前学習に利用
  • 事前学習では文章の一部をマスクしたものを入力とし、マスク部分を反転させた文章を出力とすることで1つの文章をtext-to-textのデータとして扱っている
  • 分類などのタスクもtext-to-textに変換して解く

ELECTRA

ELECTRA15はGANのようにGenerator, Discriminatorの2つのTransformerを持つ事前学習モデルである(adversarialではない)。

  • 事前学習としてreplaced token detection を行う
    • generatorが数単語マスクされた文章から正解文を推定する (masked language modeling)
    • discriminator(ELECTRA本体)にgeneratorが推定した文章を与え、元文章との違いを指摘する
    • discriminator lossによりgeneratorのパラメータ更新はしない(generatorとdiscriminatorは独立したlossで学習)
    • generatorはdiscriminatorを騙そうとするわけではないのでadversarialではない
  • generatorのサイズはdiscriminatorの半分くらいが良いらしい (generatorがうまく学習できすぎるとdiscriminatorは指摘できるところがほとんどなくなるので学習しづらくなる?)

まとめと今後

今回はtransformersライブラリに実装されているtransformerモデルをまとめた。
事前学習モデルの作成にはどのようなlanguage modeling を行うか選択することが重要だと分かった。

  • 事前学習としてmask language modeling (BERT系)と causal language modeling(GPT系)などがよく利用される
  • BERTは重いので軽量なモデルも提案されている(DistilBERT, ALBERT)
  • 多言語や特定の言語に特化したモデルもある
  • 事前学習を工夫することで汎化性能の向上を目指している(XLnext, BART)
  • 最近ではT5やELECTRAなどのそれらと大きく異なる種類の事前学習も提案されている

次回はTransformerを用いた文章の生成モデルに触れてみたい。

参考文献