每日最新頭條.有趣資訊

8 篇論文梳理 BERT 相關模型

新智元報導

來源:微軟研究院 AI 頭條

【新智元導讀】BERT 自從在 arXiv 上發表以來獲得了很大的成功和關注,打開了 NLP 中 2-Stage 的潘多拉魔盒,隨後湧現了一大批類似於 “BERT” 的預訓練模型。本文通過8篇論文梳理了BERT相關論文,並分析了BERT在各種任務中的效用。

BERT 自從在 arXiv 上發表以來獲得了很大的成功和關注,打開了 NLP 中 2-Stage 的潘多拉魔盒。

隨後湧現了一大批類似於 “BERT” 的預訓練(pre-trained)模型,有引入 BERT 中雙向上下文信息的廣義自回歸模型 XLNet,也有改進 BERT 訓練方式和目標的 RoBERTa 和 SpanBERT,還有結合多任務以及知識蒸餾(Knowledge Distillation)強化 BERT 的 MT-DNN 等。

除此之外,還有人試圖探究 BERT 的原理以及其在某些任務中表現出眾的真正原因。以上種種,被戲稱為 BERTology。本文中,微軟亞洲研究院知識計算組實習生陳永強嘗試匯總上述內容,作拋磚引玉。

目錄

近期 BERT 相關模型一覽

XLNet 及其與 BERT 的對比

RoBERTa

SpanBERT

MT-DNN 與知識蒸餾

對 BERT 在部分 NLP 任務中表現的深入分析

BERT 在 Argument Reasoning Comprehension 任務中的表現

BERT 在 Natural Language Inference 任務中的表現

近期 BERT 相關模型一覽

1. XLNet 及其與 BERT 的對比

我們的討論從 XLNet 團隊的一篇博文開始,他們想通過一個公平的比較證明最新預訓練模型 XLNet 的優越性。但什麽是 XLNet 呢?

圖 1:XLNet 和 BERT 對比圖

我們知道,BERT 是典型的自編碼模型(Autoencoder),旨在從引入噪聲的數據重建原數據。而 BERT 的預訓練過程採用了降噪自編碼(Variational Autoencoder)思想,即 MLM(Mask Language Model)機制,區別於自回歸模型(Autoregressive Model),最大的貢獻在於使得模型獲得了雙向的上下文信息,但是會存在一些問題:

1. Pretrain-finetune Discrepancy:預訓練時的 [MASK] 在微調(fine-tuning)時並不會出現,使得兩個過程不一致,這不利於 Learning。

2. Independence Assumption:每個 token 的預測是相互獨立的。而類似於 New York 這樣的 Entity,New 和 York 是存在關聯的,這個假設則忽略了這樣的情況。

自回歸模型不存在第二個問題,但傳統的自回歸模型是單向的。XLNet 團隊想做的,就是讓自回歸模型也獲得雙向上下文信息,並避免第一個問題的出現。

他們主要使用了以下三個機制:

Permutation Language Model

Two-Stream Self-Attention

Recurrence Mechanism

接下來我們將分別介紹這三種機制。

Permutation Language Model

圖 2:XLNet 模型框架圖

在預測某個 token 時,XLNet 使用輸入的 permutation 獲取雙向的上下文信息,同時維持自回歸模型原有的單向形式。這樣的好處是可以不用改變輸入順序,只需在內部處理。

它的實現採用了一種比較巧妙的方式:使用 token 在 permutation 的位置計算上下文信息。如對於,當前有一個 2 -> 4 ->3 ->1 的排列,那麽我們就取出 token_2 和 token_4 作為 AR 的輸入預測 token_3。不難理解,當所有 permutation 取完時,我們就能獲得所有的上下文信息。

這樣就得到了我們的目標公式:

