XYZNOT

論文 · arXiv 1810.04805

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

發表於 cs.CL arXivPDF

用 XYZNOT 閱讀(全文翻譯與 AI 講解)

三句話總結

  1. 🎯 標準語言模型預訓練受限於單向(由左至右)的上下文,這對於句子層級任務並非最佳選擇,對問答等標記層級任務甚至有害。
  2. 🔧 提出了 BERT,利用遮蔽語言模型(Masked Language Model,Cloze)目標與下一句預測(Next Sentence Prediction)來預訓練多層雙向 Transformer 編碼器。
  3. 📈 在 11 項 NLP 任務中達到最先進(SOTA)成果,包括 80.5 的 GLUE 分數(絕對提升 +7.7 分)以及 MultiNLI 上 86.7% 的準確率(絕對提升 +4.6%)。

摘要

我們提出了一種名為 BERT 的新語言表徵模型,其代表來自 Transformers 的雙向編碼器表徵(Bidirectional Encoder Representations from Transformers)。與近期的語言表徵模型不同,BERT 旨在透過在所有層中共同考量左右雙向上下文,從未標記的文本中預訓練深度雙向表徵。因此,預訓練的 BERT 模型僅需額外增加一個輸出層即可進行微調,為廣泛的任務(如問答與語言推論)建立先進的模型,而無需大幅修改特定任務的架構。BERT 概念簡單且實證表現強大。它在 11 項自然語言處理任務上取得了全新的最先進(state-of-the-art)成果,包括將 GLUE 分數推升至 80.5%(絕對提升 7.7 個百分點)、MultiNLI 準確率提升至 86.7%(絕對提升 4.6 個百分點)、SQuAD v1.1 問答測試集 F1 達到 93.2(絕對提升 1.5 個百分點),以及 SQuAD v2.0 測試集 F1 達到 83.1(絕對提升 5.1 個百分點)。

英文原文摘要

We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications. BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).

論文解讀

問題與動機

早期的語言表徵模型主要依賴特徵式(feature-based)方法(如 ELMo)或微調式(fine-tuning)方法(如 OpenAI GPT)。儘管這些方法行之有效,但兩者都受到單向語言模型目標的限制:標準自迴歸模型嚴格按照由左至右(或由右至左)的順序處理文本。在單向模型中,標記(token)只能在自注意力層中關注前面的標記,以防止字詞在多層上下文中微不足道地「看到自己」。ELMo 嘗試透過淺層拼接分別訓練的由左至右與由右至左 LSTM 來實現雙向性,但這無法在每一層都捕捉到對雙向上下文的深度聯合調節。這種單向性限制了句子層級的表徵,且對問答等標記層級的下游任務特別不利,因為在問答任務中,同時理解左右上下文至關重要。

核心概念

  • 深度雙向 Transformer 架構:BERT 使用多層雙向 Transformer 編碼器,允許自注意力層在所有層中同時結合左右上下文進行條件約束。
  • 遮蔽語言模型(Masked Language Model, MLM):受克漏字(Cloze)任務啟發,BERT 隨機遮蔽 15% 的輸入標記,並訓練模型利用其上下文預測被遮蔽的標記,解決了「看到自己」的瑣碎退化問題。
  • 緩解預訓練與微調不一致:由於 [MASK] 標記在微調期間不會出現,被選中的 15% 標記中有 80% 會替換為 [MASK],10% 替換為隨機標記,其餘 10% 保持不變。
  • 下一句預測(Next Sentence Prediction, NSP):為了捕捉對自然語言推論(NLI)和問答(QA)至關重要的句對關係,BERT 預訓練了一個二元分類任務,預測句子 是自然接續句子 (),還是來自語料庫的隨機句子()。
  • 適用於下游任務的統一架構:下游任務可直接重用完全相同的預訓練架構,只需增加最少的額外參數(例如簡單的線性分類頭或起始/結束跨度指針)。

方法細節

模型配置

BERT 主要在兩種規格下進行評估:

  • : 層, 隱藏層大小, 個注意力頭,總參數量 = 。
  • : 層, 隱藏層大小, 個注意力頭,總參數量 = 。 前饋網路的濾波器大小為 。

輸入與輸出表徵

輸入可以表示單一文本序列,也可以是打包在一起的句對。嵌入向量由以下三者相加而成:

  1. WordPiece 標記嵌入(30,000 個標記的詞表)。
  2. 區段嵌入(Segment embeddings,學習得來的嵌入向量,用於識別標記是來自句子 還是句子 )。
  3. 學習得來的位置嵌入(Positional embeddings)。

每個序列均以 [CLS] 開頭。其最終隱藏向量 代表序列的聚合表徵。句對之間由 [SEP] 分隔。最終的標記隱藏表徵記為 。

預訓練目標

  1. Masked LM:給定被遮蔽的標記 ,將表徵 輸入詞表上的 softmax 函數,並計算交叉熵損失:
  2. Next Sentence Prediction:將聚合向量 輸入二元分類器: 整體的預訓練損失為平均遮蔽 LM 似然值與平均下一句預測似然值之和。

微調適配方式

  • 分類任務(GLUE):加入投射矩陣 ,損失計算為 。
  • 跨度抽取(SQuAD v1.1):學習起始向量 和結束向量 。標記 作為答案跨度起始點的機率為: 跨度 的得分為 ,在 的條件下取最大值。
  • 無解問題(SQuAD v2.0):擴展架構,允許將 [CLS] 標記作為空答案跨度,評分為 ,且僅在 時預測非空答案。

