BERT論文筆記

  • 2019 年 10 月 4 日
  • 筆記

作者:太子長琴(NLP演算法工程師)

Bert, Pre-training of Deep Bidirectional Transformers for Language Understanding Note

Paper: https://arxiv.org/pdf/1810.04805.pdf

Code: https://github.com/google-research/bert

Bert 的核心思想:MaskLM 利用雙向語境 + MultiTask。

Abstract

BERT 通過聯合訓練所有層中的上下文來獲取文本的深度雙向表示。

Introduction

兩種應用 pre-trained model 到下有任務的方法:

  • feature-based:比如 ELMo,將 pre-trained 表示作為額外的特徵
  • fine-tuning:比如 OpenAI GPT,引入少量特定任務參數,在下游任務中 fine-tuning 所有的參數

現在的技術有個限制,就是只能採用從左到右的單向機制,這對有些任務是不適合的,比如問答。

Bert 通過 「masked language model」 緩和了這個限制,即隨機 mask 輸入中的一些 token,目標是只根據上下文(左邊和右邊)預測 mask 掉的原始 vocabulary id。

同時,還聯合訓練了一個 「next sentence prediction」 的任務用來表示文本對。

Related Work

Unsupervised Feature-based Approaches

  • Word Embedding:
    • 從左到右的語言模型(Mnih and Hinton,2009)
    • 從上下文中區分出正確的中心詞(Mikolov,2013)
  • Sentence Embedding:
    • 對候選的一組下一句進行排序(Jernite, 2017; Logeswaran and Lee, 2018)
    • 給定句子從左到右生成下一句的詞(Kiors, 2015)
    • 去噪自動編碼(Hill, 2016)

ELMo 使用從左到右和從右到左兩個語言模型,每個 token 的上下文表示都與兩個語言模型關聯。

Melamud (2016) 通過一個從左右上下文預測一個單獨的詞的任務(使用 LSTMs)學習上下文表示。

Unsupervised Fine-tuning Approaches

  • 直接從語料中訓練 embedding(Collobert and Weston, 2018)
  • 從文本中訓練上下文表示,在下游任務中 fine-tuning(Dai and Le, 2015; Howard and Ruder, 2018; Radford, 2018)
  • OpenAI GPT (Radford, 2018)

Transfer Learning from Supervised Data

一些有效的遷移學習:

  • 自然語言推理
  • 機器翻譯

BERT

兩步:

  • pre-training:基於多任務
  • fine-tuning:用 pre-trained 參數初始化,然後在有監督任務上精調

Model Architecture

  • 多層雙向 Transformer encoder
  • Layer number (Transformer blocks): L (Base 12, Large 24)
  • hidden size: H (Base 768, Large 1024)
  • number of self-attention heads: A (Base 12, Large 16)

Input/Output Representations

  • 輸入句子對(比如 《問題,答案》)作為一組 token 序列,「一句」 是指相鄰的文本,而不是實際中的 「一句」
  • 使用 WordPiece Embedding (Wu, 2016)
  • 最後一個隱層的狀態作為序列的表示
  • 兩種方法將句子對被處理成一個句子:用特殊標記(SEP)分開;或用一個新的 Embedding 標記每個 token 屬於哪一句
  • 每一個 token 的輸入表示由 token + segment + position 的 Embedding 組成

Pre-training BERT

沒有使用自左向右或相反方向的語言模型,而是使用了兩個無監督任務。

Task #1: Masked LM (MLM)

隨機 mask 輸入中一定比例(15%)的 token,然後預測這些 token,最後的隱層向量將餵給 softmax。

只預測 mask 掉的 token,而不是重建整個輸入。

但有個問題是 fine-tuning 的時候沒有 mask,所以並不是簡單地直接把 mask 的 token 替換成 [MASK]

  • 80% 替換為 [MASK]
  • 10% 選擇一個隨機 token
  • 10% 依然使用原來的 token

Task #2: Next Sentence Prediction (NSP)

所有的句子對中,50% 是上下句關係,50% 是隨機的下一句。

Pre-training data

使用文檔級別的 corpus 而不是隨機化的句子級別的 corpus。

Fine-tuning BERT

pre-training 中的句子 A 和 B 在不同任務中相當於:

  • 釋義:句子對
  • 蘊涵:假設-前提對
  • 問答:問題-段落對
  • 文本分類、序列標記:文本-空對

Experiments

  • GLUE: 一組自然語言理解任務。
  • SQuAD v1.1: 問答任務。
  • SQuAD v2.0: 無短答案的問答任務。
  • SWAG: 常識推理任務。

Ablation Studies

Effect of Pre-training Tasks

Effect of Model Size

Feature-based Approach with BERT

相關文章:ERNIE Tutorial(論文筆記 + 實踐指南) BERT_Paper_Chinese_Translation: BERT論文中文翻譯版

原文鏈接:

https://yam.gift/2019/08/05/Paper/2019-08-05-Bert-Paper/