最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

機器之心發表於2018-10-12

本文介紹了一種新的語言表徵模型 BERT——來自 Transformer 的雙向編碼器表徵。與最近的語言表徵模型不同,BERT 旨在基於所有層的左、右語境來預訓練深度雙向表徵。BERT 是首個在大批句子層面和 token 層面任務中取得當前最優效能的基於微調的表徵模型,其效能超越許多使用任務特定架構的系統,重新整理了 11 項 NLP 任務的當前最優效能記錄。

研究證明語言模型預訓練可以有效改進許多自然語言處理任務,包括自然語言推斷、複述(paraphrasing)等句子層面的任務,以及命名實體識別、SQuAD 問答等 token 層面的任務。前者通過對句子進行整體分析來預測句子之間的關係,後者則要生成 token 級別的細粒度輸出。

目前將預訓練語言表徵應用於下游任務存在兩種策略:基於特徵的策略和微調策略(fine-tuning)。基於特徵的策略(如 ELMo)使用將預訓練表徵作為額外特徵的任務專用架構。微調策略(如生成預訓練 Transformer (OpenAI GPT))引入了任務特定最小引數,通過簡單地微調預訓練引數在下游任務中進行訓練。在之前的研究中,兩種策略在預訓練期間使用相同的目標函式,利用單向語言模型來學習通用語言表徵。

本論文作者(即 Google AI Language 團隊的研究人員)認為現有的技術嚴重製約了預訓練表徵的能力,微調策略尤其如此。其主要侷限在於標準語言模型是單向的,這限制了可以在預訓練期間使用的架構型別。例如,OpenAI GPT 使用的是從左到右的架構,其中每個 token 只能注意 Transformer 自注意力層中的先前 token。這些侷限對於句子層面的任務而言不是最佳選擇,對於 token 級任務(如 SQuAD 問答)則可能是毀滅性的,因為在這種任務中,結合兩個方向的語境至關重要。

本文通過 BERT(Bidirectional Encoder Representations from Transformers)改進了基於微調的策略。BERT 提出一種新的預訓練目標——遮蔽語言模型(masked language model,MLM),來克服上文提到的單向侷限。MLM 的靈感來自 Cloze 任務(Taylor, 1953)。MLM 隨機遮蔽輸入中的一些 token,,目標在於僅基於遮蔽詞的語境來預測其原始詞彙 id。與從左到右的語言模型預訓練不同,MLM 目標允許表徵融合左右兩側的語境,從而預訓練一個深度雙向 Transformer。除了 MLM,我們還引入了一個「下一句預測」(next sentence prediction)任務,該任務聯合預訓練文字對錶徵。

本文貢獻如下:

  • 展示了雙向預訓練語言表徵的重要性。不同於 Radford 等人(2018)使用單向語言模型進行預訓練,BERT 使用 MLM 預訓練深度雙向表徵。本研究與 Peters 等人(2018)的研究也不同,後者使用的是獨立訓練的從左到右和從右到左 LM 的淺層級聯。

  • 證明了預訓練表徵可以消除對許多精心設計的任務特定架構的需求。BERT 是首個在大批句子層面和 token 層面任務中取得當前最優效能的基於微調的表徵模型,其效能超越許多使用任務特定架構的系統。

  • BERT 重新整理了 11 項 NLP 任務的當前最優效能記錄。本論文還報告了 BERT 的模型簡化測試(ablation study),證明該模型的雙向特性是最重要的一項新貢獻。程式碼和預訓練模型將釋出在 goo.gl/language/bert。

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

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

論文地址:https://arxiv.org/pdf/1810.04805.pdf

摘要:本文介紹了一種新的語言表徵模型 BERT,意為來自 Transformer 的雙向編碼器表徵(Bidirectional Encoder Representations from Transformers)。與最近的語言表徵模型(Peters et al., 2018; Radford et al., 2018)不同,BERT 旨在基於所有層的左、右語境來預訓練深度雙向表徵。因此,預訓練的 BERT 表徵可以僅用一個額外的輸出層進行微調,進而為很多工(如問答和語言推斷任務)建立當前最優模型,無需對任務特定架構做出大量修改。

BERT 的概念很簡單,但實驗效果很強大。它重新整理了 11 個 NLP 任務的當前最優結果,包括將 GLUE 基準提升至 80.4%(7.6% 的絕對改進)、將 MultiNLI 的準確率提高到 86.7%(5.6% 的絕對改進),以及將 SQuAD v1.1 的問答測試 F1 得分提高至 93.2 分(提高 1.5 分)——比人類表現還高出 2 分。

