天天看點

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

論文位址:

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(第一版)

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(第二版)

前言

本文基于是Google在2019年5月發表的版本,與2018年11月發表的第一版略有不同,第二版将第一版中的3、4章中的一些細節,如預訓練和微調過程、資料集描述、部分消融實驗等放到了附錄裡。網上的翻譯大多基于第一版,本文基于第二版,對論文大部分内容進行了翻譯,也稍有一些删減或補充。

Abstract

BERT 表示來自 Transformer 的雙向編碼器表示(Bidirectional Encoder Representations from Transformers)。

BERT 旨在通過聯合調節所有層中的左右上下文來預訓練來自未标記文本的深度雙向表示。 是以,隻需要一個額外的輸出層,就可以對預訓練的 BERT 表示進行微調,進而為廣泛的任務(比如回答問題和語言推斷任務)建立最先進的模型,而無需對特定于任務進行大量模型結構的修改。

BERT 的概念很簡單,但實驗效果很強大。它重新整理了 11 個 NLP 任務的目前最優結果,包括将 GLUE

基準提升至 80.4%(7.6% 的絕對改進)、将 MultiNLI 的準确率提高到 86.7%(5.6% 的絕對改進),以及将 SQuAD v1.1 的問答測試 F1 得分提高至 93.2 分(提高 1.5 分)——比人類表現還高出 2 分。

1 Introduction

語言模型預訓練可以顯著提高許多自然語言處理任務的效果。這些任務包括句子級任務,如自然語言推理和釋義,目的是通過句子的整體分析來預測句子之間的關系,以及标記級任務,如命名實體識别和 SQuAD 問答,模型需要在标記級(token-level)生成細粒度的輸出。

現有的兩種方法可以将預訓練好的語言模型表示應用到下遊任務中:基于特征(feature-based)和基于微調(fine-tuning)。基于特征的政策(如 ELMo)使用特定于任務的模型結構,其中包含預訓練的表示作為附加特征。微調政策(如生成預訓練 Transformer (the Generative Pre-trained Transformer,OpenAI GPT))引入了最小的特定于任務的參數,通過簡單地微調預訓練參數在下遊任務中進行訓練。 在之前的研究中,兩種政策在預訓練期間使用相同的目标函數,利用單向語言模型來學習通用語言表達。

因為标準語言模型是單向的,這就限制了可以在預訓練期間可以使用的模型結構的選擇。例如,在 OpenAI GPT 中,作者使用了從左到右的模型結構,其中每個token隻能關注 Transformer 的self-attention層中該token前面的token。這些限制對于句子級别的任務來說是次優的(還可以接受),但當把基于微調的方法用來處理token級别的任務(如 SQuAD 問答)時可能會造成不良的影響,因為在token級别的任務下,從兩個方向分析上下文是至關重要的。

受完形填空任務的啟發,BERT 通過提出一個新的預訓練任務來解決前面提到的單向限制:“遮蔽語言模型”(MLM,masked language model)。遮蔽語言模型從輸入中随機遮蔽一些token标記,目的是僅根據被遮蔽标記的上下文來預測它對應的原始詞彙的 id。與從左到右的語言模型預訓練不同,MLM 目标允許表示融合左右上下文,這允許我們預訓練一個深層雙向 Transformer。除了遮蔽語言模型之外,我們還提出了一個聯合預訓練文本對來進行“下一個句子預測”的任務。

本文的貢獻:
  • 論證了雙向預訓練對語言表征的重要性。
  • 預訓練的表示消除了許多特定于任務的高度工程化的模型結構的需求。BERT 是第一

    個基于微調的表示模型,它在大量的句子級和标記級任務上實作了最先進的性能,優于許多特定

    于任務的結構的模型。

  • BERT 在 11 個 NLP 任務上有提升。

2 Related Work

預訓練通用語言表示有很長的曆史,本節僅簡要回顧最流行的方法。

2.1 Unsupervised Feature-based Approaches

經過預訓練的詞嵌入被認為是現代 NLP 系統的一個不可分割的部分,詞嵌入(word embedding)提供了比從頭開始學習的顯著改進。

這些方法已被推廣到更粗的粒度,如句子嵌入(sentence embedding)或段落嵌入(paragraph embedding)。與傳統的單詞嵌入一樣,這些學習到的表示通常也用作下遊模型的輸入特征。

