LoginSignup
33
29

More than 5 years have passed since last update.

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Last updated at Posted at 2018-10-20

概要

  • Transformer を用いた双方向言語モデルを提案
    • Bidirectional Encoder Representation from Transformer (BERT)
  • 双方向言語モデル学習タスクを2つ提案
    • Masked Language Model
    • Next Sentence Prediction
  • 提案手法で事前学習した言語モデルを Fine tuning するだけで多数のタスクにおいてSoTA を達成

提案モデル

  1. 双方向言語モデル BERT
  2. 言語モデルへの入力の工夫
  3. 言語モデル学習タスク

1. 双方言語モデル BERT

  • Transformer の encoder 部分をそのまま言語モデルとしたもの ( Fig.1 左端)
  • 先行研究では Transformer, LSTM を言語モデルとして用いているものがあるが,どれも単方向モデルだった (Fig.1 中央・右端) スクリーンショット 2018-10-19 21.21.32.png

2. 言語モデルへの入力の工夫

  • 本論文では2つの Sentence をつなげた Sequence を言語モデルへの入力とする(後述)
  • 入力は 3種類の embedding を Concatしたものを使用 (Fig.2 参照)
    • Token Embeddings (単語情報)
      • WordPiece Embedding を使用
        • 語彙サイズ: 30,000 token
      • 入力Sequence 先頭に CLS token を追加
        • 分類タスクにこのTokenの出力を用いる
      • 2つの Sentence の間には SEP token を追加
    • Position Embeddings (位置情報)
      • 各位置に対する embedding を用意
      • 512番目まで用意
    • Segment Embeddings (Sentenceの相対位置情報)
      • 2つの Sentence を区別できるように 1番目のSentence に A embedding, 2番目のSentence に B embedding を用意
      • 適用するタスクによって,入力する Sentence が1つとなる場合には A embedding のみ使用

スクリーンショット 2018-10-19 21.21.42.png

3. 言語モデル学習タスク

下記2つの言語モデル学習タスクで BERT を学習させる
- Masked Language Model
- Next Sentence Prediction

*実際には2つのタスクを同時に実行させて学習

Masked Language Model

  • 入力シーケンスの 15% を確率的に置き換え,置き換える前の token を予測させるタスク
    • 15% 中 80%:MASK token に置き換え
      • my dog is hairy -> my dog is [MASK]
    • 15% 中 10%:ランダムに別の token に置き換え
      • my dog is hairy -> my dog is apple
    • 15% 中 10%:そのまま
      • my dog is hairy -> my dog is hairy
    • 元:my dog is hairy
    • 入力:my dog is [MASK]
    • 出力:$T_0, T_1, T_2, T_3$
      • 各位置に対する出力ベクトル
    • [MASK] の位置に対応するベクトル $T_3$ に SoftMax をかけることで元の token id 計算,正しい token id を出力できるように学習

Next Sentence Prediction

  • 2つのセンテンス間の関係性を言語モデルに学習させる
  • 2つのセンテンスをつなぎ合わせたものを入力データとし,それらが実際に連続するものか否かを判定する2値分類タスク
    • 50% : 連続する2つのセンテンスをつなぎ合わせたもの
    • 50% : ランダムに2つのセンテンスをつなぎ合わせたもの
  • 繋ぎ方等は上述の言語モデルへの入力の工夫を参照
  • 入力例

スクリーンショット 2018-10-19 23.02.01.png

事前学習と各タスクへのFine tuning

事前学習

  • モデル設定 (L:transformerのブロック数, A: transformerのAttention Head数, H: 隠れ次元のサイズ)

    • BERT_base
      • L=12, H=768, A=12, Total Parameters=110M
    • BERT_large
      • L=24, H=1024, A=16, Total Parameters=340M
  • データセット

    • BookCorpus, English Wikipedia を使用
    • Wikipedia からはテキスト部分のみ抽出 (図のキャプション,表中のテキスト等は除外)
  • 学習する誤差関数

    • 上記2タスクの誤差関数を足し合わせたもの
    • mean masked LM likelihood + mean next sentence prediction likelihood

Fine tuning

k値分類タスクに対して (Fig.3 左上,右上)

  • CLS token に対応するh次元出力ベクトル C を k次元ベクトルに変換する k x h行列 W を新たに用意
  • モデルのk値分類出力 P を下記で算出
  • 分類精度が上がるようにW と 事前学習したBERT を Finetune

$$P = softmax(CW^T)$$

質疑応答タスクに対して (Fig.3 左下)

  • Question と Paragraph が与えられ,Question に対する解答に対応する部分を Paragraph から抜き出すタスク
  • 解答部分の開始,終了位置のスコアを算出するための h次元ベクトル S, E を新たに用意
  • 開始・終了位置の推定精度が上がるように S, E と事前学習した BERT を Finetune
  • 開始・終了部分の推定方法
    • i 番目の token に対応する 出力を $T_i$ とし, 開始スコア $P_i$ を算出
    • 全ての token で最も $P_i$ が大きい位置を開始位置とする
    • 終了位置も同様に S の代わりに E を用いて決定

$$ P_i = \frac{e^{S T_i}}{\sum_j e^{S T_j}} $$

名詞分類タスクに対して (Fig.3 右下)

  • k 値分類タスクと同様に各tokenに対するh次元出力ベクトルを k 次元ベクトルに変換する k x h 行列 W を新たに用意
  • 各 token の分類分類出力を $P_i$ を下記で算出
  • 分類精度が上がるように W と事前学習した BERT を Finetune

$$P_i = softmax(T_iW^T)$$

スクリーンショット 2018-10-19 21.21.58.png

実験結果

  • General Language Understanding Evaluation(GLEU) benchmark において SoTA

    • GLEU( https://gluebenchmark.com/)

      • 既存の様々なNLP分類タスクのデータセットを Dev, Train, Test に分割してまとめて提供してくれる benchmark
      • Test データに対する推定精度は GLEU 側のサーバーで一元的に計算される
      • 各タスクの概要については Ryobotさんが丁寧にまとめて下さっているのでそちらを参照.

        https://twitter.com/_Ryobot/status/1050925881894400000

スクリーンショット 2018-10-19 21.22.07.png

  • SQuAD 質疑応答タスクにおいてもSoTA

スクリーンショット 2018-10-19 21.22.18.png

  • CoNLL-2003 名詞分類タスクにおいてもSoTA

スクリーンショット 2018-10-19 21.22.26.png

33
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
29