XLNet原理探究

1. 前言

XLNet原文連接是CMU與谷歌大腦提出的全新NLP模型,在20個任務上超過了BERT的表現,並在18個任務上取得了當前最佳效果,包括機器問答、天然語言推斷、情感分析和文檔排序。html

這篇新論文中,做者從自迴歸(autoregressive)和自編碼(autoencoding)兩大範式分析了當前的預訓練語言模型,並發現它們雖然各自都有優點,但也都有難以解決的困難。爲此,研究者提出XLNet,並但願結合大陣營的優秀屬性。網絡

XLNet主要在如下三個方面進行了優化併發

  1. 採用AR模型替代AE模型,解決mask帶來的負面影響。
  2. 雙流注意力機制。
  3. 引入transformer-xl。

2. AR與AE的原理

2.1 AR原理

AR是自迴歸的模型(AutoRegressive LM),是一種使用上下文詞來預測下一個詞的模型。可是在這裏,上下文單詞被限制在兩個方向,前向或後向。優化

AR的表明有:編碼

  1. 傳統的語言模型,根據上文預測下一個詞。
  2. ELMo擴展了語言模型,增長了雙向詞的預測,上文預測下一個詞和下文預測上一個詞,可是本質上仍是AR的原理。
  3. 再到GPT是把AR發揮到極致的作法,在AR的基礎上,提高預料的質量,加大訓練的資源,最終訓練出至關不錯的效果。

AR的優勢和缺點:spa

  • 缺點是只能利用上文或者下文的信息,不能同時利用上文和下文的信息。固然,貌似ELMO這種雙向都作,而後拼接看上去可以解決這個問題,由於融合模式過於簡單,因此效果其實並非太好。
  • 優勢是符合下游NLP任務語言環境,好比生成類NLP任務,好比文本摘要,機器翻譯等,在實際生成內容的時候,就是從左向右的,自迴歸語言模型自然匹配這個過程。而Bert這種DAE模式,在生成類NLP任務中,就面臨訓練過程和應用過程不一致的問題,致使生成類的NLP任務到目前爲止都作不太好。

2.2 AE原理

AE是自編碼語言模型(AutoEncoder LM),它能比較天然地融入雙向語言模型,同時看到被預測單詞的上文和下文。翻譯

  1. Bert經過在輸入X中隨機Mask掉一部分單詞,而後預訓練過程的主要任務之一是根據上下文單詞來預測這些被Mask掉的單詞,若是你對Denoising Autoencoder比較熟悉的話,會看出,這確實是典型的DAE的思路。那些被Mask掉的單詞就是在輸入側加入的所謂噪音。相似Bert這種預訓練模式,被稱爲DAE LM。

AE的優勢和缺點:code

  • 優勢是能比較天然地融入雙向語言模型,同時看到被預測單詞的上文和下文
  • 缺點是在訓練的輸入端引入[Mask]標記,致使預訓練階段和Fine-tuning階段不一致的問題。

3. XLNet初見

XLNet的做者經過把以前的優秀的模型分爲AR和AE兩類,而且清楚了各自的優點和缺點。在XLNet中,想要結合兩邊的優點,來提高XLNet的總體的模型的效果。那咱們經過上文知道了,AR的優點是預訓練和Fine-tuning的數據形式一致,而AE的優點是在預測詞的時候,可以很好的融入上下文。orm

乍一看很難強行把這兩點一塊兒在一個模型裏面實現。htm

  • 咱們換個思路能不能在AR裏面加入上下文的信息。這不就是ELMo的思路嗎,經過雙向的LSTM的思路來看上下文內容,這個簡單的疊加效果還不是太好。
  • 在AE裏面克服[Mask]的不一致性,既保留了上下文信息,也保持預訓練和下游任務的輸入一致性。

其實XLNet就是沿着第二個思路的角度出發,更改了Bert中的[Mask]的方式,而且保留了上下文信息。

3.1 排列語言建模(Permutation Language Modeling)

XLNet仍然遵循兩階段的過程,第一個階段是語言模型預訓練階段;第二階段是任務數據Fine-tuning階段。它主要但願改動第一個階段,就是說不像Bert那種帶Mask符號的Denoising-autoencoder的模式,而是採用自迴歸LM的模式。就是說,看上去輸入句子X仍然是自左向右的輸入,看到\(T_i\)單詞的上文Context_before,來預測\(T_i\)這個單詞。可是又但願在Context_before裏,不只僅看到上文單詞,也能看到\(T_i\)單詞後面的下文Context_after裏的下文單詞,這樣的話,Bert裏面預訓練階段引入的Mask符號就不須要了,因而在預訓練階段,看上去是個標準的從左向右過程,Fine-tuning固然也是這個過程,因而兩個環節就統一塊兒來。固然,這是目標。剩下是怎麼作到這一點的問題。