ELMo從不同的次元對傳統的詞嵌入研究進行了概括。他們建議從語言模型中提取上下文敏感的特征。在将上下文嵌入與特定于任務的架構內建時,ELMo 為幾個主要的 NLP 标準提供了最先進的技術,包括在 SQuAD 上的問答,情感分析,和命名實體識别。

2.2 Unsupervised Fine-tuning Approaches

語言模型遷移學習(LMs)的一個最新趨勢是,在對受監督的下遊任務的模型進行微調之前,先對 LM目标上的一些模型構造進行預訓練。這些方法的優點是隻有很少的參數需要從頭開始學習。至少部分得益于這一優勢,OpenAI GPT 在 GLUE 基準測試的許多句子級任務上取得了此前最先進的結果。

2.3 Transfer Learning from Supervised Data

雖然無監督預訓練的優點是可用的資料量幾乎是無限的,但也有研究表明,從具有大資料集的監督任

務中可以進行有效的遷移,如自然語言推理和機器翻譯。在NLP之外,計算機視覺研究也證明了從大型預訓練模型中進行遷移學習的重要性,有一個有效的方法可以微調在 ImageNet 上預訓練的模型。

3 BERT

Model Architecture

BERT 的模型結構是一個多層雙向Transformer 編碼器。

在本文中,我們将層數(即 Transformer 塊)表示為 L,将隐藏尺寸表示為 H、自注意力頭數表示為 A。在所有實驗中,我們将前饋/濾波器尺寸設定為 4H,即 H=768 時為 3072,H=1024 時為 4096。我們主要報告在兩種模型尺寸上的結果:

  • B E R T B A S E BERT_{BASE} BERTBASE​: L=12, H=768, A=12, 總參數=110M
  • B E R T L A R G E BERT_{LARGE} BERTLARGE​: L=24, H=1024, A=16, 總參數=340M

為了比較, B E R T B A S E BERT_{BASE} BERTBASE​ 的模型尺寸與 OpenAI GPT 相當。然而,BERT Transformer 使用雙向自注意力機制,而 GPT Transformer 使用受限的自注意力機制,導緻每個 token 隻能關注其左側的語境。

我們注意到,雙向 Transformer 在文獻中通常稱為「Transformer 編碼器」,而隻關注左側語境的版本則因能用于文本生成而被稱為「Transformer 解碼器」。

Input/Output Representations

我們的輸入表示能夠在一個标記序列中清楚地表示單個文本句子或一對文本句子(例如,[Question,

Answer])。(注釋:在整個工作中,“句子”可以是連續的任意跨度的文本,而不是實際語言意義上的句子。“序列”是指輸入到 BERT 的标記序列,它可以是單個句子,也可以是兩個句子組合在一起。)通過把給定标記對應的标記嵌入、句子嵌入和位置嵌入求和來構造其輸入表示。

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • 我們使用含 3 萬個标記詞語的 WordPiece 嵌入(Wu et al., 2016)。我們用 ## 表示拆分的單詞

    片段。

  • 我們使用學習到的位置嵌入,支援的序列長度最長可達 512 個标記。
  • 每個序列的第一個标記始終是特殊分類嵌入([CLS])。該特殊标記對應的最終隐藏狀态(即,

    Transformer 的輸出)被用作分類任務中該序列的總表示。對于非分類任務,這個最終隐藏狀态将

    被忽略。

    句子對被打包在一起形成一個單獨的序列。我們用兩種方法區分這些句子。方法一,我們用一個

    特殊标記([SEP])将它們分開。方法二,我們給第一個句子的每個标記添加一個可訓練的句子 A

    嵌入,給第二個句子的每個标記添加一個可訓練的句子 B 嵌入。

  • 對于單句輸入,我們隻使用句子 A 嵌入。

3.1 Pre-traing BERT

Task #1: Masked LM

直覺上,我們有理由相信,深度雙向模型嚴格來說比從左到右模型或從左到右模型結合從右到左模型

的淺層連接配接更強大。不幸的是,标準條件語言模型隻能從左到右或從右到左進行訓練,因為雙向條件

作用将允許每個單詞在多層上下文中間接地“看到自己”。

為了訓練深度雙向表示,我們采用了一種簡單的方法,即随機遮蔽一定比例的輸入标記,然後僅預測

