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を用いた文章の生成モデルに触れてみたい。