一起讀論文 | 爲什麼BERT會在許多NLP任務中表現得很好?

導讀:今天給大家解讀一篇關於BERT模型研究的綜述類論文《 A Primer in BERTology: What we know about how BERT works》。基於Transformer的模型已經被證實可以有效地處理從序列標記到問題解答等不同類型的NLP任務,其中一種稱爲BERT的衍生模型得到了廣泛使用。但是,我們對其內部運作知之甚少。這篇論文把圍繞BERT進行的相關研究工作定義爲BERTology。在這個框架下,對BERT進行了較爲詳細的分析,旨在嘗試回答一些有關BERT爲什麼在這麼多NLP任務中表現良好的問題。論文的內容包括:BERT學習到的知識的類型、知識被表示在什麼位置、BERT是如何學習知識的以及研究人員提出的改進BERT的方法等。

點評:這是一篇難得的關於BERT的研究綜述論文,圍繞以上內容概述了一些最新的BERT研究成果及結論,還討論了截止目前研究的侷限性及未來研究方向,推薦給大家。因此,這期《一起讀論文》去粗取精,僅保留重要的結論信息,供大家參考學習。

研究背景及動機

自2017年被提出以來,Transformer模型因其出色的並行化及長範圍依賴的建模能力,已經暴風雨般地席捲了NLP領域。其中,最知名的衍生模型就是BERT。在許多基準任務中,BERT取得了當前最優的結果。但是,關於BERT,研究人員清楚的是它表現非常地好,卻不清楚爲什麼它能表示得那麼好。

因此,本文概述了截至目前BERT學習到了什麼,重點關注尚未解決的問題。論文的主要內容包括:BERT學習到的知識的類型、知識被表示在什麼位置、BERT是如何學習知識的以及研究人員提出的改進BERT的方法等。本文也是根據這些內容來組織的。

研究內容

BERT Embeddings

相比較word2vec、GloVe等傳統的靜態嵌入 (embeddings),BERT的表徵 (representations) 是根據上下文而隨時變化的,即每個輸入的字符被表示成一個依賴於在該字符出現位置的特定的上下文的向量。

  1. BERT的語境化嵌入 (contextualized embeddings) 能夠形成與詞義相對應的清晰明瞭的聚類,證實了分佈式假設對這些表徵是成立的。但是,對於同樣的詞,其表徵也會有所不同,這取決於該詞在句中出現的位置。
  2. 越靠後的BERT層能夠輸出更多的特定上下文的表徵。

BERT學習到了哪些知識?

1. 語法知識

  1. BERT表示是分層的,而不是線性的,即除了單詞順序信息之外,還有類似於語法樹的結構;
  2. BERT嵌入能對有關詞性標註、句法塊和角色等信息進行編碼。 但是,BERT的語法知識是不完整的;
  3. 語法結構不是直接在自注意力權重中進行編碼,但是可以對這些權重進行轉換以反映語法結構;
  4. 在做完形填空任務時,BERT會考慮到主謂一致問題。BERT比scope violations更擅長檢測出如ever等負極詞(NPIs, Negative Polarity Items)以及與它們一起連用的那些詞(如whether);
  5. BERT不理解否定,也對格式錯誤的輸入不敏感;
  6. BERT的句法結構編碼並不表示它實際上依賴於該知識。

2. 語義知識

  1. BERT能對語義角色有一定的瞭解;
  2. BERT能對有關實體類型,關係,語義角色和proto-roles的信息進行編碼;
  3. BERT不擅長表徵數字,造成這個問題的部分原因在於BERT的wordpiece分詞法,因爲相似值的數字會被切分成顯著不同的詞塊 (word chunks)。

3. 世界知識

  1. 對於某些關係類型,vanilla BERT在依賴知識庫 (knowledge bases) 的方法方面非常具有競爭力,因爲它能夠很好地泛化到未知的數據。但是,需要好的模板語句才能抽取BERT的知識。
  2. BERT無法根據學習到的世界知識進行推理。

定位語言學知識