那些被遮蔽的标記。我們将這個過程稱為“遮蔽語言模型”(masked LM, MLM),盡管在文獻中它通常被稱為完形填詞(Cloze)任務(Taylor, 1953)。在這種情況下,就像在标準語言模型中一樣,與遮蔽标記相對應的最終隐藏向量被輸入到與詞彙表對應的輸出 softmax 中(也就是要把被遮蔽的标記對應為詞彙表中的一個詞語)。在我們所有的實驗中,我們在每個序列中随機遮蔽 15% 的标記。與去噪的自動編碼器(Vincent et al., 2008)不同的是,我們隻是讓模型預測被遮蔽的标記,而不是要求模型重建整個輸入。

雖然這允許我們獲得雙向的預訓練模型,但缺點是我們在預訓練和微調之間産生了不比對,因為在微調期間不會出現[MASK]令牌。為了緩解這種情況,我們并不總是使用實際的[MASK]令牌來替換“被遮蔽的”單詞。**訓練資料生成器随機選擇15%的令牌位置進行預測。如果選擇了第i個令牌,我們将第i個令牌替換為(1)80%的時間:[MASK]令牌;(2)10%的時間:一個随機令牌;(3)10%的時間:不變的第i個令牌。**然後,Ti将用于預測具有交叉熵損失的原始令牌。我們在附錄C.2中比較這個過程的變化。

Task #2: Next Sentence Prediction (NSP)

許多重要的下遊任務,例如問答(QA)和自然語言推論(NLI),都是基于對兩個句子之間關系的了解,而這并不是語言模組化直接捕獲的。 為了訓練能夠了解句子關系的模型,我們預訓練了可以從任何單語語料庫瑣碎生成的二值化的下一個句子預測任務。 特别,在為每個預訓練示例選擇句子A和B時,有50%的時間B是A後面的下一個句子(标記為IsNext),有50%的時間A後面的下一個句子是來自語料庫(标記為NotNext)。 正如我們所示在圖1中,C用于下一句預測(NSP)。盡管它很簡單,但我們在5.1節中證明了對此的預訓練這項任務對QA和NLI都是非常有益的。

NSP任務與Jernite等(2017)和洛格斯瓦蘭和李(2018)使用的表征學習目标密切相關。然而,在以前的工作中,隻有語句嵌入被傳輸到下遊任務,然而BERT傳輸所有的參數來初始化最終任務模型參數。

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Pre-training data

預訓練程式很大程度上遵循了現有的語言模型預訓練的文獻。對于預訓練的語料庫,我們使用BooksCorpus(8億單詞)和英文維基百科(2500萬字)。對于Wikipedia,我們隻提取文本段落,而忽略清單、表格和标題。為了提取長的連續序列,使用文檔級别的語料庫,而不是使用像 Billion Word Benchmark (Chelba et al., 2013)那樣使用打亂順序的句子級别語料庫是至關重要的。

3.2 Fine-tuning BERT

微調非常簡單,因為Transformer中的自我關注機制使BERT可以通過交換适當的輸入和輸出來對許多下遊任務進行模組化,無論是涉及單個文本還是文本對。對于涉及文本對的應用程式,常見模式是在應用雙向交叉注意力之前對文本對進行獨立編碼,例如Parikh等(2016);Seo等(2017)。 而BERT是使用自我注意機制來統一這兩個階段,由于用自注意力編碼連接配接的文本對有效地包含了兩個句子之間的雙向交叉注意。

對于每個任務,我們隻需将特定于任務的輸入和輸出插入BERT并對所有參數進行端到端的微調。在輸入處,訓練前的句子A和句子B類似于(1)釋義(paraphrasing)中的句子對,(2)隐含的假設-前提對,(3)問題答案中的問題-段落對,以及(4)文本分類或序列标記中的退化的text- ∅ \varnothing ∅ 對。 在輸出中,令牌表示形式被輸入到一個輸出層,用于标記級任務,如序列标記或問題回答,而[CLS]表示形式被輸入到一個輸出層,用于分類,如entailment或情感分析。

與預訓練相比,微調相對便宜(inexpensive)。論文中的所有結果都可以從完全相同的預先訓練的模型開始,在單個Cloud TPU上複現最多1個小時,或者在GPU上複現幾個小時。我們将在第4節的相應小節中描述特定于任務的細節。更多詳細資訊,請參見附錄A.5。

4 Experiments

在本節中,我們将展示11個NLP任務的BERT微調結果。

4.1 GLUE

通用語言了解評價 (GLUE,General Language Understanding Evaluation) 基準(Wang et al.(2018))是對多種自然語言了解任務的集合。GLUE資料集的較長的描述包含在附錄B.1中。

為了在 GLUE 上微調模型,我們按照本文第 3 節中描述的那樣表示輸入的句子或者句子對,并且使用

最後一層的隐藏向量 C ∈ R H C \in \mathbb{R}^{H} C∈RH中的第一個輸入标記([CLS])作為句子總的表示。在微調期間唯一引入的新的參數是一個分類層參數矩陣 W ∈ R K × H W \in \mathbb{R}^{K \times H} W∈RK×H,其中K是要分類的數量。我們用C和W計算一個标準的分類損失,換句話說是 log ⁡ ( softmax ⁡ ( C W T ) ) \log\left(\operatorname{softmax}\left(C W^{T}\right)\right) log(softmax(CWT)) 。

我們對所有的GLUE任務中的資料使用32的batch size和微調在3個epoch中。對于每個任務,我們在驗證集上選擇最佳的微調學習率(在5e-5、4e-5、3e-5和2e-5之間)。此外,對于 B E R T L A R G E BERT_{LARGE} BERTLARGE​,我們發現finetuning有時在小資料集上是不穩定的,是以我們運作了幾個随機重新開機,并在驗證集中選擇了最好的模型。對于随機重新開機,我們使用相同的預訓練檢查點,但執行不同的資料打亂和分類器層初始化來微調模型。

結果如表 1 所示。在所有的任務上, B E R T B A S E BERT_{BASE} BERTBASE​ 和 B E R T L A R G E BERT_{LARGE} BERTLARGE​ 都比現有的系統更加出色 ,與先進水準相比,分别取得 4.4% 及 6.7% 的平均改善。請注意,除了 B E R T B A S E BERT_{BASE} BERTBASE​含有注意力屏蔽(attention masking), B E R T B A S E BERT_{BASE} BERTBASE​和 OpenAI GPT 的模型結構方面幾乎是相同的。對于最大和最廣泛使用的 GLUE 任務 MNLI,BERT 比目前最優模型獲得了 4.7% 的絕對提升。在 GLUE 官方的排行榜上, B E R T L A R G E BERT_{LARGE} BERTLARGE​獲得了 80.4 的分數,與原榜首的 OpenAI GPT 相比截止本文寫作時隻獲得了 72.8 分。

我們發現, B E R T L A R G E BERT_{LARGE} BERTLARGE​在所有任務中都顯著優于 B E R T B A S E BERT_{BASE} BERTBASE​,尤其是那些訓練資料很少的任務。模型大小的影響在5.2節中進行了更深入的探讨。

4.2 SQuAD v1.1

斯坦福問答資料集(SQuAD Standford Question Answering Dataset)是一個由 100k 個衆包的問題/

答案對組成的集合(Rajpurkar et al., 2016)。給出一個問題和一段來自維基百科包含這個問題答案的

段落,我們的任務是預測這段答案文字的區間。

我們将輸入問題和段落表示為一個單一打包序列(packed sequence),其中問題使用 A 嵌入,段落使用 B 嵌入。在微調模型期間唯一需要學習的新參數是區間開始向量 S ∈ R H S \in \mathbb{R}^{H} S∈RH和區間結束向量 E ∈ R H E \in \mathbb{R}^{H} E∈RH 。讓 BERT 模型最後一層的隐藏向量的第 i t h i^{t h} ith輸入标記被表示為 T i ∈ R H T_{i} \in \mathbb{R}^{H} Ti​∈RH。然後,計算單詞 i 作為答案區間開始的機率,它是 T i T_i Ti​和 S S S 之間的點積并除以該段落所有單詞的結果之後再 softmax: P i = e S ⋅ T i ∑ j e S ⋅ T j P_{i}=\frac{e^{S \cdot T_{i}}}{\sum_{j} e^{S \cdot T_{j}}} Pi​=∑j​eS⋅Tj​eS⋅Ti​​。

同樣的式子用來計算單詞作為答案區間的結束的機率,并采用得分最高的區間作為預測結果。訓練目

标是正确的開始和結束位置的對數可能性。

