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

Pretraining Using BERT, Fine-Tuning BERT for Downstream Tasks

Moris
NLP & Speech Recognition Note
11 min readJan 6, 2024

--

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

BERT:深度雙向轉換器的預訓練用於語言理解,由Google AI Language提出的BERT,發表於2019年NAACL,並超過31000次引用

  • BERT,即雙向編碼器變換(Bidirectional Encoder Representations from Transformers),通過在所有層次上聯合條件地對未標記文本進行預訓練,從而生成深度的雙向表示。
  • 這個預訓練的BERT模型可以通過僅添加一個額外的輸出層進行微調,創建出在各種任務上具有最先進性能的模型,如問答和語言推理,而無需進行大量的特定任務架構修改。

這是一種自監督學習,其中預設任務是語言模型學習,而具體任務則是通過微調進行的下游任務。

Outline

  1. BERT: Bidirectional Encoder Representations from Transformers
  2. Pretraining BERT
  3. Fine-Tuning BERT
  4. SOTA Comparison
  5. Ablation Study

1. BERT: Bidirectional Encoder Representations from Transformers

1.1. BERT的訓練步驟

  • BERT框架中有兩個步驟:預訓練和微調。
  • pre-training期間,模型在未標記的數據上進行訓練。
  • 對於fine-tuning,BERT模型首先使用預訓練的參數進行初始化,然後使用來自下游任務的標記數據進行微調。

1.2. BERT模型架構

BERT使用了一個雙向的Transformer。OpenAI的GPT使用了一個由左到右的Transformer。ELMo則使用了獨立訓練的由左到右和由右到左的LSTM的串接。

  • BERT的模型架構是基於 Transformer的多層雙向編碼器。實現方式與原始版本幾乎相同。
  • 層數(即 Transformer塊)的數量用L表示,hidden size用H表示,self-attention heads用A表示。
  • 有兩種模型大小可供評估:
  1. BERTBASE(L=12,H=768,A=12,總參數=110M),與OpenAI的GPT具有相同的模型大小,用於比較目的。BERT的Transformer使用雙向self-attention,而GPT的Transformer使用了限制的self-attention,其中每個token只能關注其左側的內容。
  2. BERTLARGE(L=24,H=1024,A=16,總參數=340M)。

1.3. Input Representation

BERT input representation
  • 為了使BERT能夠處理各種下游任務,輸入表示能夠明確表示單個句子和一對句子(例如,<Question, Answer>)的序列。
  • 使用具有30,000個令牌詞彙的WordPiece嵌入(Wu et al.,2016)。
  • 每個序列的第一個令牌始終是一個特殊的分類token([CLS])。
  • 使用一個特殊的token([SEP])進行分隔

對於給定的token,其輸入表示是通過將相應的token、segmentposition embeddings相加來構造的。如上圖所示,這種構造的可視化。

2. BERT的預訓練

2.1. Masked LM (MLM)

  • 輸入token的一部分會被隨機遮罩,然後對這些屏蔽的token進行預測。
  • 在每個序列中,隨機屏蔽15%的WordPiece token
  • 只預測被屏蔽的詞語,而不是重構整個輸入。
  • 如果選擇了第i個token,則將第i個token替換為(1)有80%的機率將該token替換為 [MASK] token(2)10%的機率替換為隨機token (3)10%的機率保持不變。然後,Ti將用於使用cross entropy loss預測原始token

2.2. Next Sentence Prediction (NSP)

  • 下游任務,如問答(QA)和自然語言推理(NLI),是基於理解兩個句子之間的關係,而這並不是語言建模直接捕捉的。首先進行了二元化的下一句預測任務的預訓練,這可以從任何單語語料庫輕鬆生成。
  • 具體來說,在選擇每個預訓練示例的句子A和B時,有50%的機率B是實際跟在A後面的下一句(標記為IsNext),另外50%的機率B是來自語料庫的隨機句子(標記為NotNext)。

2.3. Pretraining Dataset

  • 對於預訓練語料庫,使用了BooksCorpus(800M字)(Zhu et al., 2015)和English Wikipedia(2,500M字)
  • 對於維基百科,僅提取文本段落,忽略列表、表格和標題。

3. Fine-Tuning BERT

Illustrations of Fine-tuning BERT on Different Tasks

對於每個任務,任務特定的輸入和輸出只需插入到BERT中,並且所有參數都進行端到端的微調。

  • 在輸入端,預訓練的句子A和句子B對應於(1)重述中的句子對,(2)蘊含中的假設-前提對(3)問答中的問題-段落對,以及(4)文本分類或序列標記中的退化文本-Ø對。
  • 在輸出端,token表示被餵入一個輸出層,用於token級任務,例如序列標記或問答,而[CLS]表示則被餵入一個輸出層,用於分類,例如蘊涵或情感分析。
  • 相較於預訓練,微調的成本相對較低在一個單一的Cloud TPU上,所有論文中的結果最多只需1小時,或在GPU上幾小時就能複製

