XLNet原理探究


1. 前言

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

這篇新論文中,作者從自回歸(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的優點和缺點:

  • 缺點是只能利用上文或者下文的信息,不能同時利用上文和下文的信息。當然,貌似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的優點和缺點:

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

3. XLNet初見

XLNet的作者通過把之前的優秀的模型分為AR和AE兩類,並且清楚了各自的優勢和缺點。在XLNet中,想要結合兩邊的優勢,來提升XLNet的整體的模型的效果。那我們通過上文知道了,AR的優勢是預訓練和Fine-tuning的數據形式一致,而AE的優勢是在預測詞的時候,能夠很好的融入上下文。

乍一看很難強行把這兩點一起在一個模型里面實現。

  • 我們換個思路能不能在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的路線。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM