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

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

摘要

我們介紹了一種新的**語言表示模型BERT**,它表示轉換器的雙向編碼器表示。與最近的語言表示模型不同(Peters et al., 2018; Radford et al., 2018),**BERT通過在所有層的上下文聯合調節來預訓練深層雙向表示**。因此,只需一個額外的輸出層就可以對預先訓練好的BERT表示進行微調,以便爲各種任務創建最先進的模型,例如問答和語言推斷,而無需基本的任務特定架構修改。

BERT概念簡單,經驗豐富。它在11項自然語言處理任務中獲得了最新的技術成果,包括將GLUE的基準值提高到80.4%(7.6%的絕對改進)、多項準確率提高到86.7%(5.6%的絕對改進)、將SQuAD v1.1的問答測試F1提高到93.2(1.5的絕對改進),比human的表現高出2.0。

1 簡介

語言模型預訓練已經證明對改進許多自然語言處理任務是有效的(Dai和Le,2015; Peters等,2017,2018; Radford等,2018; Howard和Ruder,2018)。這些任務包括句子級任務,如自然語言推理(Bowman et al,2015; Williams et al,2018)和釋義(Dolan和Brockett,2005),旨在通過整體分析來預測句子之間的關係,以及令牌級任務,如命名實體識別(Tjong Kim Sang和De Meulder,2003)和SQuAD問題回答(Rajpurkar等,2016),其中模型需要在令牌級別生成細粒度輸出。

將預訓練語言表示應用於下游任務有兩種現有策略:基於特徵和微調。基於特徵的方法,例如ELMo(Peters等,2018),使用特定於任務的體系結構,其包括預先訓練的表示作爲附加特徵。微調方法,例如Generative Pre-trained Transformer(OpenAI GPT)(Radford等,2018),引入了最小的任務特定參數,並通過簡單地微調預訓練參數來訓練下游任務。在以前的工作中,兩種方法在預訓練期間共享相同的目標函數,在這些方法中,他們使用單向語言模型來學習一般語言表示。

我們認爲當前的技術嚴重限制了預訓練表示的能力,特別是對於微調方法。主要限制是標準語言模型是單向的,這限制了在預訓練期間可以使用的體系結構的選擇。例如,在OpenAI GPT中,作者使用了從左到右的體系結構,其中每個令牌只能處理Transformer自我關注層中的前一個令牌(Vaswani et al, 2017)。這些限制對於句子級別任務來說是次優的,並且在將基於微調的方法應用於令牌級別任務(例如SQuAD問答)時可能是毀滅性的(Rajpurkar等,2016),在這些任務中,從兩個方向合併上下文至關重要。

在本文中,我們通過提出BERT:變換器的雙向編碼器表示來改進基於微調的方法。 BERT通過提出一個新的預訓練目標來解決前面提到的單向約束:“掩蓋語言模型”(MLM),受到完形任務的啓發(Taylor,1953)。被掩蓋的語言模型從輸入中隨機地掩蓋一些標記,並且目標是僅基於其上下文來預測被掩蓋的單詞的原始詞彙id。與從左到右的語言模型預訓練不同,MLM目標允許表示融合左右上下文,這允許我們預訓練一個深度雙向變換器。除了蒙面語言模型,我們還引入了一個“下一句預測”任務,聯合預訓練文本對錶示。

本文的貢獻如下:

  • 我們證明了雙向預訓練對語言表達的重要性。與Radford等人不同。 (2018),其使用單向語言模型進行預訓練,BERT使用掩蔽語言模型來實現預訓練的深度雙向表示。這也與Peters等人(2018年)形成了鮮明對比,Peters等人使用的是一種由獨立訓練的從左到右和從右到左的LMs的淺層連接。
  • 我們展示了預先訓練的表示消除了許多經過大量工程設計的特定於任務的體系結構的需求。BERT是第一個基於微調的表示模型,它在大量的句子級和令牌級任務上實現了最先進的性能,優於許多具有任務特定體系結構的系統。
  • BERT推進了11項NLP任務的最新技術。我們還報告了對BERT的廣泛消融,證明了我們模型的雙向性質是最重要的新貢獻。代碼和預先訓練的模型將在goo.gl/language/bert上提供。

2 相關工作

預訓練通用語言表示有很長的歷史,我們將簡要回顧本節中最常用的方法。

2.1 基於特徵的方法