我們表現最好的模型在內建模型排名中上比排名第一模型高出 1.5 個 F1 值,在一個單模型排行榜中比

排名第一的模型高出 1.3個 F1 值。實際上,我們的單模型 BERT 就比最優的內建模型表現更優。即使隻在 SQuAD 資料集上(不用 TriviaQA 資料集)我們隻損失 0.1-0.4 個 F1值,而且我們的模型輸出結果仍然比現有模型的表現好很多。

4.3 SQuAD v2.0

SQuAD2.0任務擴充了SQuAD1.1問題的定義,允許在提供的段落中不存在簡短的答案,進而使問題更加實際。

我們觀察到比以前最好的系統提升了5.1 F1。

4.4 SWAG

Adversarial Generations(SWAG)資料集由 113k 個句子對組合而成,用于評估基于常識的推理

(Zellers et al., 2018)。給出一個來自視訊字幕資料集的句子,任務是在四個選項中選擇最合理的延續。

為 SWAG 資料集調整 BERT 模型的方式與為 GLUE 資料集調整的方式相似。

B E R T L A R G E BERT_{LARGE} BERTLARGE​優于作者的 ESIM+ELMo 的基線标準模型的 27.1%和OpenAI GPT的8.3% 。

5 Ablation Studies(消融研究)

在本節中,我們對 BERT 的許多方面進行了消融實驗,以便更好地了解每個部分的相對重要性。

5.1 Effect of Pre-training Tasks

(我們的核心觀點之一是,與之前的工作相比,BERT 的深層雙向性(通過遮蔽語言模型預訓練)是最重要的改進。)

我們通過使用與 B E R T B A S E BERT_{BASE} BERTBASE​完全相同的預訓練資料、微調方案和超參數來評估兩個訓練前目标,進而證明BERT的深度雙向性的重要性:

  • No NSP:一個雙向的模型,使用“遮蔽語言模型”(MLM)但是沒有“預測下一句任務”(next sentence prediction,NSP)。
  • LTR & No NSP:一個隻考慮左上下文(left-context-only)的模型,使用一個标準的從左到右(Left-to-Right,LTR)的語言模型,而不是遮蔽語言模型。在這種情況下,我們預測每個輸入詞,不應用任何遮蔽。在微調中也應用了僅限左的限制,因為我們發現使用僅限左的上下文進行預訓練和使用雙向上下文進行微調總是比較糟糕。此外,該模型未經預測下一句任務的預訓練。這與OpenAI GPT有直接的可比性,但是使用更大的訓練資料集、輸入表示和微調方案。
    論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

我們可以看到去除 NSP 對 QNLI、MNLI和 SQuAD 的表現造成了顯著的傷害。這些結果表明,我們的預訓練方法對于獲得先前提出的強有力的實證結果是至關重要的。

LTR 模型在所有任務上的表現都比 MLM 模型差,在 MRPC 和 SQuAD 上的下降特别大。對于SQuAD來說,很明顯 LTR 模型在區間和标記預測方面表現很差,因為标記級别的隐藏狀态沒有右側上下文。

為了增強 LTR 系統,我們嘗試在其上添加一個随機初始化的 BiLSTM 來進行微調。這确實大大提高了SQuAD 的成績,但是結果仍然比預訓練的雙向模型表現差得多。它還會損害所有四個 GLUE 任務的性能。

也可以教育訓練單獨的 LTR 和 RTL 模型,并将每個标記表示為兩個模型表示的連接配接,就像ELMo 所做的那樣。但是:(a)這是單個雙向模型參數的兩倍大小;(b)這對于像 QA 這樣的任務來說是不直覺的,因為 RTL 模型無法以問題為條件确定答案;(c)這比深層雙向模型的功能要弱得多,因為深層雙向模型可以選擇使用左上下文或右上下文。

5.2 Effect of Model Size

多年來人們都知道,增加模型的大小将持續提升在大型任務(如機器轉換和語言模組化)上的的表現,表 6

所示的由留存訓練資料(held-out traing data)計算的語言模型的困惑度(perplexity)。然而,我們

相信,這是第一次證明,如果模型得到了足夠的預訓練,那麼将模型擴充到極端的規模也可以在非常小的任務中帶來巨大的改進。

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

5.3 Feature-based Approach with BERT

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

結果如表 7 所示。最佳的執行方法是從預訓練的轉換器的前 4 個隐藏層串聯符号表示,這隻比整個模