4. SOTA Comparison

4.1. GLUE

GLUE通過評估服務器進行測試的結果
  • 在微調過程中,只引入了分類層的權重 W,其中 K 是標籤的數量。使用標準的分類損失函數 C 和 W,即 log(softmax(CW^T))。

BERTBASE和BERTLARGE在所有任務上均大幅優於先前的頂尖系統,分別相對於先前的最新技術提高了4.5%和7.0%的平均準確率。

  • 需要注意的是,BERTBASE和OpenAI的GPT在模型架構上幾乎相同,除了attention masking。
  • 對於最大且報告最廣泛的GLUE任務MNLI而言,BERT在絕對準確率上提高了4.6%。根據GLUE的官方排行榜,BERTLARGE的得分為80.5,而OpenAI的GPT在撰寫本文時的得分為72.8。

4.2. SQuAD 1.1.

SQuAD 1.1的結果。BERT合奏是使用不同的預訓練檢查點和微調種子的7個系統
  • 斯坦福問答數據集(SQuAD v1.1)是一個由10萬個眾包問題/答案對組成的集合。
  • 輸入的問題和段落被表示為一個單一的打包序列,其中問題使用A嵌入,段落使用B嵌入。
  • 在微調過程中,只引入了開始向量S和結束向量E。
  • 詞i是答案範圍開始的機率,計算方式是將Ti和S進行內積,然後對段落中的所有詞進行softmax:
  • 結束的答案範圍也是類似的。
  • 從位置i到位置j的候選範圍的得分定義如下:
  • 使用得分最高的範圍j≥i,作為預測。

最佳的BERT在集成中比領先的系統提高了+1.5 F1,在單一系統中提高了+1.3 F1。事實上,單一BERT模型在F1分數方面超越了頂級集成系統。

4.3. SQuAD 2.0

SQuAD 2.0的結果

SQuAD 2.0任務擴展了SQuAD 1.1的問題定義,允許提供的段落中可能不存在簡短答案,使問題更現實

相較於先前最佳系統,觀察到了+5.1的F1改進。

4.4. SWAG

SWAG開發和測試的準確性 ( 使用100個樣本測量人類表現)
  • Situations With Adversarial Generations (SWAG)數據集包含11.3萬個句子對完成示例,用於評估基於常識推理的推斷。
  • 給定一個句子,任務是在四個選擇中選擇最合理的繼續。
  • 在SWAG數據集上進行微調時,構造了四個輸入序列,每個序列都包含給定句子(句子A)和可能的繼續(句子B)的串聯。

BERTLARGE比作者的baseline ESIM+ELMo系統提高了+27.1%,比OpenAI的GPT提高了8.3%。

5. Ablation Study

5.1. Effect of Pre-Training Tasks

使用BERTBASE架構的消融預訓練任務
  • “No NSP”是在沒有下一句預測任務的情況下進行的訓練。
  • “LTR&No NSP”被訓練為一個從左到右的語言模型,沒有下一句預測,就像OpenAI的GPT一樣。
  • “+ BiLSTM”在微調期間在“LTR + No NSP”模型上添加了一個隨機初始化的雙向LSTM。
  • 在QNLI,MNLI和SQuAD 1.1上,去除NSP會嚴重影響性能。
  • LTR模型在所有任務上的性能都比MLM模型差,MRPC和SQuAD的性能下降較大。

5.2. Effect of Model Size

來自5個隨機重啟的對GLUE進行微調的平均開發集準確性
  • 更大的模型在所有四個數據集上都帶來嚴格的準確度提升,即使對於MRPC,它只有3,600個標記的訓練示例,並且與預訓練任務差異很大。
  • 這是第一個令人信服地證明,將模型擴展到極端大小也會在非常小規模的任務上實現顯著的改進,前提是模型已經得到足夠的預訓練。

5.3. Feature-based Approach with BERT

CoNLL-2003命名實體識別結果
  • 到目前為止,所有的BERT結果都使用了微調方法,即在預訓練模型上添加了一個簡單的分類層,並且在下游任務上聯合微調所有參數。
  • 然而,這裡評估了基於特徵的方法,即從預訓練模型中提取固定特徵,有兩個原因:
  1. 首先,並非所有任務都可以通過Transformer編碼器架構輕鬆表示。
  2. 其次,主要的計算優勢可以被預先計算。
  • 特徵為基礎的方法是通過從BERT的一個或多個層中提取激活,而不對BERT的任何參數進行微調來應用。
  • 這些embeddings內容被用作分類層之前的一個隨機初始化的雙層768維雙向LSTM的輸入。
  • 表現最佳的方法是將預訓練Transformer的前四個隱藏層的token表示串接在一起,與微調整個模型相比僅差0.3的F1 Score。
  • 這表明BERT對微調和基於特徵的方法都是有效的。

--

--

Moris
NLP & Speech Recognition Note

An AI engineer who loves deep learning technology and is willing to share resources and learn new technologies