幾十年來,學習廣泛適用的詞語表達一直是研究的一個活躍領域,包括非神經(Brown et al。,1992; Ando and Zhang,2005; Blitzer et al。,2006)和神經(Collobert and Weston,2008; Mikolov等,2013; Pennington等,2014)方法。預訓練的單詞嵌入被認爲是現代NLP系統不可或缺的一部分,與從頭學習的嵌入相比有顯着改進(Turian et al。,2010)。這些方法已被推廣到較粗糙的粒度,例如句子嵌入(Kiros等,2015; Logeswaran和Lee,2018)或段嵌入(Le和Mikolov,2014)。與傳統的單詞嵌入一樣,這些學習的表示通常也用作下游模型中的特徵。 ELMo(Peters等,2017)將傳統的詞嵌入研究概括爲不同的維度。他們建議從語言模型中提取上下文敏感特徵。當將上下文字嵌入與現有的任務特定體系結構集成時,ELMo推進了幾個主要NLP基準測試的最新技術(Peters等,2018),包括SQUAD上的問答(Rajpurkar等,2016),情緒分析(Socher et al,2013),以及命名實體識別(Tjong Kim Sang和De Meulder,2003)。

2.2 微調方法

從語言模型(LMs)轉移學習的最新趨勢是在LM目標上預先培訓一些模型架構,然後對監督下游任務的相同模型進行微調(Dai and Le, 2015; Howard and Ruder, 2018; Radford et al., 2018)。這些方法的優點是需要從頭開始學習很少的參數。至少部分任務可以藉助這一優勢,比如OpenAI GPT(Radford等,2018)在GLUE基準測試中獲得了許多句子級任務的最好結果(Wang et al,2018)。

2.3 從監督數據轉移學習

雖然無監督預培訓的優點是可以獲得幾乎無限的數據量,但也有工作表明從具有大型數據集的監督任務中有效轉移,例如自然語言推斷(Conneau等,2017)和機器翻譯(McCann et al。,2017)。在NLP之外,計算機視覺研究也證明了從大型預訓練模型轉移學習的重要性,其中一個有效的方法是對ImageNet上的預訓練模型進行微調(Deng et al.,2009;Yosinski等人,2014)。

3 BERT

我們在本節介紹BERT及其詳細實現。我們首先介紹模型體系結構和BERT的輸入表示。然後,我們將在3.3節中介紹預訓練任務,即本文的核心創新。預培訓程序和微調程序分別在第3.4節和第3.5節中詳述。最後,第3.6節討論了BERT和OpenAI GPT之間的差異。

3.1 模型體系結構

BERT的模型架構是一個多層雙向Transformer編碼器,基於Vaswani等人(2017)中描述的原始實現,並在tensor2tensor庫中發佈。因爲Transformers的使用最近變得無處不在,,而且我們的實現與最初的實現實際上是相同的,我們將省略對模型架構的詳盡的背景描述,並將讀者推薦給Vaswani et al.(2017),以及優秀的指南,如“帶註釋的變壓器”。在這項工作中,我們將層數(即變形金剛塊)表示爲L,將隱藏層大小表示爲H,將自注意力頭的數量表示爲A。在所有情況下,我們將前饋/濾波器大小設置爲4H,即H = 768時爲3072,H = 1024時爲4096。我們主要報告兩種模型大小的結果:

  • BERTBASE: L=12, H=768, A=12, Total Parameters=110M
  • BERTLARGE: L=24, H=1024, A=16, Total Parameters=340M

 

圖1:訓練前模型架構的差異。 BERT使用雙向變壓器。 OpenAI GPT使用從左到右的Transformer。 ELMo使用經過獨立訓練的從左到右和從右到左LSTM的串聯來生成下游任務的功能。 在三個中,只有BERT表示在所有層中共同依賴於左右上下文。

爲了進行比較,選擇BERTBASE與OpenAI GPT具有相同的模型大小。 然而,重要的是,BERT Transformer使用的是雙向的自我關注,而GPT Transformer使用的是受限的自我關注,每個令牌只能關注左邊的上下文。我們注意到,在文獻中,雙向變換器通常被稱爲“Transformer encoder”,而左上下文僅被稱爲“Transformer decoder”,因爲它可以用於文本生成。 BERT,OpenAI GPT和ELMo之間的比較如圖1所示。

3.2 輸入表示

我們的輸入表示能夠在一個令牌序列中明確地表示單個文本句子或一對文本句子(例如,[問題,答案])。對於給定的標記,其輸入表示通過對相應的標記,段和位置嵌入求和來構造。我們的輸入表示的可視化表示在圖2中給出。具體是:

圖2:BERT輸入表示。 輸入嵌入是令牌嵌入,分段嵌入和位置嵌入的總和。
  • 我們使用WordPiece嵌入(Wu et al。,2016)和30,000個令牌詞彙表。我們用##表示分詞。
  • 我們使用學習過的位置嵌入,支持的序列長度可達512個令牌。
  • 每個序列的第一個標記始終是特殊分類嵌入([CLS])。對應於該令牌的最終隱藏狀態(即,Transformer的輸出)被用作分類任務的聚合序列表示。對於非分類任務,將忽略此向量。
  • 句子對被打包成一個序列。我們以兩種方式區分句子。首先,我們用特殊標記([SEP])將它們分開。其次,我們添加一個學習句子A嵌入到第一個句子的每個標記中,一個句子B嵌入到第二個句子的每個標記中。
  • 對於單句輸入,我們只使用句子A嵌入。

3.3 預訓練任務

與Peters等人(2018)和Radford等人(2018)不同的是,我們不使用傳統的從左到右或從右到左的語言模型來預訓練BERT。相反,我們使用兩節新的無監督預測任務對BERT進行預訓練,如本節所述。

3.3.1 任務#1:Masked LM

直觀地說,我們有理由相信,深度雙向模型比從左到右模型或從左到右和從右到左模型的淺層連接更強大。遺憾的是,標準條件語言模型只能從左到右或從右到左進行訓練,因爲雙向調節將允許每個單詞在多層上下文中間接地“看到自己”。

爲了訓練深度雙向表示,我們採用直接的方法隨機屏蔽一定比例的輸入令牌,然後僅預測那些被屏蔽的令牌。我們將這個程序稱爲“Masked LM”(MLM),儘管它在文獻中通常被稱爲完形任務(Taylor,1953)。在這種情況下,對應於掩碼令牌的最終隱藏向量被饋送到詞彙表上的輸出softmax,如在標準LM中。在我們的所有實驗中,我們隨機地屏蔽每個序列中所有WordPiece標記的15%。與去噪自動編碼器(Vincent et al,2008)相反,我們只預測掩蔽的單詞而不是重建整個輸入。

雖然這確實允許我們獲得雙向預訓練模型,但這種方法有兩個缺點。首先,我們預訓練和微調之間建立了一個不匹配,因爲[MASK]令牌在微調期間從未出現。爲了減輕這種影響,我們並不總是用實際的[MASK]令牌替換“掩蔽”詞。相反,訓練數據生成器隨機選擇15%的令牌,例如,在句子中,我的狗是多毛的,它選擇毛茸茸的。然後執行以下過程:

  • 數據生成器將執行以下操作,而不是始終用[MASK]替換所選單詞:
  • 80%的時間:用[MASK]標記替換單詞,例如,我的狗是多毛的!我的狗是[MASK]
  • •10%的時間:用隨機單詞替換單詞,例如,我的是狗多毛的!我的狗是蘋果
  • 10%的時間:保持單詞不變,例如,我的是狗多毛的!我的是狗多毛的。這樣做的目的是將表示偏向於實際觀察到的單詞。

Transformer編碼器不知道它將被要求預測哪些單詞或哪些單詞已被隨機單詞替換,因此它被迫保持每個輸入標記的分佈式上下文表示。此外,因爲隨機替換隻發生在所有令牌的1.5%(即15%的10%),這似乎不會損害模型的語言理解能力。使用MLM的第二個缺點是每批中只預測了15%的令牌,這表明模型可能需要更多的預訓練步驟才能收斂。在5.3節中,我們證明MLM的收斂速度略慢於從左到右的模型(預測每個標記),但MLM模型的實證改進遠遠超過增加的培訓成本。

3.3.2 任務#2:下一句話預測

許多重要的下游任務,例如問答(QA)和自然語言推理(NLI),都是基於理解兩個文本句子之間的關係,而這兩個文本句子並不是由語言建模直接捕獲的。 爲了訓練理解句子關係的模型,我們預先訓練了一個可以從任何單語語料庫輕鬆生成的二值化的下一個句子預測任務。具體地,當爲每個預訓練示例選擇句子A和B時,50%的時間B是跟隨A的實際下一句子,並且50%的時間是來自語料庫的隨機句子。例如:

 

我們完全隨機選擇NotNext句子,最終的預訓練模型在此任務中達到97%-98%的準確率。儘管它很簡單,但是我們在5.1節中展示了針對這個任務的預培訓對QA和NLI都非常有益。

3.4 預訓練程序

