データ分析関連のまとめ

データ分析・機械学習周りのもくもく会LTやイベント参加をまとめていきます

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

BERT: Pre-training of Deep Bidirectional Transformers for Language Understandingを読んでまとめました。
解釈間違い等ある時がありますので、その場合指摘いただけると助かります。

目次

背景と概要

BERT:Bidirectional Encoder Representations from Transformers
- 以前の言語表現モデルとは異なり、全層で左と右の両文脈に共同で条件付けを行う事で、ラベル付けされてないtextから深い双方向の表現を事前学習するように設計されている。 - その結果、事前学習されたBERTモデルに1つの追加出力層でfine-tuneをする事で幅広いタスクのためのモデル作成が出来る。 - BERTは大きく以下2ステップを主要なものとして構成 - pre-training - fine-tuning

Introduction

  • 言語モデルには事前学習された言語表現を下流のタスクに適用するために2種類の戦略が存在している。
    • feature-based:ELMo等
      • 事前学習された表現を追加の特徴として含むタスク固有のアーキテクチャを使用
    • fine-tuning:GPT等
      • 最小限のタスク固有のパラメータを導入し事前学習した全パラメータをfine-tuningする
  • 本論文では上記技術では、特にfine-tuningアプローチのために事前学習された表現のパワーが制限されている事を主張している。

    • 主な制限:標準的な言語モデルがunidirectional(一つの方向性)を持っており、これにより事前学習に使用できるアーキテクチャが制限される。
      • transformerのself-attentonで前のトークンのみにattentionする。
      • これらは文レベルのタスクに適しておらず、質問応答の様なタスクで両方向からの情報を必要とする場合に良くない影響をもたらす。
  • BERTでは、“masked language model” (MLM)のpre-training objective(事前学習の目的?)を使用する事で単一方向性制約を緩和する。

    • masked language model:入力からトークンの一部をランダムにmaskし、文脈のみに基づいてmaskされた単語の基の語彙IDを予測する事を目的としている。

Unsupervised Feature-based Approaches

  • 広く適用可能な単語表現の学習は、非ニューラル(Brown et al., 1992; Ando and Zhang, 2005; Blitzer et al., 2006)およびニューラル(Mikolov et al., 2013; Pennington et al., 2014)の手法を含め、数十年に渡って活発な研究が行われてきた。
    • これらのアプローチは文の埋め込み (Kiros et al., 2015; Logeswaran and Lee, 2018)や段落の埋め込みs (Le and Mikolov, 2014)の様な粗い粒度にまで一般化されている。
  • ELMo:従来の単語埋め込み研究を異なる次元(左から右へ、右から左への言語モデルから文脈に敏感な特徴を抽出)に一般化。
    • トークンの文脈的表現は、左から右への表現と右から左への表現を連結
  • Melamud et al. (2016)はLSTMを用いて、左右両方の文脈から単一の単語を予測するタスクを通じて文脈表現を学習。
    • ELMoと同様に特徴ベースなので深い双方向性はない。

Unsupervised Fine-tuning Approaches

  • 初期は特徴ベースのアプローチと同様にラベル付けの無いテキストから単語の埋め込みパラメータをfine-tuningしたもの。
  • 最近では、文脈トークン表現を生成するsentence encodersやdocument encodersはラベル付けの無いテキストからpre-trainingされている。

BERT

  • BERTのフレームワークには2ステップ(pre-trainingとfine-tuning)がある。

    • pre-training:違うpre-trainingタスクに渡りラベル付けの無いデータで訓練される。
    • fine-tuning:BERTモデルが最初にpre-trainingされたパラメータで初期化されており、全パラメータはdownstream tasksからのラベル付きデータを使用してfine-tuningされる。
  • 以下がBERTのpre-trainingとfine-tuning概要

    • 出力層とは別に、pre-trainingとfine-tuningに同じアーキテクチャが使用される。
    • CLS:全入力例の前に追加される特別な記号
      • このトークンの最終的な隠れベクトル: C \in \mathbb{R}^H
    • i番目の入力トークンの最終的な隠れベクトル: T_i \in \mathbb{R}^H
    • sentencesを2つの方法で区別している
      • 1.SEP:特別な区切りトークン(e.g.質問と回答の区切り)
      • 2.それがsentence Aに属するかsentence Bに属するかを示す学習済みのembeddingをそれぞれのトークンに追加