1. 自注意力頭 (Self-attention heads)

  1. 注意力機制對於理解Transformer模型很有用,而且一些研究建議對注意力頭類型進行分類:
    • 關注這個單詞本身;
    • 關注位於這個單詞前面或後面的單詞;
    • 關注所在的句子的結尾;
    • 關注位於這個單詞前面或後面的詞項(tokens)、[CLS]、[SEP]、標點;
    • 全局關注整個句子
  2. 注意力權重的明確意義在於:在計算當前單詞的下一個表徵時,一個特定的單詞將會被賦予多少權重。但是,大多數自注意力頭並不直接對任何重要的語言學信息進行編碼,因爲不到一半的自注意力頭具有"異構"模式;
  3. 一些BERT的注意力頭似乎專注於某些類型的句法關係
  4. 沒有任何一個注意力頭會有完整的句法樹信息
  5. 注意力權重是主語一致性和反語性的弱指標。
  6. 即使注意頭專門跟蹤語義關係,也不一定有助於BERT在相關任務上的表現。

2. BERT層

  1. BERT的第一層接收字符、分段及位置編碼等信息的組合作爲其輸入表徵,所以較低的層自然而然地具有最多的線性的詞序信息。
  2. 語法信息是在中間的BERT層中是最突出的,因爲Transformers的中間層總體上表現是最好的,也是最容易在多個任務間進行遷移的。
  3. BERT的最後一層是跟特定任務最相關的:在預訓練階段,意味着跟MLM任務最相關,這也解釋了爲什麼中間的層是最容易進行遷移的;而在微調階段,這也解釋了爲什麼最後一層變化最明顯。如果微調好的BERT模型的較低層的權重能夠恢復到初始值,對模型性能的損害不會特別顯著。
  4. 儘管大多數語義信息能夠在一些層中找到,但是語義信息仍然是在整個模型中傳播的。

訓練BERT

旨在優化原始BERT的訓練及結構。

1. 預訓練BERT

原始的BERT是一個雙向的Transformer,在兩個任務上進行預訓練:下一個句子預測(NSP)和遮蔽語言模型(MLM)。 一種優化BERT的方式就是替代訓練目標 (alternative training objective)。

  • Removing NSP: (1) 用預測前後句子取代預測下一個句子;(2) 用從正例樣本交換而來的句子而不是來自不同文檔的句子來替代負例的NSP樣本。這樣做並不會損害性能,反而能稍微提升任務性能,尤其在多語言環境中。
  • Dynamic masking: 使用不同的masks在一個epoch中訓練樣本;
  • Beyond-sentence MLM: 用任意的文本流來代替句子對,採樣頻繁的輸出
  • Permutation language modeling: 在輸入序列中詞序的不同排列組合上進行訓練,最大化原始詞序的概率,以取代MLM
  • Span boundary objective: 僅使用在這個跨度span內的詞的表徵來預測被遮蔽的跨度,而不是獨立的單詞;
  • Phrase masking and named entity masking: 通過遮蔽實體而不是單個單詞來改善結構化知識的表徵;
  • Continual learning: 對大量的任務按順序地進行預訓練,每個任務都有它們自己的損失,這些損失然後合起來持續地更新模型
  • Conditional MLM: 用標籤嵌入 (label embeddings) 來取代分割嵌入 (segmentation embeddings),標籤嵌入還包括來自帶註釋的任務數據集(例如情感分析)中給定句子的標籤。
  • 用[UNK]符號取代MASK符號,因爲這可能會幫助模型學習可被神經機器翻譯模型使用的某種未知信息的表徵

另一種對BERT改進的方式是預訓練數據 (pre-training data):

  1. 增大語料庫大小及更長的訓練
  2. 訓練數據不必是非結構化的文本,也可以是結構化數據
  3. 使用如實體嵌入 (entity embedding)、語義角色信息 (semantic role information)等作爲輸入

2. 模型結構選擇

  • 注意力頭的數量跟層的數量一樣並不是至關重要的參數,位於中間的層纔是最可遷移的。當然,更大的隱藏層表徵大小一直都是更好的,但性能增益卻因任務具體設置不同而有所不同。
  • 更大的批訓練能提升語言模型的困惑度和下游任務的性能。
  • 由於較高層的自注意力模式與較低層的相似,因此模型訓練可以遞歸方式進行,先訓練較淺的模型,然後將訓練後的參數複製到較深的層。在能達到原始的BERT在GLUE任務上相似的準確率的同時,這樣的”warm-start“能提升25%的訓練速度。