我們完全隨機選擇NotNext語句,最終預訓練模型在此任務中達到97%-98%的準確率。儘管它很簡單,但我們在5.1節中證明,預測這項任務對QA和NLI都非常有益。對於訓練前的語料庫,我們使用BooksCorpus(800M單詞)(Zhu等,2015)和英語維基百科(2,500M單詞)的串聯。對於維基百科,我們只提取文本段落並忽略列表,表格和標題。爲了提取長時間的連續序列,使用文檔級的語料庫而不是像十億字基準(Chelba et al., 2013)這樣的混亂的句子級語料庫非常重要。

爲了生成每個訓練輸入序列,我們從語料庫中採樣兩段文本,我們將其稱爲“句子”,即使它們通常比單個句子長得多(但也可以更短一些)。第一個句子接收A嵌入,第二個句子接收B嵌入。50%的時間B是跟隨A的實際下一個句子,50%的時間是隨機句子,這是爲“下一句話預測”任務完成的。對它們進行採樣,使得組合長度≤512個令牌。在WordPiece標記化之後應用LM掩蔽,具有15%的統一掩蔽率,對部分word片段不作特別考慮。

我們的批處理大小爲256個序列(256個序列* 512個令牌= 128,000個令牌/批),共訓練了1,000,000個步驟,約爲33億個語料庫中的40個epoch。我們使用學習率爲1e-4,β1= 0.9,β2= 0.999,L2權重衰減爲0.01,在第一個10000步學習速率熱身,學習速率的線性衰減。我們在所有層上使用0.1的退化概率。在OpenAI GPT之後,我們使用gelu激活(Hendrycks和Gimpel,2016)而不是標準relu。訓練過程中的損失函數是平均掩蔽LM概率和平均下一個句子預測概率的總和。

在Pod配置的4個雲TPU上進行了BERTBASE的訓練(總共16個TPU芯片)。 BERTLARGE的訓練在16個雲TPU(總共64個TPU芯片)上進行。每次預訓練需要4天才能完成。

3.5 微調程序

對於序列級分類任務,BERT微調很簡單。爲了獲得輸入序列的固定維集合表示,我們取最後的隱藏狀態(即,Transformer的輸出),用於輸入中的第一個令牌,通過構造對應於特殊的[CLS]字嵌入。我們將該向量表示爲C\in \mathbb{R}^{H}。在微調期間添加的唯一新參數是分類層W\in \mathbb{R}^{K\times H},其中K是分類器標籤的數量。標籤概率P\in \mathbb{R}^{K}用標準softmax計算,P=softmax\left ( CW^{T} \right )。 BERT和W的所有參數都經過微調,以最大化正確標籤的對數概率。對於跨度級和令牌級預測任務,必須以任務特定方式稍微修改上述過程。詳情見第4節的相應小節。

在微調方面,除批量大小、學習率和訓練週期數外,大多數模型超參數與訓練前相同。退化率始終保持在0.1。最佳超參數值是特定於任務的,但是我們發現了以下可能的值範圍,可以在所有任務中很好地工作:

我們還觀察到,大數據集(例如,100k +標記的訓練示例)對超參數選擇的敏感性遠小於小數據集。 微調通常非常快,因此簡單地對上述參數進行詳盡搜索並選擇在開發集上表現最佳的模型,這是合理的。

3.6 BERT和OpenAI GPT的比較

與BERT最具可比性的現有預訓練方法是OpenAI GPT,它在一個大型文本語料庫中訓練一個左對右的Transformer LM。實際上,BERT中的許多設計決策都被有意地選擇爲儘可能接近GPT的,以便可以最小化地比較這兩種方法。這項工作的核心論點是,第3.3節中提出的兩項新的培訓前任務佔了大部分的實證改進,但我們注意到BERT和GPT如何訓練之間還存在其他一些差異:

  • GPT訓練於BooksCorpus(800萬字);BERT接受的訓練是BooksCorpus (800萬字)和維基百科(2500萬字)。
  • GPT使用句子分隔符([SEP])和分類符令牌([CLS]),它們僅在微調時引入;BERT在預訓練期間學習[SEP],[CLS]和句子A / B的嵌入。
  • GPT接受了1M步的訓練,批量爲32,000字; BERT經過1M步的訓練,批量爲128,000字。
  • GPT對所有微調實驗使用相同的5e-5學習率; BERT選擇特定於任務的微調學習速率,該速率在開發集上表現最佳。

爲了分離這些差異的影響,我們在5.1節進行了消融實驗,證明大多數改進實際上來自新的預訓練任務。