但是在原來的公式中,我們隻使用了 h_θ (x_(Z

此外,為了降低模型的優化難度,XLNet 使用了 Partial Prediction,即隻預測當前 permutation 位置 c 之後的 token,最終優化目標如下所示。

Two-Stream Self-Attention

圖 3:Two-Stream Self-Attention 機制

該機制所要解決的問題是,當我們獲得了 g_θ (x_,z_t) 後,我們只有該位置信息以及 “上文” 的信息,不足以去預測該位置後的 token;而原來的 h_θ (x_) 則因為獲取不到位置信息,依然不足以去預測。因此,XLNet 引入了 Two-Stream Self-Attention 機制,將兩者結合起來。

Recurrence Mechanism

圖 4:Recurrence Mechanism 機制

該機制來自 Transformer-XL,即在處理下一個 segment 時結合上個 segment 的 hidden representation,使得模型能夠獲得更長距離的上下文信息。而在 XLNet 中,雖然在前端採用相對位置編碼,但在表示 h_θ (x_) 的時候,涉及到的處理與 permutation 獨立,因此還可以沿用這個機制。該機制使得 XLNet 在處理長文檔時具有較好的優勢。

XLNet 與 BERT 的區別示例

圖 5:XLNet 與 BERT 的區別示例

為了說明 XLNet 與 BERT 的區別,作者舉了一個處理 “New York is a city” 的例子。這個可以直接通過兩個模型的公式得到。假設我們要處理 New York 這個單詞,BERT 將直接 mask 這兩個 tokens,使用 “is a city” 作為上下文進行預測,這樣的處理忽略了 New 和 York 之間的關聯;而 XLNet 則通過 permutation 的形式,可以使得模型獲得更多如 York | New, is a city 這樣的信息。

公平地比較 XLNet 與 BERT

為了更好地說明 XLNet 的優越性,XLNet 團隊發表了開頭提到的博文 “A Fair Comparison Study of XLNet and BERT”。

在這篇博文中,XLNet 團隊控制 XLNet 的訓練數據、超參數(Hyperparameter)以及網格搜索空間(Grid Search Space)等與 BERT 一致,同時還給出了三個版本的 BERT 進行比較。BERT 一方則使用以下三個模型中表現最好的模型。

實驗結果如下。

表 1:XLNet 與 BERT 實驗結果對比

從中可以看出,在相同設定情況下,XLNet 完勝 BERT。但有趣的是:

XLNet 在使用 Wikibooks 數據集時,在 MRPC(Microsoft Research Paraphrase Corpus: 句子對來源於對同一條新聞的評論,判斷這一對句子在語義上是否相同)和 QQP(Quora Question Pairs: 這是一個二分類數據集。目的是判斷兩個來自於 Quora 的問題句子在語義上是否是等價的)任務上獲得了不弱於原版 XLNet 的表現;

BERT-WWM 模型普遍表現都優於原 BERT;

去掉 NSP(Next Sentence Prediction)的 BERT 在某些任務中表現會更好;

除了 XLNet,還有其他模型提出基於 BERT 的改進,讓 BERT 發揮更大的潛能。

2. RoBERTa: A Robustly Optimized BERT Pretraining Approach

表 2:RoBERTa 在 GLUE 中的實驗結果

RoBERTa 是最近 Facebook AI 聯合 UW 發布的 BERT 預訓練模型,其改進主要是如圖所示幾點,除了調參外,還引入了 Dynamically Change Mask Pattern 並移除 Next Sentence Prediction,使得模型在 GLUE Benchmark 排名第一。作者的觀點是:BERT is significantly undertrained

表 3:RoBERTa 各個機制的效果比較實驗

不同於原有的 BERT 的 MLM 機制,作者在總共 40 個 epoch 中使用 10 種不同的 Mask Pattern,即每種 Mask Pattern 訓練 4 代,作為 static 策略;作者還引入了 dynamic masking 策略,即每輸入一個 sequence 就為其生成一個 mask pattern。最終發現,新策略都比原 BERT 好,而 dynamic 總體上比 static 策略要好一些,並且可以用於訓練更大的數據集以及更長的訓練步數,因此最終選用 dynamic masking pattern。

作者還通過替換 NSP 任務進行預訓練。雖然 BERT 中已經做了嘗試去掉 NSP 後的對比,結果在很多任務中表現會下降,但是包括前文 XLNet 團隊所做的實驗都在質疑這一結論。

選用的新策略包括:

Sentence-Pair+NSP Loss:與原 BERT 相同;

Segment-Pair+NSP Loss:輸入完整的一對包含多個句子的片段,這些片段可以來自同一個文檔,也可以來自不同的文檔;

Full-Sentences:輸入是一系列完整的句子,可以是來自同一個文檔也可以是不同的文檔;

Doc-Sentences:輸入是一系列完整的句子,來自同一個文檔;

結果發現完整句子會更好,來自同一個文檔的會比來自不同文檔的好一些,最終選用 Doc-Sentences 策略。

表 4:RoBERTa 在更多訓練數據和更久訓練時間下的實驗結果

作者還嘗試了更多的訓練數據以及更久的訓練時間,發現都能提升模型的表現。

這種思路一定程度上與 OpenAI 前段時間放出的 GPT2.0 暴力擴充數據方法有點類似,但是需要消耗大量的計算資源。

3. SpanBERT: Improving Pre-training by Representing and Predicting Spans

圖 6:SpanBER 模型框架以及在 GLUE 中的實驗結果

不同於 RoBERTa,SpanBERT 通過修改模型的預訓練任務和目標使模型達到更好的效果。其修改主要是三個方面:

Span Masking:這個方法與之前 BERT 團隊放出 WWM(Whole Word Masking)類似,即在 mask 時 mask 一整個單詞的 token 而非原來單個 token。每次 mask 前,從一個幾何分布中采樣得到需要 mask 的 span 的長度,並等概率地對輸入中為該長度的 span 進行 mask,直到 mask 完 15% 的輸入。

Span Boundary Object:使用 span 前一個 token 和末尾後一個 token 以及 token 位置的 fixed-representation 表示 span 內部的一個 token。並以此來預測該 token,使用交叉熵作為新的 loss 加入到最終的 loss 函數中。該機制使得模型在 Span-Level 的任務種能獲得更好的表現。

Single-Sequence Training:直接輸入一整段連續的 sequence,這樣可以使得模型獲得更長的上下文信息。

在這三個機制下,SpanBERT 使用與 BERT 相同的語料進行訓練,最終在 GLUE 中獲得 82.8 的表現,高於原版 Google BERT 2.4%,高於他們調參後的 BERT 1%,同時在 Coreference Resolution 上將最好結果提高了 6.6%。

4. MT-DNN 與知識蒸餾

Multi-Task Deep Neural Networks for Natural Language Understanding

這篇論文旨在將 Multi-Task 與 BERT 結合起來,使得模型能在更多的數據上進行訓練的同時還能獲得更好的遷移能力(Transfer Ability)。

圖 7:MT-DNN 模型框架以及訓練算法

模型架構如上圖所示,在輸入以及 Transformer 層,採用與 BERT 相同的機制,但是在後續處理不同任務數據時使用不同的任務參數與輸出的表示做點積(Dot Production),用不同的激活函數(Activation Function)和損失函數(Loss Function)進行訓練。

圖 8:MT-DNN 在不同任務之間的遷移能力

MT-DNN 具有不錯的遷移能力。如上圖所示,MT-DNN 只需要 23 個任務樣本就可以在 SNLI 中獲得 82% 的準確率!尤其是 BERT 在一些小數據集上微調可能存在無法收斂表現很差的情況,MT-DNN 就可以比較好地解決這一問題,同時節省了新任務上標注數據以及長時間微調的成本。

Improving Multi-Task Deep Neural Networks via Knowledge Distillation for Natural Language Understanding

圖 9:使用知識蒸餾對 MT-DNN 模型進行優化

由於 MT-DNN 可以看作一個 ensemble 過程,所以就可以用知識蒸餾(Knowledge Distillation)進行優化,該方法能提升很多 ensemble 模型的表現,感興趣的讀者可以自行了解相關內容。

本文的知識蒸餾過程即對於不同的任務,使用相同的結構在對應的數據集上進行微調,這就可以看作每個任務的 Teacher,他們分別擅長解決對應的問題。

Student 則去擬合 target Q,並且使用 soft 交叉熵損失(Cross Entropy Loss)。為什麽使用 soft 交叉熵損失呢?因為有些句子的意思可能並不是絕對的,比如 “I really enjoyed the conversation with Tom" 有一定概率說的是反語,而不是 100% 的積極意思。這樣能讓 Student 學到更多的信息。

採用知識蒸餾後,模型在 GLUE 中的表現增長了 1%,目前排名前三。我們還可以期待 MT-DNN 機制在 XLNet 上等其他預訓練模型中的表現。

對 BERT 在部分 NLP 任務中表現的深入分析

上文的 BERT 在 NLP 許多任務中都取得了耀眼的成績,甚至有人認為 BERT 幾乎解決了 NLP 領域的問題,但接下來的兩篇文章則給人們澆了一盆冷水。

1. BERT 在 Argument Reasoning Comprehension 任務中的表現

Probing Neural Network Comprehension of Natural Language Arguments

表 5:BERT 在 Argument Reasoning Comprehension 任務中的表現

該文主要探究 BERT 在 ARCT(Argument Reasoning Comprehension)任務中取得驚人表現的真正原因。

首先,ARCT 任務是 Habernal 等人在 NACCL 2018 中提出的,即在給定的前提(premise)下,對於某個陳述(claim),相反的兩個依據(warrant0,warrant1)哪個能支持前提到陳述的推理。

他們還在 SemEval-2018 中指出,這個任務不僅需要模型理解推理的結構,還需要一定的外部知識。在本例中,這個外部知識可以是 “Sport Leagues 是一個和 Sport 相關的某組織”。

該任務中表現最好的模型是 GIST,這裡不詳細展開,有興趣的讀者可以關注該論文。

圖 10:模型框架與實驗結果

作者嘗試使用 BERT 處理該任務,調整輸入為 [CLS,Claim,Reason,SEP,Warrant],通過共用的 linear layer 獲得一個 logit(類似於邏輯回歸),分別用 warrant0 和 warrant1 做一次,通過 softmax 歸一化成兩個概率,優化目標是使得答案對應的概率最大。

最終該模型在測試集中獲得最高 77% 的準確率。需要說明的是,因為 ARCT 數據集過小,僅有 1210 條訓練樣本,使得 BERT 在微調時容易產生不穩定的表現。因此作者進行了 20 次實驗,去掉了退化(Degeneration,即在訓練集上的結果非常差)的實驗結果,統計得到上述表格。

表 6:作者的探索性實驗(Probing Experiments)

雖然實驗結果非常好,但作者懷疑:這究竟是 BERT 學到了需要的語義信息,還是只是過度利用了數據中的統計信息,因此作者提出了關於 cue 的一些概念:

A Cue's Applicability:在某個數據點 i,label 為 j 的 warrant 中出現但在另一個 warrant 中不出現的 cue 的個數。

A Cue's Productivity:在某個數據點 i,label 為 j 的 warrant 中出現但在另一個 warrant 中不出現,且這個數據點的正確 label 是 j,佔所有上一種 cue 的比例。直觀來說就是這個 cue 能被模型利用的價值,只要這個數據大於 50%,那麽我們就可以認為模型使用這個 cue 是有價值的。

A Cue's Coverage:這個 cue 在所有數據點中出現的次數。

這樣的 cue 有很多,如 not、are 等。如上圖表一所示是 not 的出現情況,可以看出 not 在 64% 的數據點中都有出現,並且模型只要選擇有 not 出現的 warrant,正確的概率是 61%。

作者懷疑模型學到的是這樣的信息。如果推論成立,只需輸入 warrant,模型就能獲得很好的表現。因此作者也做了上圖表二所示的實驗。

可以看出,隻輸入 w 模型就獲得了 71% 的峰值表現,而輸入(R,W)則能增加 4%,輸入(C,W)則能增加 2%,正好 71%+4%+2%=77%,這是一個很強的證據。

圖 11:對抗數據集以及在對抗數據集上的實驗結果

為了充分證明推論的正確性,作者構造了對抗數據集(Adversarial Dataset),如上圖例子所示,對於原來的結構:R and W -> C,變換成:Rand !W -> !C(這裡為了方便,用!表示取反)

作者首先讓模型在原 ARCT 數據集微調並在對抗數據集評測(Evaluation),結果比隨機還要糟糕。後來又在對抗數據集微調並在對抗數據集評測,獲得表現如上圖第二個表所示。

從實驗結果來看,對抗數據集基本上消除了 cue 帶來的影響,讓 BERT 真實地展現了其在該任務上的能力,與作者的猜想一致。

雖然實驗稍顯不足(如未充分說明模型是否收斂,其他模型在對抗數據集中的表現如何等),但本文給 BERT 的火熱澆了一盆冷水,充分說明了 BERT 並不是萬能的,我們必須冷靜思考 BERT 如今取得驚人表現的真正原因。

2. BERT 在 Natural Language Inference 任務中的表現

Right for the Wrong Reasons: Diagnosing Syntactic Heuristics in Natural Language

這是另一篇對 BERT 等模型在自然語言推理(Natural Language Inference,NLI)任務中表現的探討。

圖 12:NLI 任務中 Heuristic 示意圖

作者首先假設在 NLI 中表現好的模型可能利用了三種 Heuristic,而所謂的 Heuristic 即在 Premise 中就給了模型一些提示,有如下三種:

Lexical Overlap:對應的 Hypothesis 是 Premise 的子序列

Subsequence:對應的 Hypothesis 是 Premise 的子串

Constituent:Premise 的語法樹會覆蓋所有的 Hypothesis

基於這個假設,作者也做了實驗並觀察到,MNLI 訓練集中許多數據點都存在這樣的 Heuristic,且對應的選項是正確的數量遠多於不正確。針對這種情況,作者構造了 HANS 數據集,均衡兩種類型樣本的分布,並且標記了 premise 是否 entail 上述幾種 Heuristic。

實驗時模型在 MNLI 數據集微調,在 HANS 數據集評測,結果 entailment 類型的數據點中模型都表現不錯,而在 non-entailment 類型中模型表現欠佳。這一實驗結果支持了作者的假設:模型過度利用了 Heuristic 信息。

圖 13:模型在 HANS 數據集上的結果分析

但是作者並不十分確定這種實驗結果是什麽原因導致的,並提出如下猜想:

HANS 數據集太難了?不。作者讓人類進行測試,發現人類在兩種類型的數據中準確率分別為 77% 和 75%,遠高於模型。

是模型缺乏足夠的表示能力嗎?不。ICLR 2019《RNNs implicitly implement tensor-product representations》給出了一定的證據,表示 RNN 足夠在 SNLI 任務中已經學到一定的關於結構的信息。

那就是 MNLI 數據集並不好,缺乏足夠的信號讓模型學會 NLI。

因此作者在訓練集中加入了一定的 HANS 數據,構造了 MNL + 數據集,讓模型在該數據集微調,最終獲得了如上圖所示的結果。為了證明 HANS 對模型學到 NLI 的貢獻,作者還讓在 MNL + 上微調的模型在另一個數據集中做了評測,模型表現都有提升。

總結

本文總結了 BERT 提出以來一些最新的發展。

BERT 是一個優秀的預訓練模型,它的預訓練思想可以用來改進其他模型。BERT 可以更好,我們可以設置新的訓練方式和目標,讓其發揮更大的潛能。

但 BERT 並沒有想象中的那麽好,我們必須冷靜對待 BERT 在一些任務中取得不錯表現的原因 —— 究竟是因為 BERT 真正學到了對應的語義信息,還是因為數據集中數據的不平衡導致 BERT 過度使用了這樣的信號。

獲得更多的PTT最新消息
按讚加入粉絲團