BERT

本節介紹 BERT 及其實現細節。

模型架構

BERT 的模型架構是一個多層雙向 Transformer 編碼器,基於 Vaswani 等人 (2017) 描述的原始實現,在 tensor2tensor 庫中釋出。由於 Transformer 的使用最近變得很普遍,而且我們的實現與原始版本實際相同,我們將不再贅述模型架構的背景。

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

  • BERTBASE: L=12, H=768, A=12, 總引數=110M 

  • BERTLARGE: L=24, H=1024, A=16, 總引數=340M

為了比較,BERTBASE 的模型尺寸與 OpenAI GPT 相當。然而,BERT Transformer 使用雙向自注意力機制,而 GPT Transformer 使用受限的自注意力機制,導致每個 token 只能關注其左側的語境。我們注意到,雙向 Transformer 在文獻中通常稱為「Transformer 編碼器」,而只關注左側語境的版本則因能用於文字生成而被稱為「Transformer 解碼器」。圖 1 直觀顯示了 BERT、OpenAI GPT 和 ELMo 的比較結果。

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

圖 1:預訓練模型架構之間的區別。BERT 使用雙向 Transformer,OpenAI GPT 使用從左到右的 Transformer,ELMo 使用獨立訓練的從左到右和從右到左 LSTM 的級聯來生成下游任務的特徵。三種模型中,只有 BERT 表徵會基於所有層中的左右兩側語境。

預訓練任務

與 Peters 等人 (2018) 和 Radford 等人 (2018) 不同,我們不使用傳統的從左到右或從右到左的語言模型來預訓練 BERT,而是使用兩個新型無監督預測任務。

任務 #1:Masked LM

為了訓練深度雙向表徵,我們採取了一個直接的方法,隨機遮蔽輸入 token 的某些部分,然後預測被遮住的 token。我們將這一步驟稱為「masked LM」(MLM),不過它在文獻中通常被稱為 Cloze 任務 (Taylor, 1953)。在這種情況下,對應遮蔽 token 的最終隱藏向量會輸入到 softmax 函式中,並如標準 LM 中那樣預測所有詞彙的概率。在所做的所有實驗中,我們隨機遮住了每個序列中 15% 的 WordPiece token。與去噪自編碼器 (Vincent et al., 2008) 相反,我們僅預測遮蔽單詞而非重建整個輸入。

任務 #2:下一句預測

很多重要的下游任務(如問答(QA)和自然語言推斷(NLI))基於對兩個文字句子之間關係的理解,這種關係並非通過語言建模直接獲得。為了訓練一個理解句子關係的模型,我們預訓練了一個二值化下一句預測任務,該任務可以從任意單語語料庫中輕鬆生成。具體來說,選擇句子 A 和 B 作為預訓練樣本:B 有 50% 的可能是 A 的下一句,也有 50% 的可能是來自語料庫的隨機句子。

實驗

這部分,我們將展示 BERT 在 11 個 NLP 任務上的微調結果。

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

圖 3:我們的任務特定模型是由向 BERT 新增了一個額外的輸出層而形成的,因此一小部分引數需要從頭開始學習。在眾多工中,(a) 和 (b) 任務是序列級任務,(c) 和 (d) 是 token 級任務,圖中 E 表示輸入嵌入,T_i 表示 token i 的語境表徵,[CLS] 是分類輸出的特殊符號,[SEP] 是分割非連續 token 序列的特殊符號。

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

表 1:GLUE 測試結果,評分由 GLUE 評估伺服器得到。每個任務下面的數字表示訓練樣本的數量。「Average」列與 GLUE 官方分數略微不同,因為我們排除了有問題的 WNLI 集。OpenAI GPT = (L=12, H=768, A=12);BERT_BASE = (L=12, H=768, A=12);BERT_LARGE = (L=24, H=1024, A=16)。BERT 和 OpenAI GPT 是單個模型、單個任務。所有結果來自於以下地址:https://gluebenchmark.com/leaderboard 和 https://blog.openai. com/language-unsupervised/。

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

表 2:SQuAD 結果。BERT 整合是使用不同預訓練檢查點和微調種子(fine-tuning seed)的 7x 系統。

最強NLP預訓練模型!谷歌BERT橫掃11項NLP任務記錄

表 3:CoNLL-2003 命名實體識別結果。超引數通過開發集來選擇,得出的開發和測試分數是使用這些超引數進行五次隨機 restart 的平均值。

相關文章