4 實驗

在本節中,我們將介紹11個NLP任務的BERT微調結果。

4.1 GLUE數據集

通用語言理解評估(GLUE)基準(Wang et al。,2018)是各種自然語言理解任務的集合。大多數GLUE數據集已存在多年,但GLUE的目的是(1)使用規範的Train,Dev和Test拆分分發這些數據集,以及(2)設置評估服務器以減輕問題評估不一致和測試集過度擬合。GLUE沒有分發測試集的標籤,用戶必須將他們的預測上傳到GLUE服務器進行評估,提交的數量是有限的。

GLUE基準包括以下數據集,其描述最初在Wang等人(2018)的文章中進行了總結:

  • MNLI多類型自然語言推理是一項大規模的衆包蘊涵分類任務(Williams et al,2018)。給定一對句子,目標是預測第二句與第一句相比是蘊涵,矛盾還是中立。
  • QQPQuora問題對是一個二元分類任務,其目的是確定Quora上提出的兩個問題是否在語義上是等價的(Chen et al。,2018)。
  • QNLI問題自然語言推斷是斯坦福問題答疑數據集(Rajpurkar等,2016)的一個版本,已被轉換爲二元分類任務(Wang等,2018)。積極的例子是(問題,句子)對包含正確答案,而負面例子是(問題,句子)來自同一段落,不包含答案。
  • SST-2斯坦福情感樹庫是一個二元單句分類任務,由從電影評論中提取的句子和人類註釋的情緒組成(Socher等,2013)。
  • CoLA語言可接受語料庫是一個二元單句分類任務,其目標是預測英語句子在語言上是否“可接受”(Warstadt等,2018)。
  • STS-B語義文本相似性基準是從新聞標題和其他來源中提取的句子對的集合(Cer等,2017)。它們用1到5的分數進行註釋,表示兩個句子在語義上的相似程度。
  • MRPC微軟研究意譯語料庫由自動從在線新聞源中提取的句子對組成,並使用人工註釋來判斷這兩種句子是否語義對等(Dolan and Brockett, 2005)。
  • RTE識別文本蘊涵是類似於MNLI的二元蘊涵任務,但訓練數據少得多(Bentivogli等,2009)。
  • WNLIWinograd NLI是一個源自(Levesque等,2011)的小型自然語言推斷數據集。 GLUE網頁注意到這個數據集的構造存在問題,提交給GLUE的每一個經過訓練的系統的表現都比預估多數類的65.1基線精度差。因此,出於對OpenAI GPT的公平考慮,我們排除了這個集合。對於我們的GLUE提交,我們總是預測大多數類。

4.1.1 GLUE結果

爲了微調GLUE,我們如第3節所述表示輸入序列或序列對,並使用對應於第一個輸入標記([CLS])的最終隱藏向量C\in \mathbb{R}^{H}作爲聚合表示。這在圖3(a)和(b)中可視地證明。在微調期間引入的唯一新參數是分類層W\in \mathbb{R}^{K\times H},其中K是標籤的數量。我們用C和W計算標準分類損失,即log\left ( softmax\left ( CW^{T} \right ) \right )

對於所有GLUE任務,我們對數據使用32和3個時期的批量大小。對於每項任務,我們進行了微調,學習率爲5e-5,4e-5,3e-5和2e-5,並選擇了在Dev set上表現最佳的那個。此外,對於BERTLARGE,我們發現微調有時在小數據集上不穩定(即,某些運行會產生退化結果),因此我們運行了幾次隨機重啓並選擇了在Dev集上表現最佳的模型。通過隨機重啓,我們使用相同的預訓練檢查點,但執行不同的微調數據混洗和分類器層初始化。我們注意到GLUE數據集分佈不包括測試標籤,我們只爲每個BERTBASE和BERTLARGE提交了一個GLUE評估服務器提交。

圖3:我們的任務特定模型是通過將BERT與一個額外的輸出層結合而形成的,因此需要從頭開始學習最少數量的參數。 在這些任務中,(a)和(b)是序列級任務,而(c)和(d)是令牌級任務。 在圖中,E表示輸入嵌入,Ti表示令牌i的上下文表示,[CLS]是用於分類輸出的特殊符號,[SEP]是用於分離非連續令牌序列的特殊符號。