實驗結果

BERT 在 11 項 NLP 任務上進行了評估:

  • GLUE 排行榜: 取得了 80.5% 的平均 GLUE 分數(比先前的最佳成績絕對提升 7.7%),在 MNLI 上的準確率達到 86.7%(絕對提升 4.6%)。
  • SQuAD v1.1:作為單一模型, 在開發集(Dev)上獲得 84.1 EM 和 90.9 F1;結合 TriviaQA 預訓練的集成模型在測試集(Test)上達到 87.4 EM 和 93.2 F1,超越了人類表現(82.3 EM / 91.2 F1)。
  • SQuAD v2.0: 在測試集上達到 80.0 EM 和 83.1 F1,比先前的頂尖系統提升了 +5.1 F1。
  • SWAG: 在測試集上取得了 86.3% 的準確率,優於 OpenAI GPT(78.0%)和人類專家基準線(85.0%)。
  • 消融實驗結果:移除 NSP 會使 MNLI(-0.5%)、QNLI(-3.5%)和 SQuAD F1(-0.6%)的表現下降。將 MLM 替換為標準的由左至右(LTR)LM 則導致 SQuAD(-10.7 F1)和 MRPC(-9.2% 準確率)大幅下滑。

局限性與未解之題

  • 預訓練與微調的落差:人工生成的 [MASK] 標記在微調期間從未出現,需要依靠啟發式替換規則(80/10/10)來緩解不一致性。
  • 預訓練效率:由於 BERT 每個批次僅預測 15% 的標記,而非標準自迴歸模型中的 100%,因此需要更多的預訓練步數(1,000,000 步,每批次 128,000 個標記)才能收斂。
  • 二次方注意力瓶頸:標準 Transformer 注意力機制隨序列長度呈二次方()增長,使得長序列的運算成本非常昂貴,必須採用兩階段預訓練策略(90% 的步數在序列長度 128 下進行,10% 的步數在 512 下進行)。
  • 不適用於文本生成:作為雙向編碼器,BERT 的架構專為表徵和判別式下游任務設計,若不修改架構,無法直接執行自迴歸由左至右的文本生成。

關鍵術語

Masked Language Model (MLM)(遮蔽語言模型)
一種受克漏字(Cloze)任務啟發的預訓練目標,隨機將輸入標記替換為遮蔽符,並訓練模型從深層雙向上下文中重建原始標記。
Next Sentence Prediction (NSP)(下一句預測)
一種二元預訓練任務,模型需預測給定的第二個句子區段在邏輯上是否緊接在第一個區段之後,或是從語料庫中隨機採樣而來。
[CLS]
放置在每個序列開頭的特殊分類標記,其最終隱藏狀態在分類任務中用作整體的序列聚合表徵。
[SEP]
在單一打包輸入序列中,用於分隔不連續或不同句子區段的特殊標記。
WordPiece
BERT 使用的次詞(subword)分詞演算法,擁有 30,000 個標記的詞表,用於處理未登錄詞(OOV)並將單詞切分為次詞單元。
Segment Embeddings(區段嵌入)
加在輸入標記嵌入上的學習型嵌入,用於在打包的句對中區分標記屬於句子跨度 A 還是句子跨度 B。
Fine-tuning(微調)
一種下游訓練策略,使用標註資料端對端更新預訓練 BERT 的所有參數,並同時訓練最少的特定任務輸出層。
Feature-based approach(特徵式方法)
一種替代策略,從 BERT 各層提取固定的上下文表徵而不更新其參數,隨後將其輸入至獨立的特定任務架構中。

常見問題

為什麼 BERT 會用隨機標記替換遮蔽標記或保持原樣,而不是全部使用 [MASK]?

因為 [MASK] 標記在微調期間絕不會出現,如果將每個目標標記都替換為 [MASK],會在預訓練和微調之間產生落差。BERT 透過將選定標記中的 80% 替換為 [MASK]、10% 替換為隨機標記、10% 保持原始標記不變來緩解這個問題,迫使模型在所有標記上保持分散式表徵。

BERT 和 OpenAI GPT 有什麼不同?

雖然兩者都是基於 Transformer 的微調模型,但 OpenAI GPT 使用由左至右的 Transformer 解碼器,其中注意力機制受到限制,每個標記只能關注前面的標記;BERT 則使用雙向 Transformer 編碼器,透過遮蔽語言模型預訓練目標,使注意力機制在所有層中都能同時關注左右上下文。

BERT 可以用作特徵提取器,而不是進行端對端微調嗎?

可以。在 CoNLL-2003 命名實體識別(NER)任務中,提取並拼接 BERT 頂部四個隱藏層的標記激活值,並將其輸入至 2 層 BiLSTM 中,在開發集上達到了 96.1 的 F1 分數,僅比完全微調整個模型(96.4 F1)低 0.3 F1。

為什麼 BERT 採用兩階段預訓練序列長度排程?

自注意力機制的計算複雜度隨序列長度呈二次方增長。為了節省運算時間,BERT 前 900,000 步(占訓練的 90%)使用長度 128 的序列進行預訓練,剩餘的 100,000 步則使用長度 512 的序列進行訓練,以學習位置嵌入。

本頁解讀由 AI 根據論文生成,可能有錯誤;細節請以原文為準。

用 XYZNOT 閱讀(全文翻譯與 AI 講解)