型的微調落後 0.3 F1 值。這說明 BERT 對于微調和基于特征的方法都是有效的。

6 Conclusion

最近,由于使用語言模型進行遷移學習而取得的實驗提升表明,豐富的、無監督的預訓練是許多語言

了解系統不可或缺的組成部分。特别是,這些結果使得即使是低資源(少量标簽的資料集)的任務也

能從非常深的單向結構模型中受益。我們的主要貢獻是将這些發現進一步推廣到深層的雙向結構,使

同樣的預訓練模型能夠成功地廣泛地處理 NLP 任務。

Appendix

附錄包括BERT的更多細節、實驗的更多細節和進一步的消融研究,包括訓練步數的影響和不同masking程式的消融。

A \quad Additional Details for BERT

A.1 Illustration of the Pre-training Tasks

Masked LM and the Masking Procedure

BERT為了訓練擁有雙向句子資訊的模型采用了一種随機遮蔽一定比例的輸入标記,然後預測那些被遮蔽的标記的預訓練任務。BERT在每個序列中随機遮蔽 15% 的标記,然後通過最後使用softmax去預測被遮蔽的字,但直接使用這樣的預訓練任務會有兩個問題:

  • 預訓練和微調之間造成了不比對,因為 [MASK] 标記在微調期間從未出現過。
  • 使用 Transformer 的每批次資料中隻有 15% 的标記被預測,這意味着模型可能需要更多的預訓練步驟來收斂

為了解決問題一(問題二還有待優化),BERT采用了以下的操作:

80% 的情況下:用 [MASK] 替換被選擇的單詞,例如,my dog is hairy → my dog is [MASK]

10% 的情況下:用一個随機單詞替換被選擇的單詞,例如,my dog is hairy → my dog is apple

10% 的情況下:保持被選擇的單詞不變,例如,my dog is hairy → my dog is hairy

這種方法的優點是Transformer 編碼器不知道它将被要求預測哪些單詞,或者哪些單詞已經被随機單詞替換,是以它被迫保持每個輸入标記的分布的上下文表示。另外,因為随機替換隻發生在 1.5% 的标記(即,15% 的10%)這似乎不會損害模型的語言了解能力。

Next Sentence Prediction

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

A.2 Pre-training Procedure