結果如表1所示。BERTBASE和BERTLARGE在所有任務上的表現均優於所有現有系統,相對於最先進的技術,平均準確度提高了4.4%和6.7%。請注意,BERTBASE和OpenAI GPT在注意力掩蔽之外的模型架構方面幾乎相同。對於最大和最廣泛報道的GLUE任務MNLI,BERT相對於最先進的技術獲得了4.7%的絕對精度提升。在官方GLUE排行榜上,BERTLARGE得分爲80.4,而排名靠前的排行榜系統OpenAI GPT在撰寫之日獲得72.8分。

表1:GLUE測試結果,由GLUE評估服務器評分。 每個任務下面的數字表示訓練樣例的數量。 “平均”列與官方GLUE分數略有不同,因爲我們排除了有問題的WNLI集。 OpenAI GPT =(L = 12,H = 768,A = 12); BERTBASE =(L = 12,H = 768,A =12); BERTLARGE =(L = 24,H = 1024,A = 16)。 BERT和OpenAI GPT是單一模型,單一任務。 所有結果均來自https://gluebenchmark.com/leaderboard和https://blog.openai.com/language-unsupervised/。

有趣的是,BERTLARGE在所有任務中都明顯優於BERTBASE,即使那些訓練數據非常少的人也是如此。第5.2節更全面地探討了BERT模型尺寸的影響。

4.2 SQuAD v1.1

Standford問題回答數據集(SQuAD)是100k衆包問答對的集合(Rajpurkar等,2016)。 給定一個問題和維基百科中包含答案的段落,任務是預測段落中的答案文本跨度。例如:

這種類型的跨度預測任務與GLUE的序列分類任務完全不同,但我們能夠以簡單的方式調整BERT以在SQuAD上運行。 與GLUE一樣,我們將輸入問題和段落表示爲單個打包序列,問題使用A嵌入,段落使用B嵌入。在微調期間學習的唯一新參數是起始矢量S\in \mathbb{R}^{H}和結束矢量E\in \mathbb{R}^{H}。讓來自BERT的第i個輸入令牌的最終隱藏向量表示爲T_{i}\in \mathbb{R}^{H}。 有關可視化,請參見圖3(c)。 然後,單詞i作爲答案跨度開始的概率被計算爲Ti和S之間的點積,接着是段落中所有單詞的softmax:

P_i=\frac{e^{S_gT_i}}{\sum _je^{S_gT_i}}

相同的公式用於答案跨度的結束,並使用最大得分跨度作爲預測。訓練目標是正確的開始和結束位置的對數似然。

我們訓練了3個epoch,學習率爲5e-5,批量大小爲32。在推理的時候,由於最終預測不以開始爲條件,所以沒有使用其他的啓發式方法。標記化的標記跨度對齊到原始的未標記化輸入,以便進行評估。

表2 SQuAD結果。BERT集成是7x系統,它使用不同的訓練前檢查點和微調種子。

結果顯示在表2中。SQUAD使用嚴格的測試程序,其中提交者必須手動聯繫SQuAD組織者以在隱藏的測試集上運行他們的系統,因此我們只提交了我們最好的系統進行測試。表中顯示的結果是我們向SQuAD提交的第一個也是唯一的測試。我們注意到SQUAD排行榜的最高結果沒有可用的最新公共系統描述,並且在訓練他們的系統時可以使用任何公共數據。因此,我們通過聯合培訓SQUAD和TriviaQA,在我們提交的系統中使用非常適度的數據增加(Joshi等,2017)。

我們表現​​最佳的系統在整體排名中優於頂級排行榜系統1.5 F1,在單一系統中優於1.3 F1。事實上,我們的單一BERT模型在F1得分方面優於頂級合奏系統。如果我們只調整SQUAD(沒有TriviaQA),我們將失去0.1-0.4 F1,並且仍然大幅超越所有現有系統。

4.3 命名實體識別

爲了評估令牌標記任務的性能,我們在CoNLL 2003命名實體識別(NER)數據集上微調BERT。 該數據集由200k個訓練單詞組成,這些單詞已註釋爲人員,組織,位置,雜項或其他(非命名實體)。 爲了進行微調,我們將最終隱藏表示提供給每個令牌i到NER標籤集上的分類層。 預測不以周圍的預測爲條件(即,非自迴歸和無CRF)。 爲了使其與WordPiece標記化兼容,我們將每個CoNLL標記化輸入字提供給我們的WordPiece標記化器,並使用與第一個子標記相對應的隱藏狀態作爲分類器的輸入。 例如:

在沒有對X進行預測的情況下。由於WordPiece標記化邊界是輸入的已知部分,因此對訓練和測試都進行了預測。 在圖3 (d)中也給出了一個可視化的表示。一個大小寫的WordPiece模型被用於NER,而一個無蓋的模型被用於所有其他任務。