image

3.2 Attention Mask

XLNet把Bert的[Mask]的過程搬到Attention Mask來完成。這樣從輸入端看去預訓練和Fine-tuning是一致的。Attention Mask的原理是,假設輸入的詞是\(x_1->x_2->x_3->x_4\),咱們在Attention Mask中改爲隨機排列組合的另一個順序\(x_3->x_2->x_4->x_1\)了,而後預測\(x_3\)的時候上文爲空,預測\(x_2\)的時候上文是\(x_3\),預測\(x_4\)的時候上文是\(x_3,x_2\),預測\(x_1\)的時候上文是\(x_3,x_2,x_4\),這樣就達到了預測一個詞使用到了上下文的內容。

在Attention Mask中實現的原理路下圖:其實真是的詞的順序沒有變,只是經過mask的操做達到了相似隨機排序的效果。

image

3.3 雙流自注意力機制

image

  1. 內容流自注意力,其實就是標準的Transformer的計算過程。是上圖中的上面的那個Attention,能夠看到預測詞自己的一個self Attention。
  2. Query流自注意力,代替Bert的那個[Mask]標記的,是模擬Mask的效果。是上圖中的下面的那個Attention,不能夠看到預測詞自己的一個self Attention。

差異就是可否看到預測詞自己,可是他們的做用是不太同樣的。

3.4 Transformer-XL

因爲Transformer-XL的內容比較豐富,在這裏就不展開了,
Transformer-XL的介紹請看我另外一篇博文

3.5 XLNet與Bert比較

  • Bert是直接在輸入端顯示地經過引入Mask標記,在輸入側隱藏掉一部分單詞,讓這些單詞在預測的時候不發揮做用,要求利用上下文中其它單詞去預測某個被Mask掉的單詞。
  • XLNet則拋棄掉輸入側的Mask標記,經過Attention Mask機制,在Transformer內部隨機Mask掉一部分單詞(這個被Mask掉的單詞比例跟當前單詞在句子中的位置有關係,位置越靠前,被Mask掉的比例越高,位置越靠後,被Mask掉的比例越低),讓這些被Mask掉的單詞在預測某個單詞的時候不發生做用。
  • Bert隱藏了15%的詞,用85%去預測15%的詞。缺乏了15%的詞中的關聯性。
  • XLNet是經過整個上下文去預測某個詞,這樣的詞的利用率更高,理論上效果更好。

4. 總結

文章最後的分析很好地證實了亂序語言模型和Transformer-XL主幹網絡帶來的提高。這部分實驗採用和BERT一致的訓練數據。以BERT爲基礎,將BERT的主幹網絡從Transformer換成Transformer-XL後,在須要建模較長上下文的閱讀理解任務RACE和SQuAD2.0均有比較明顯地提高(對比1&2行)。而在此基礎上加上亂序語言模型後,在全部任務上都有不一樣程度的提高 (對比 2&3 行)。

image

自詞向量到現在以XLNet爲表明的預訓練語言模型,他們的主要區別在於對語境的不一樣粒度的建模:

image

XLNet成功的因素:

  1. 與Bert採起De-noising Autoencoder方式不一樣的新的預訓練目標:Permutation Language Model(簡稱PLM);這個能夠理解爲在自迴歸LM模式下,如何採起具體手段,來融入雙向語言模型。這個是XLNet在模型角度比較大的貢獻,確實也打開了NLP中兩階段模式潮流的一個新思路。
  2. 引入了Transformer-XL的主要思路:相對位置編碼以及分段RNN機制。實踐已經證實這兩點對於長文檔任務是頗有幫助的。
  3. 加大增長了預訓練階段使用的數據規模;Bert使用的預訓練數據是BooksCorpus和英文Wiki數據,大小13G。XLNet除了使用這些數據外,另外引入了Giga5,ClueWeb以及Common Crawl數據,並排掉了其中的一些低質量數據,大小分別是16G,19G和78G。能夠看出,在預訓練階段極大擴充了數據規模,並對質量進行了篩選過濾。這個明顯走的是GPT2.0的路線。
相關文章
相關標籤/搜索