為了生成每個訓練輸入序列,我們從語料庫中采樣兩段文本,我們将其稱為“句子”,盡管它們通常比單個句子長得多(但也可以短一些)。第一個句子添加 A 嵌入,第二個句子添加 B 嵌入。50% 的情況下B 确實是 A 後面的實際下一句,50% 的情況下它是随機選取的一個的句子,這是為“下一句預測”任務所做的。兩句話合起來的長度要小于等于 512 個标記。語言模型遮蔽過程是在使用 WordPiece 序列化句子後,以均勻的 15% 的機率遮蔽标記,不考慮部分詞片的影響(那些含有被 WordPiece 拆分,以##為字首的标記)。

我們使用 256 個序列(256 個序列 * 512 個标記= 128,000 個标記/批次)的批大小進行 1,000,000 步

的訓練,這大約是在 33 億詞的語料庫中訓練 40 個周期。我們用Adam 優化算法并設定其學習率為

1 e − 4 , β 1 = 0.9 , β 2 = 0.999 1 e-4, \beta 1=0.9, \beta 2=0.999 1e−4,β1=0.9,β2=0.999,L2的權重衰減是 0.01,并且在前 10000 步學習率熱身(learning rate warmup),然後學習率開始線性衰減。我們在所有層上使用 0.1 機率的 dropout。像

OpenAI GPT 一樣,我們使用 gelu 激活(Hendrycks and Gimpel, 2016)而不是标準 relu。訓練損失是遮蔽語言模型似然值與下一句預測似然值的平均值。

更長的序列代價過高(disproportionately expensive ),因為注意力是序列長度的平方。為了加快預處理速度,我們0%的步驟用128的序列長度來預訓練模型。然後,我們用長為512的序列來訓練其餘的步驟的10%,來學習位置嵌入。

A.3 Fine-tuning Procedure

對于微調,除了批量大小、學習率和訓練次數外,大多數模型超參數與預訓練期間相同。Dropout 概

率總是使用 0.1。最優超參數值是特定于任務的,但我們發現以下可能值的範圍可以很好地在所有任務

中工作:

  • Batch size: 16, 32
  • Learning rate (Adam): 5e-5, 3e-5, 2e-5
  • Number of epochs: 3, 4

我們還觀察到大資料集(例如 100k+ 标記的訓練集)對超參數選擇的敏感性遠遠低于小資料集。微調

通常非常快,是以隻需對上述參數進行完全搜尋,并選擇在驗證集上性能最好的模型即可。

A.4 Comparison of BERT, ELMo ,and OpenAI GPT

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

請注意,除了架構上的差異外,BERT和OpenAI GPT是基于fine-tuning的方法,而ELMo是feature-based的方法。

在現有預訓練方法中,與 BERT 最相似的是 OpenAI GPT,它在一個大的文本語料庫中訓練從左到右

的 Transformer 語言模型。事實上,BERT 中的許多設計決策都是有意選擇盡可能接近 GPT 的,這樣

兩種方法就可以更加直接地進行比較。我們工作的核心論點是,在 3.1 節中提出的兩項新的預訓練語

言模型任務占了實驗效果改進的大部分,但是我們注意到 BERT 和 GPT 在如何訓練方面還有其他幾

個不同之處:

  • GPT 是在 BooksCorpus(800M 詞)上訓練出來的;BERT 是在 BooksCor-pus(800M 詞)和

    Wikipedia(2,500M 詞)上訓練出來的。

  • GPT 僅在微調時使用句子分隔符([SEP])和分類标記([CLS]);BERT 在預訓練時使用

    [SEP], [CLS] 和 A/B 句嵌入。

  • GPT 在每批次含 32,000 詞上訓練了 1M 步;BERT 在每批次含 128,000 詞上訓練了 1M 步。
  • GPT 在所有微調實驗中學習速率均為 5e-5;BERT 選擇特定于任務的在驗證集中表現最好的微調

    學習率。

為了厘清楚這些差異的影響,我們在5.1節中進行了消融實驗,實驗表明大部分的改善實際上來自于兩個預訓練任務(遮蔽語言模型和下一句預測任務)和它們所帶來的雙向性。

A.5 Illustrations of Fine-tuning on Different Tasks

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

B Detailed Experimental Setup

B.1 Detailed Descriptions for the GLUE Benchmark Experiments.

MNLI: 多類型的自然語言推理(Multi-Genre Natural Language Inference)

QQP: Quora問題對(Quora Question Pairs)是一個二進制分類任務,目的是确定兩個問題在Quora上問的語義是否相等 (Chen et al., 2018)。

QNLI: 問題自然語言推理(Question Natural Language Inference)。

SST-2: 斯坦福情感語義樹(Stanford Sentiment Treebank)資料集是一個二進制單句分類任務。

CoLA: 語言可接受性單句二進制分類任務語料庫(Corpus of Linguistic Acceptability)。

STS-B: 文本語義相似度基準(Semantic Textual Similarity Bench-mark )是從新聞标題中和其它來源裡提取的句子對的集合(Cer et al., 2017)。

MRPC: 微軟研究釋義語料庫(Microsoft Research Paraphrase Corpus)從線上新聞中自動提取的句子對組成,并用人工注解來說明這兩個句子在語義上是否相等(Dolan and Brockett, 2005.)。

RTE: 識别文本蘊含(Recognizing Textual Entailment)是一個與 MNLI 相似的二進制蘊含任務。

WNLI: 威諾格拉德自然語言推理(Winograd NLI)是一個來自(Levesque et al., 2011) )的小型自然語言推理資料集。

C Additional Ablation Studies

C.1 Effect of Number of Training Steps

  • BERT真的需要這麼多的預訓練 (128,000 words/batch * 1,000,000 steps) 來實作高的微調精度。 B E R T B A S E BERT_{BASE} BERTBASE​在 MNLI 上進行 1M 步預訓練時的準确率比 500k 步提高了近 1.0%。
  • 遮蔽語言模型的收斂速度确實比 LTR(left to right) 模型稍慢。然而,在絕對準确性方面,遮蔽語言模型幾乎在訓練一開始就超越 LTR 模型。

C.2 Ablation for Different Masking Procedures

論文筆記:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

參考網址:

https://github.com/yuanxiaosc/BERT_Paper_Chinese_Translation(bert2018.11第一版的翻譯,非常好)

繼續閱讀