表3:CoNLL-2003命名實體識別結果。 使用Dev set選擇超參數,並使用這些超參數在5次隨機重啓中平均報告的Dev和Test分數。

結果顯示在表3中。BERTLARGE在CoNLL-2003 NER測試中優於現有的SOTA,具有多任務學習的跨視圖訓練(Clark等,2018),+ 0.2。

4.4 SWAG

具有對抗性生成的情境(SWAG)數據集包含113k個句子對完成示例,用於評估基礎常識推理(Zellers等,2018)。 給定視頻字幕數據集中的句子,任務是在四個選項中決定最合理的延續。 例如:

使BERT適應SWAG數據集類似於對GLUE的適應。對於每個例子,我們構造四個輸入序列,每個輸入序列包含給定句子(句子A)和可能的繼續(句子B)的串聯。 我們引入的唯一任務特定參數是向量,其具有最終聚合表示的點積表示每個選擇i的得分。概率分佈是四種選擇的softmax:

P_i=\frac{e^{V_gC_i}}{\sum _j^4e^{V_gC_i}}

表4:SWAG開發和測試精度。 測試結果由SWAG作者對隱藏的標籤進行評分。 如SWAG論文所述,yHuman性能是用100個樣本測量的。

我們對模型進行了3個epoch的微調,學習率爲2e-5,批次大小爲16。結果如表4所示。BERTLARGE比作者的基線ESIM+ELMo系統高出27.1%。

5 消融研究

雖然我們已經展示了非常強大的實證結果,但到目前爲止所呈現的結果並未孤立BERT框架各個方面的具體貢獻。在本節中,我們將對BERT的多個方面進行消融實驗,以便更好地瞭解它們的相對重要性。

5.1 訓練前任務的影響

我們的核心主張之一是BERT的深度雙向性,這是通過掩蓋LM預訓練實現的,是BERT與以前的工作相比最重要的改進。爲了證明這一說法,我們評估了兩個使用完全相同的訓練前數據,微調方案和Transformer超參數作爲BERTBASE的新模型:

  • 無NSP:使用“蒙面LM”(MLM)訓練但沒有“下一句預測”(NSP)任務的模型。
  • LTR&No NSP:使用從左到右(LTR)LM而不是MLM訓練的模型。 在這種情況下,我們預測每個輸入字,不應用任何掩蔽。 左邊的約束也適用於微調,因爲我們發現使用雙向上下文進行預訓練並且使用雙向上下文進行微調總是更糟。此外,該模型在沒有NSP任務的情況下進行了預訓練。 這與OpenAI GPT直接相當,但使用我們更大的訓練數據集,輸入表示和我們的微調方案。

結果顯示在表5中。我們首先檢查NSP任務帶來的影響。我們可以看到,刪除NSP會嚴重損害QNLI,MNLI和SQuAD的性能。這些結果表明,我們的預訓練方法對於獲得先前提出的強有力的實證結果至關重要。

表5:使用BERTBASE架構消除預訓練任務。 沒有下一句話預測任務就訓練“沒有NSP”。 “LTR&No NSP”被訓練爲從左到右的LM,沒有下一個句子預測,如OpenAI GPT。 “+ BiLSTM”在微調期間在“LTR + No NSP”模型上添加隨機初始化的BiLSTM。

接下來,我們通過比較“No NSP”與“LTR&No NSP”來評估訓練雙向表示的影響。 LTR模型在所有任務上的性能都比MLM模型差,在MRPC和SQuAD上有極大的下降。對於SQuAD,直觀清楚的是LTR模型在跨度和令牌預測方面表現非常差,因爲令牌級隱藏狀態沒有右側上下文。對於MRPC,目前尚不清楚性能不佳是由於數據量小還是任務的性質,但我們發現這種不良性能在完整的超參數掃描中是一致的,並且有很多隨機重啓。

爲了真誠地嘗試加強LTR系統,我們嘗試在其上面添加一個隨機初始化的BiLSTM進行微調。這確實顯着改善了SQuAD的結果,但結果仍然比預先訓練的雙向模型差得多。它還會影響所有四個GLUE任務的性能。

我們認識到,也可以訓練單獨的LTR和RTL模型,並將每個令牌表示爲兩個模型的連接,就像ELMo所做的那樣。然而:(a)這是單方向模型的兩倍;(b)對於像QA這樣的任務來說,這是不直觀的,因爲RTL模型不能確定問題的答案;(c)由於深度雙向模型可以選擇使用左上下文或右上下文,因此嚴格來說,它不如深度雙向模型強大。