f:id:yhiss:20210110152343p:plain
pre-trainingおよびfine-tuning概要

Model Architecture

BERTのモデルアーキテクチャは、VaswaniらによるAttention is All you needに記載されているものをベースとした多層双方向Transformer encoder。
本論文では層数(即ちTransformer blocks)をL、隠れサイズをH、 self-attention headsの数をAとする。 そして主にBERT_BASE (L=12, H=768, A=12, Total Parameters=110M GPTと同じモデルサイズ)とBERT_LARGE (L=24, H=1024, A=16, Total Parameters=340M)の2種類について記載。

Input/Output Representations

  • BERTにおける入力表現は1トークン列の中で単一文(single sentence)と文(sentences)の組の両方を明確に表現可能。
    • sentences:実際の言語文というよりは任意の連続したtextのspan
    • sequence:BERTへのinput token sequence(single sentenceの場合や2つのsentencesをまとめた場合もある)

与えられたトークンについて入力表現は、対応するトークン・セグメント・位置embeddingsを合計する事で構築される。
以下図に本構造が示されている。

f:id:yhiss:20210110163659p:plain
BERTのinput表現

Pre-training BERT

BERTではpre-training時に2つの教師なしタスクを行っている。

Task #1: Masked LM

  • 深層双方向表現の学習においては、入力トークンの何%かをランダムにmaskし、そのトークンを予測する。この手法を"masked LM" (MLM)と呼ぶ。

    • 実験では、WordPieceトークンの15%をランダムにマスクしている。
    • これにより双方向のpre-trainedモデルが得られるが、pre-trainingとfine-tuningの間にミスマッチが起こるという欠点がある。
      • この軽減のためにmaskされた単語を全て[MASK]トークンに置き換えるのではなく、別の置き換えも行う。
      • トークン位置の中で15%をランダムに選択し、i番目のトークンが選択された場合に
        • 80%の確率で[MASK]トークンに置き換え
        • 10%の確率でランダムなトークンに置き換え
        • 10%の確率で変更しない

Task #2: Next Sentence Prediction (NSP)

  • Question Answering (QA) やNatural Language Inference (NLI)といったタスクは2つの文の関係の理解に基づいており、言語モデルでは直接的に捉える事が出来ない。
    • 上記を理解するモデルを学習させるため、任意の単言語コーパスから生成される二値化された次の分を予測するタスクのpre-trainを行う。
      • 具体例:pre-trainでA・Bの文を選択する際、50%の確率でBはAに続く実際の次の文(IsNext)に、残りの50%はコーパスからのランダムな文(NotNext)を選択する

Pre-training data

  • 以下のコーパスを使用
    • BooksCorpus (800M words)
    • 英語版Wikipedia (2,500M words):テキストのみ

Fine-tuning BERT

BERTでは、self-atttentionを用いて連結したテキストペアをencodeする事により、文の間のbidirectional cross attentionを効果的に含む構造となっている。

各タスクにおいて、タスク固有の入力と出力をBERTにプラグインし、全パラメータをend-to-endでfine-tuneする。

  • 入力においてpre-trainingからの文Aと文Bは以下の例に類似している。
    • 言い換えにおける文ペア
    • entailment(論理的含意、派生体)におけるhypothesis-premise(仮説-仮説?)ペア
    • 質問と回答における質問-文ペア
    • text classificationやsequence taggingにおける縮退したテキスト-∅ペア

Experiment

論文で言及されている実験結果の一部を記載

GLUE

The General Language Understanding Evaluation (GLUE)に適用した際の結果が以下

  • BERT_BASEとBERT_LARGEの両方とも他の手法よりも大幅に上回っている。
  • 特にBERT_LARGEでは訓練データが少ないタスクにおいて、BERT_BASEを上回っている。

f:id:yhiss:20210117150457p:plain
GLUEの結果

SQuAD v1.1、SQuAD v2.0

The Stanford Question Answering Dataset (SQuAD v1.1およびv2.0)に適用した結果が以下。

f:id:yhiss:20210117151335p:plain
SQuADの結果

参考文献

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/pdf/1810.04805.pdf