[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

>100 Views

October 19, 18

スライド概要

2018/10/19
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Makoto Kawano, Keio University http://deeplearning.jp/

2.

書誌情報 ●タイトル:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding ●著者:Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova ●投稿日:2018/10/11 ●選定理由:Twitterでバズってた ‣ NLP界隈のImageNet Pre-trainedモデル(VGGやResNet)的存在になるか もらしい ‣ Transformerって良くわかってない 2

3.

アウトライン 1.背景 1. Feature-basedアプローチ 2. Fine-tuningアプローチ 1. 入力表現について 2.BERT 2. 事前学習タスク 1. 11種類のNLPタスク 3.実験 2. 提案手法の有効性 3

4.

アウトライン 1.背景 1. Feature-basedアプローチ 2. Fine-tuningアプローチ 1. 入力表現について 2.BERT 2. 事前学習タスク 1. 11種類のNLPタスク 3.実験 2. 提案手法の有効性 4

5.

背景 ●様々な自然言語処理タスクにおいて,事前学習は有効 ‣ 文レベルのタスク:文同士の関係性が大事 • 自然言語推論 • 言い換え ‣ トークンレベル:モデルはトークンレベルで良い出力が求められる • 名付けられたエンティティ認識 • Q&A ●事前学習には二種類のアプローチがある 5

6.

Feature-basedアプローチ ●様々なNLPタスクの素性として利用される ‣ N-gramモデル[Brown et al., 1992]やWord2Vec[Mikolov et al., 2013] • 文や段落レベルの分散表現に拡張されたものある ‣ タスクに合わせて学習させると性能向上[Turian et al., 2010] ●最近では,ELMo[Peters et al., 2017, 2018]が話題に ‣ Context-Sensitiveな素性を獲得 ‣ 複数のNLPタスクでSOTA • QA,極性分類,エンティティ認識 ‣ 既存の素性にConcatすると精度UP 6

7.

ELMo [Peters et al., 2017, 2018] ●BiLSTMをL層積んで,各隠れ層を加重平均する ●獲得したELMoをNLPタスクの入力および隠れ層に連結するだけ or 7

8.

Transformer[Ł.Kaiser et al., arXiv,2017] ●有名なXXX is All You Needの先駆者(今回はAttention) ●RNN構造ではなく,Attention機構のみで構成 ●Encoder-Decoderで構成されている ‣ 左側:Transformer-Encoder ‣ 右側:Transformer-Decoder ●Transformerって結局? ‣ Multi-Head AttentionとPosition-wise FFNの集合体 (より詳細は@_Ryobotさんのブログhttp://deeplearning.hatenablog.com/entry/transformerでお願いします) 8

9.

Fine-tuningアプローチ ●言語モデルの目的関数で事前学習する ‣ そのあと教師ありタスクでfine-tuningする ‣ 少ないパラメータで学習することが可能(らしい,,,) ●最近では,OpenAI GPT[Radford et al. 2018] ‣ GLUEスコアでSOTA ‣ TransformerのDecoderだけを利用[Liu et al., 2018] • 単方向のモデル 9

10.

アウトライン 1.背景 1. Feature-basedアプローチ 2. Fine-tuningアプローチ 1. 入力表現について 2.BERT 2. 事前学習タスク 1. 11種類のNLPタスク 3.実験 2. 提案手法の有効性 10

11.

BERT ●双方向Transformer ‣ 実装:tensor2tensor ‣ リークを防ぐマスクがない ‣ 二種類のモデルを用意 • BERTBASE:GPTと比較用 • BERTLARGE:Googleの本気用 ●ちなみに ‣ 双方向Transformer=Encoder 系列長=バッチと同じ扱いらしい →一つの系列=系列長x特徴量 ‣ 単方向Transformer=Decoder(生成に使えるかららしい) 11

12.

入力表現:一つの文章or文章のペア(QAなど) ●三種類の埋め込みの合計(sum≠concat) ‣ トークン埋め込み:30000種類のWordPiece埋め込み • 分割されたところは「##」で表現 ‣ 単語位置埋め込み:系列長1〜512個の表現 • 位置0には,[CLS]トークンを追加→系列分類問題ではこの埋め込みを利用 ‣ 文区別埋め込み:QAなどの場合の話 • 一文の時はAのみ 12

13.

タスク1:Masked Language Model ●双方向モデルは,left-to-rightモデルや双方向の連結より強力 ‣ 一般的な条件付き言語モデルでは学習できない • 特定の単語予想:p(xn | x1, x2, …, xn-1) • 双方向だと,間接的に複数層の文脈から「自身」をみてしまう ‣ 次の単語ではなく,ランダムで抜かれた単語を予測するモデルにする • Denoising Autoencoderに似ているが,全体を予測するわけではない • ただし,二つの欠点が生じてしまう 13

14.

タスク1:Masked Language Model ●pre-traininig時とfine-tuning時で違いが生じてしまう ‣ Fine-tuningの時に[MASK]トークンは見ない ‣ 常に置換するのではなく,系列のうち15%の単語を置き換える • 例:my dog is hairy -> hairyが選択される • 80%:[MASK]トークンに置換 • my dog is hairy -> my dog is [MASK] • 10%:ランダムな別の単語に置換 • my dog is hairy -> my dog is apple • 10%:置き換えない(モデルに実際に観測される言葉表現に偏らせる) • my dog is hairy -> my dog is hairy 14

15.

タスク1:Masked Language Model ●15%しか予測させないため,学習に時間がかかってしまう ‣ 実験で,MLMが全ての単語を予測するleft-to-rightモデルより時間が かかることを示す ‣ 「時間はかかるけど,それ以上に精度改善するからいいとする」 →🤔🤔🤔🤔🤔 15

16.

タスク2:Next Sentence Prediction ●QAや自然言語推論(NLI):2つの文章の関係性理解が大事 ‣ 言語モデルでは,捉えきれない ‣ 二値のnext sentence predictionタスクを解かせる • 文章AとBが与えられた時に,50%で別のBに置き換える ‣ 解かせると,97%-98%の精度 • QAとNLIで非常に有効であることを実験では示す 16

17.

Pre-training手続き BERTBASE:4台x4TPUx4日x$4.5 BERTLARGE:16台x4TPUx4日x$4.5 🤮🤮🤮 ● データセット:BooksCorpus(800M)+English Wikipedia(2500M) ‣ Billion Word Benchmarkのような文より,ドキュメントレベルが大事 ● 系列長が合計512以下になるように2つの文章をサンプリング ‣ Next sentence predictionのため,AとBの組み合わせは50%で変わる ‣ MLMのためWordPieceトークンに分けられたあと,マスクされる ● バッチサイズ:256(=256文x512系列長=128000単語/バッチ) ‣ 1,000,000ステップ=33億の単語を40エポック学習 ● Adam:LR=1e-4, L2weight_decay=0.01 ● Dropout: 0.1 ● Gelu活性化関数を利用 17

18.

Fine-tuning手続き ● 系列レベルの分類問題 ‣ 固定長の分散表現C∈RHを獲得するため,最初の[CLS]トークンを使う ‣ 新しく追加する層は分類層W∈RKxH+ソフトマックス層のみ ‣ BERTも一緒に学習させる ● スパンorトークンレベルの分類問題 ‣ 各タスクの仕様に合わせて学習させる ● バッチサイズ,学習率,エポック数のみ変更 ‣ ドロップアウト:常に0.1 ‣ 10万以上のラベル付きデータセットの場合はそこまで気にしなくていい ‣ Fine-tuningは高速でできるため,パラメータ探索すべき 18

19.

Fine-tuning手続き 19

20.

アウトライン 1.背景 1. Feature-basedアプローチ 2. Fine-tuningアプローチ 1. 入力表現について 2.BERT 2. 事前学習タスク 1. 11種類のNLPタスク 3.実験 2. 提案手法の有効性 20

21.

実験:8個のNLPベンチマークタスク ●General Language Understainding Evaluationベンチマーク ‣ 訓練/検証/テストに分割済 ‣ 公平な評価が可能 • テストはラベルなしで公開 @_Ryobotさんのツイート https://twitter.com/_Ryobot/status/1050925881894400000 から拝借(非常に助かりました) 21

22.

実験:QA ●Fine-tuning時 ‣ 答えのStart/Endベクトルを学習 22

23.

実験:Named Entity Recognition ●入力された単語のラベルを当てる ‣ Person, Organization, Location, Miscellaneous, Other(割り当てなし) ‣ 5クラス分類問題用の層を追加するのみ 23

24.

効果検証:事前学習タスク ●No NSP:MLMを学習させるだけ ●LTR&No NSP:MLMもなし=left-to-right言語モデルで学習 ‣ Pre-training時:マスクなし, fine-tuning時:左からの情報のみ • 別のパターンも試したけど,精度下がりすぎて意味がなかった ‣ OpenAI GPTと比較することが可能 • データセットの違い:GPTはBooksCorpusのみ • 入力表現の違い:GPTは[CLS][SEP]はfine-tuningのみ&文区別表現なし • Fine-tuning戦略:バッチに含まれる単語やパラメータ探索なし 24

25.

効果検証:事前学習タスク ●LTRはMLMに比べて全然ダメ ‣ QAは,右側の文脈も大事であることがわかる ‣ MRPCは,原因わからないが何度やってもダメだった ‣ BiLSTM追加したらQAは改善したが,それ以外はだめ ●LTR+RTLについて ‣ コストが倍 ‣ QAでRTLはおかしい ‣ 双方向の方が左と右の文脈を 選択することができる 25

26.

効果検証:モデルのサイズ ●データセットが小さくても大きい方が精度高い ‣ 翻訳や言語モデルなどの巨大なデータセットを使うタスクでは当たり前 26

27.

効果検証:学習回数 ●Q:BERTの学習に,128,000単語/バッチx1,000,000回必要か? ‣ A:Yes.50万回より100万回の方が1%も精度高い🤔 ●Q:LTRよりもMLMの方が収束まで時間かかる? ‣ A:Yes.時間はかかるけど,それ以上に精度改善するからいい →🤔🤔🤔🤔🤔 27

28.

効果検証:feature-basedアプローチ ●Feature-basedアプローチも有効なのではないか? ‣ 全てのNLPタスクをTransformer Encoderでは解けない ‣ 計算量コストも,一度計算すれば完了だから使いやすい ●Named Entity RecognitionタスクでPre-training ‣ BERTのパラメータは固定して,2層の768-BiLSTM+分類層追加 ●結果的には最後4つのTransformerの出力を連結 ‣ BERTは,feature-based,fine-tuningアプローチ どっちでも行けることがわかる 28

29.

まとめ ●双方向言語モデルが大事 ●BERTを使えば,タスクSpecificなアーキテクチャいらない ●10月末にPre-trainedモデルが公開されるのでDLしましょう ‣ そして様々なNLPタスクにおけるSOTA戦争を! ●次のキャラは何がくる? 29