5.2 模型尺寸的影響

在本節中,我們將探討模型大小對微調任務準確性的影響。我們訓練了許多具有不同層數,隱藏單元和注意頭的BERT模型,同時使用與前面描述的相同的超參數和訓練過程。選定的GLUE任務的結果如表6所示。在此表中,我們報告了5次隨機重啓微調的平均開發集精度。

我們可以看到,較大的模型導致所有四個數據集的嚴格精度提高即使是MRPC,它只有3600個標記的訓練示例,與訓練前的任務有很大的不同。同樣令人驚訝的是,我們能夠在相對於現有文獻已經相當大的模型之上實現這種顯着的改進。

例如Vaswani et al.(2017)中探索的最大Transformer是(L = 6,H = 1024,A = 16),編碼器有100M參數,我們在文獻中找到的最大Transformer是(L = 64,H = 512,A = 2),235M參數(Al-Rfou等,2018)。相比之下,BERTBASE包含110M參數,BERTLARGE包含340M參數。

表6:BERT模型尺寸的燒蝕。 #L =層數; #H =隱藏的大小; #A =關注頭數。 “LM(ppl)”是保持訓練數據的蒙面LM困惑。

衆所周知,增加模型尺寸將導致機器翻譯和語言建模等大型任務的持續改進,這可通過表6中所示的LM延遲訓練數據的複雜性來證明。但是,我們相信這是第一個證明擴展到極端模型尺寸的工作也可以在非常小規模的任務上實現大幅改進,前提是該模型已經過充分預先培訓。

5.3 訓練步驟數量的影響

圖4顯示了從已經預訓練了k步的檢查點進行微調後的MNLI Dev精度。 這使我們可以回答以下問題:

圖4:多次訓練步驟的消融。 這顯示了微調後的MNLI精度,從已經預訓練了k步的模型參數開始。 x軸是k的值。

1.問題:BERT是否真的需要如此大量的預訓練(128,000字/批* 1,000,000步)才能實現高微調精度?

答:是的,BERTBASE在MNLI上訓練1M步的準確率幾乎是1.0%,而在500k步上訓練的準確率要高得多。

2.問題:MLM預訓練是否比LTR預訓練收斂慢,因爲每批中只有15%的單詞被預測而不是每個單詞?

答:MLM模型的收斂速度略慢於LTR模型。 然而,就絕對精度而言,MLM模型幾乎立即開始優於LTR模型。

5.4 基於特徵的BERT方法

到目前爲止所呈現的所有BERT結果都使用了微調方法,其中將簡單的分類層添加到預訓練模型,並且所有參數在下游任務上聯合微調。然而,基於特徵的方法具有某些優點,其中固定特徵從預訓練模型中提取。首先,並非所有NLP任務都可以通過Transformer編碼器體系結構輕鬆表示,因此需要添加特定於任務的模型體系結構。其次,能夠一次預先計算訓練數據的昂貴表示,然後在這種表示的基礎上使用更便宜的模型進行許多實驗,這有很大的計算優勢。

在本節中,我們通過在CoNLL-2003 NER任務上生成類似ELMo的預訓練上下文表示來評估BERT在基於特徵的方法中的表現。爲此,我們使用與第4.3節相同的輸入表示,但是使用來自一個或多個層的激活,而不微調BERT的任何參數。在分類層之前,這些上下文嵌入作爲一個隨機初始化的兩層768維BiLSTM的輸入。

表7:使用BERT和CoNLL-2003 NER基於特徵的方法的消融。 將來自指定層的激活組合並饋送到雙層BiLSTM中,而不向BERT反向傳播。

結果顯示在表7中。表現最佳的方法是連接來自預訓練變壓器的前四個隱藏層的令牌表示,其僅在微調整個模型後僅爲0.3 F1。這表明BERT對於微調和基於特徵的方法都是有效的。

6 結論

最近由於語言模式轉換學習的經驗改進表明,豐富的、無監督的預訓練是許多語言理解系統的一個組成部分。特別是,這些結果使得即使是低資源任務也能從非常深的單向體系結構中受益。我們的主要貢獻是將這些發現進一步推廣到深度雙向架構,允許相同的預訓練模型成功解決一系列廣泛的NLP任務。雖然實證結果很強,在某些情況下超過人類表現,但未來重要的工作是調查BERT可能會或可能不會捕獲的語言現象。

發佈了25 篇原創文章 · 獲贊 50 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章