BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Pretraining Using BERT, Fine-Tuning BERT for Downstream Tasks
BERT:深度雙向轉換器的預訓練用於語言理解,由Google AI Language提出的BERT,發表於2019年NAACL,並超過31000次引用
- BERT,即雙向編碼器變換(Bidirectional Encoder Representations from Transformers),通過在所有層次上聯合條件地對未標記文本進行預訓練,從而生成深度的雙向表示。
- 這個預訓練的BERT模型可以通過僅添加一個額外的輸出層進行微調,創建出在各種任務上具有最先進性能的模型,如問答和語言推理,而無需進行大量的特定任務架構修改。
這是一種自監督學習,其中預設任務是語言模型學習,而具體任務則是通過微調進行的下游任務。
Outline
- BERT: Bidirectional Encoder Representations from Transformers
- Pretraining BERT
- Fine-Tuning BERT
- SOTA Comparison
- 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表示。
- 有兩種模型大小可供評估:
- BERTBASE(L=12,H=768,A=12,總參數=110M),與OpenAI的GPT具有相同的模型大小,用於比較目的。BERT的Transformer使用雙向self-attention,而GPT的Transformer使用了限制的self-attention,其中每個token只能關注其左側的內容。
- BERTLARGE(L=24,H=1024,A=16,總參數=340M)。
1.3. Input Representation
- 為了使BERT能夠處理各種下游任務,輸入表示能夠明確表示單個句子和一對句子(例如,<Question, Answer>)的序列。
- 使用具有30,000個令牌詞彙的WordPiece嵌入(Wu et al.,2016)。
- 每個序列的第一個令牌始終是一個特殊的分類token([CLS])。
- 使用一個特殊的token([SEP])進行分隔。
對於給定的token,其輸入表示是通過將相應的token、segment和position 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
對於每個任務,任務特定的輸入和輸出只需插入到BERT中,並且所有參數都進行端到端的微調。
- 在輸入端,預訓練的句子A和句子B對應於(1)重述中的句子對,(2)蘊含中的假設-前提對(3)問答中的問題-段落對,以及(4)文本分類或序列標記中的退化文本-Ø對。
- 在輸出端,token表示被餵入一個輸出層,用於token級任務,例如序列標記或問答,而[CLS]表示則被餵入一個輸出層,用於分類,例如蘊涵或情感分析。
- 相較於預訓練,微調的成本相對較低。在一個單一的Cloud TPU上,所有論文中的結果最多只需1小時,或在GPU上幾小時就能複製。
4. SOTA Comparison
4.1. 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 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 1.1的問題定義,允許提供的段落中可能不存在簡短答案,使問題更現實
相較於先前最佳系統,觀察到了+5.1的F1改進。
4.4. SWAG
- 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
- “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
- 更大的模型在所有四個數據集上都帶來嚴格的準確度提升,即使對於MRPC,它只有3,600個標記的訓練示例,並且與預訓練任務差異很大。
- 這是第一個令人信服地證明,將模型擴展到極端大小也會在非常小規模的任務上實現顯著的改進,前提是模型已經得到足夠的預訓練。
5.3. Feature-based Approach with BERT
- 到目前為止,所有的BERT結果都使用了微調方法,即在預訓練模型上添加了一個簡單的分類層,並且在下游任務上聯合微調所有參數。
- 然而,這裡評估了基於特徵的方法,即從預訓練模型中提取固定特徵,有兩個原因:
- 首先,並非所有任務都可以通過Transformer編碼器架構輕鬆表示。
- 其次,主要的計算優勢可以被預先計算。
- 特徵為基礎的方法是通過從BERT的一個或多個層中提取激活,而不對BERT的任何參數進行微調來應用。
- 這些embeddings內容被用作分類層之前的一個隨機初始化的雙層768維雙向LSTM的輸入。
- 表現最佳的方法是將預訓練Transformer的前四個隱藏層的token表示串接在一起,與微調整個模型相比僅差0.3的F1 Score。
- 這表明BERT對微調和基於特徵的方法都是有效的。