3. 微調BERT

截止目前,改進BERT的微調的方法有:

  1. 考慮更多的層:(1) 跟輸出層結合;(2) 對除了最後一層輸出之外的所有層的表徵進行加權
  2. Two-stage fine-tuning在預訓練與微調之間引入了中間的監督訓練階段
  3. Adversarial token perturbations可以提升模型的魯棒性

BERT應該要多大?

1. 過度參數化 Overparameterization

基於Transformer的模型可以在尺寸上一直增長:如T5模型是基本BERT模型的30倍以上。這引起了對計算複雜度、計算環境問題、可復現性以及學界與工業界的研究資源等問題。

  1. 在沒有顯著損害模型性能的情況下,除了一些Transformer頭之外,所有的都可以被去掉。
  2. 在某些任務上,一些BERT頭或層不僅沒有用,而且還對下游的任務性能有害
  3. BERT-large一般比BERT-base表現要好,但情況並不總是這樣的,比如主謂一致 (subject-ver agreement) 與句子主語檢測 (sentence subject detection) 任務中。
  4. 造成BERT會有許多冗餘的頭與層的一個可能的原因是使用了注意力dropout,這會導致一些注意力權重在訓練期間被置爲零 (zerod-out)

2. BERT 壓縮

即使BERT被過度參數化,但BERT依然能夠在很少的準確率損失的情況下被有效壓縮。主要的方法有知識蒸餾 (knowledge distillation) 與 量化 (quantization)。

知識蒸餾主要訓練一個更小的學生網絡 (student-network) 來模仿一個更大的教師網絡 (teacher-network) 的行爲,實現方式有 損失函數、模仿教師網絡的注意力模式以及在預訓練或微調階段的不同階段的知識遷移。

量化方法主要通過降低權重的精度來減少BERT的內存。

其他的技巧則包括把BERT的嵌入矩陣 (embedding matrix) 分解成更小的矩陣以及漸進式的模型替換。

多語言BERT

截至目前,改善多語言BERT的方法主要有:

  1. 通過凍結底下的BERT層來改進在多語言數據集上的微調;
  2. 在微調階段改進字對齊 (word alignment)
  3. 可替代的預訓練目標——翻譯語言建模,在平行句子對 (parallel sentence pairs) 中遮蔽一些詞
  4. 組合5中預訓練任務:單語和跨語言MLM,翻譯語言建模,跨語言詞恢復 (cross-lingual word recovery) 及釋義分類 (paraphrase classification)

一個研究方向就是在跨語言的環境下直接使用單語言BERT。比如用單語言BERT權重直接初始化神經機器翻譯的編碼器部分;多語言BERT不必再多語言上進行預訓練

討論

1. 侷限性

  1. 有很多研究表明BERT擁有驚人的語法、語義以及世界知識。然而,也有研究表明他們並沒有觀察到語言模式,但這個事實並不能保證它不存在,而且我們也不清楚如何使用。
  2. 模型複雜度與驗證假設之間也存在權衡問題。
  3. 不同的方法可能揭示了互補的甚至相互矛盾的信息,在這種情況下,單向測試是不夠的。
  4. 注意力頭及BERT層的消融實驗已經內在地假設某些知識是包含在頭或層中的,但是也有證據表明更多的擴散的表徵遍佈在整個網絡中的。如果同樣的信息在網絡的其他地方被重複使用,那麼消融實驗也是有問題的。
  5. 注意力可視化作爲解釋深度學習模型的一個工具的優點也是值得商榷的。而且,可視化對於定性分析也是非常有限的,不應該被解釋成明確的證據。

2. 未來研究的方向

  1. 確定語言推理的基準數據集及方法
  2. 開發出能"教"BERT進行推理的方法
  3. 在推理階段學習如何使用知識

想要了解更多的自然語言處理最新進展、技術乾貨及學習教程,歡迎關注微信公衆號“語言智能技術筆記簿”或掃描二維碼添加關注。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章