深層学習の学習:BERT

BERT

BERTとは、2018年にGoogleが発表した自然言語処理用の深層学習モデルである。

  • 論文タイトル

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

  • 投稿日

2018/10/11

  • 著者

Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova

  • 概要
    • Bidirectional Transformerをユニットにフルモデルで構成したモデル
    • 事前学習タスクとして、マスク言語予測タスク、隣接文判定タスクを与える
    • BERTからTransfer Lerningを行った結果、8つのタスクでSOTA
    • Googleが事前学習済みモデルを公開済み

背景

 様々な言語処理タスクにおいて事前学習が有効である。

  • 文レベルのタスク:文同士の関係性が重要
    • 文章類似度
    • 言い換え
  • トークンレベル:モデルはトークンレベルでよい出力が求められる

事前学習には二種類のアプローチがある。

    • Feature-Based
    • Fine-tuning

Feature-Based アプローチ

 事前学習したモデルでターゲットの文章を読み込ませ、隠れ層の値(特徴量)を抽出して、ターゲットのタスクモデルに渡すアプローチ。
 様々なNLPタスクの素性として利用される。
 最近では、ElMoが話題になった。

Fine-tuningアプローチ

 言語モデルで事前学習し、それをタスクのモデルで転移学習するアプローチ。
 事前学習は、パラメタの初期値として使用される。
 Open AI GPT、BERTで使用されており、最近はこちらが注目されている。

BERTの概要

Fine-tuningアプローチの事前学習に工夫を加えている。
具体的には、双方向トランスフォーマーは、よい学習効果をもたらすが、言語モデルの学習においては、従来のモデルでは未来情報のリークを防ぐためのマスクが無いため、採用が難しい。
そのため、事前学習タスクにおいて工夫をする必要があった。
f:id:tibet:20211228170042p:plain

入力表現

3種類のEmbeddingのSumを入力とする。

  • Token Embedding: WordPieceでTokenizationしたものをEmbedding
  • 単語位置埋め込み:系列長1-512の表現
  • 文区別埋め込み:1文目、2分目の区別
事前学習

1. 空欄語予測(Masked Language Modeling (MLM))

  • 文章中の単語のうち、15%をMASK対象に選ぶ。選ばれた15%の単語の位置にはフラグを立てておく。
  • 選んだ単語のうち、80%を[MASK]に置き換え、10%を他の単語に置き換え、残り10%は置き換えない。

文章を入力としてフラグが点いている位置のオリジナルの入力単語が何であるかを出力する。

  • 背景

双方向モデルは、left-to-rightモデルや双方向にconcatしたものより一般に強力である。しかし、双方向だと複数層の文脈から自分を見てしまうため、学習出来ない。
そこで発想を転換し、次の単語ではなく、ランダムに抜かれた単語を予測するモデルにする
一方でこの方法を採用すると、単語全体の15%しか学習に使えないため、学習に時間がかかる。

2.隣接文予測(Next Sentence Prediction(NSP))
2つの文章の関係性理解が重要だが、言語モデルのタスクのみではとらえられないという問題点があった。
そこで、2つの連なる文章のペアに対して、隣接文を50%の確率でシャッフルし、隣接文であるかのT/Fを出力させた。

BERTの具体的な事前学習方法
  • データセット:BooksCorpus+English Wikipedia
  • 事前処理
    • 入力文章の合計系列長が512以下になるように2つの文章をサンプリング
    • Next Sentence Predictionのため、文章1と文章2の組み合わせは50%の確率で変わる
    • MLMのため、Wordpieceトークンに分けられた後マスクされる
  • バッチサイズ:256(256×512=128,000単語/バッチ)
  • 1,000,000ステップ=33億個のたんごを40エポック学習
  • 活性化関数:GeLu

有効性

8個のNLPベンチマークタスクで、タスクspecificなアーキテクチャを組むことなく一気にSOTA達成