【簡單理解】XLNet

【簡單理解】XLNet

1. 簡單介紹XLNet

XLNet是一個通過排列語言模型實現雙向上下文信息的自迴歸模型。它通過隨機排列輸入序列而預測某個位置可能出現的詞,進而訓練出具有上下文的語境化詞向量。 

XLNet是一個類似BERT的模型,但是它採用了通用的自迴歸預訓練方法(AR模型),而基於DAE的Bert模型採用的則是降噪自動編碼方法(AE模型),bert和AR模型的區別主要是在以下三方面:

  • 獨立假設:bert中一個序列中會被mask掉不超過15%的單詞,但是在預訓練時的目標函數是基於mask值彼此獨立、互不干擾的假設下進行計算的,而AR模型中不需要設置mask值,預訓練時的目標函數也不必設立獨立假設。同時,mask的設置會導致預訓練-微調的數據上的不統一,這也是Bert的一個缺陷。
  • 輸入噪聲:Bert在預訓練時對輸入序列進行隨機mask,這是一種輸入噪聲設定,但是在下游任務進行微調時卻並沒有對輸入序列設置輸入噪聲,即隨機mask,這引起了預訓練-微調間的差異。與之相反,AR模型不設置輸入噪聲,因而不會有這種問題。
  • 上下文依賴:AR模型只考慮前向信息或者後向信息,而bert要考慮雙向信息,結果就是,bert的目標函數允許模型被訓練爲能夠更好地抓取雙向信息。

2. XLNet兩個創新

2.1 permutation language model  基於排列的語言建模方法

  • 通過隨機排列輸入序列而預測某個位置可能出現的詞:因爲某位置只能attention該位置前面的詞,但隨機排列就可attention序列中的所有單詞,進而達到雙向上下文的依賴建模的目的。隨機排列時帶有輸入時的位置信息,打亂順序不會影響建模效果。
  • 解決bert主要的兩個問題。bert中的獨立假設無法考慮New York is a city中New or York的關聯,以及自編碼引入mask訓練和測試不一致

2.2 two-steam attention

 解決預測時想看見自己和不想看見自己的矛盾         兩個stream共享一套參數

3.AR與AE的原理

3.1 AR原理

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

AR的代表有:

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

AR的優點和缺點:

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

3.2 AE原理

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

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

AE的優點和缺點:

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

4. XLNet具體介紹

提出背景

  • 傳統的語言模型(自迴歸語言模型AR天然適合處理生成任務,但是無法對雙向上下文進行表徵;
  • 而自編碼語言模型(AE)雖然可以實現雙向上下文進行表徵,但是:
    • BERT系列模型引入獨立性假設,沒有考慮預測[MASK]之間的相關性;
    • MLM預訓練目標的設置造成預訓練過程和生成過程不一致;
    • 預訓練時的[MASK]噪聲在finetune階段不會出現,造成兩階段不匹配問題;
  • XLNet提出了一種排列語言模型(PLM),它綜合了自迴歸模型和自編碼模型的優點,同時避免他們的缺點

XLNet(AR模型)總體思路

XLNet提出了一種讓AR語言模型(單向的輸入和預測模式)能夠從雙向上下文中學習的新方法。這也是XLNet的主要貢獻。

XLNet仍然採用兩階段模型訓練過程,第一階段是語言模型預訓練階段,第二階段是任務數據fine-tuning階段。它主要改動了第一階段,即不使用bert那種帶mask符號的Denoising-autoencoder的模式,而是採用自迴歸語言模型。就是說,一個輸入序列X依然是從左向右輸入,在預測單詞T時,既知道它的上文信息context_before,也知道它的下文信息contenx_after,但是,這裏不採用bert使用mask符號的方式。於是在預訓練階段,這是一個標準的從左向右過程,在微調階段也是如此,因此兩個過程就統一起來,不會造成兩階段的數據不一致問題[3]。而這裏具體的實現方法,就是論文提出的排列語言模型。

4.1訓練目標:排列語言模型(Permutation Language Modeling)

PLM的中心思想就是重新排列組合輸入序列X。具體的說,假設輸入序列X = [x1,x2,x3,x4],我們想要預測x3,

1、使用AR模型的常規操作:按照AR模型自左向右的輸入X,我們只能看到x3的上文context_before(即x1,x2),而不能看到x3的下文context_after(即x4)。

2、使用PLM的方法:我們需將待預測單詞x3固定在它本來的位置上(即Position 3),然後將輸入序列X中的元素進行隨機排列組合(此例中共會產生24種組合方式),在這24種組合中,抽取一部分(如:x4,x2,x3,x1)作爲模型的輸入X,則待預測單詞x3既能看到上文x1,x2,也能看到下文x4,達到了獲取上下文信息的目的,但是在形式上依然是從左向右在預測後一個單詞。具體如下圖所示:

這裏解釋一下右上圖,即Factorization order:2 -> 4 -> 3 -> 1這張圖,可以看出在計算h3(1)時,它只獲取了x2,x4和mem(0)的信息,即獲取了x3的下文信息x4。

注1:由圖中可以看出,它並沒有更改輸入順序,輸入順序仍然爲x1,x2,x3,x4,但是Transformer在獲取輸入信息時,它只獲取了x4x2,這是因爲attentionx1 mask掉了,這一過程是在Transformer中實現的,具體描述在下一節中講述。 

PLM的優勢如下:

1、保證預訓練-微調兩個階段的一致性,規避了bert模型的劣勢(預訓練-微調數據不一致以及多個mask之間的獨立假設)

2、獲取雙向信息(AR模型只能獲取單向信息)

 

4.2雙流自注意力(Architecture: Two-Stream Self-Attention for Target-Aware Representations )

雙流主要是指內容流和查詢流,具體介紹如下:

內容流(content stream):指標準的Transformer過程

查詢流(query stream)[3]:只保留位置信息,忽略內容信息。具體的說,對於待預測單詞x3來說,已知其上文信息x1,x2,因爲x3是需要被預測的單詞,因此在Transformer的輸入端不能輸入x3的單詞內容,需要將其遮擋掉,bert採用的方法是將x3 mask掉,即使用[MASK]標記符號作爲x3的輸入內容,但是這引起了預訓練-微調數據不一致問題,xlnet既想看不到x3單詞的內容,又不想像bert一樣引入新的問題,它採取的方式就是使用query流,直接忽略掉x3的單詞內容,而只使用x3的位置信息,使用參數w來代表位置的embedding編碼。具體的實現過程如下所述:

輸入序列依然是x1,x2,x3,x4,但是在Transformer內部,則是針對內容流和查詢流分別有遮掩矩陣。就本文例子來說,需要遮掩的是x3,則在下圖c中,由於使用的新的排列組合是x3,x2,x4,x1,因此,Query steam對應的遮掩矩陣中第三行中是空,因爲沒有其他的單詞需要被輸入。

同理,對於Content stream來說,由於Transformer的輸入順序是x3,x2,x4,x1,因此對於第一行x1來說,它可以將所有的單詞都讀入,因此矩陣第一行中所有圓點都被標爲紅色(表示x1,x2,x3,x4的信息都獲取);對於第二行x2來說,它只能獲取x3的信息以及自己的信息,因此第二個和第三個圓點標爲紅色(表示x2,x3的信息都獲取);對於第三行x3來說,因爲它只能讀取自己的信息,因此只有第三個圓點標爲紅色(表示x3的信息被獲取);對於第四行x4來說,由於它能獲取x2、x3以及自己的的信息,因此其第二、三、四個圓點被標爲紅色(表示x2,x3,x4的信息都獲取)。

由於Content Stream 和 Query Stream的區別僅在於自己的信息是否能獲取,而Query Stream不能獲取自己的信息,因此Query Stream的遮掩矩陣中對角線的圓點都爲白色,表示不能獲取自己的內容信息。

如上圖所示,圖a表示內容流(content stream),圖b表示查詢流(query stream),圖c是使用了雙流自注意力機制的排列語言模型。

 4.3Transformer-XL

Transformer-XL是 XLNet 的特徵抽取結構,其相比於傳統的Transformer能捕獲更長距離的單詞依賴關係。

原始的Transformer的主要缺點在於,其在語言建模中會受到固定長度上下文的限制,從而無法捕捉到更長遠的信息。

Transformer-XL採用片段級遞歸機制(segment-level recurrence mechanism)和相對位置編碼機制(relative positional encoding scheme)來對Transformer進行改進。

  • 片段級遞歸機制:指的是當前時刻的隱藏信息在計算過程中,將通過循環遞歸的方式利用上一時刻較淺層的隱藏狀態,這使得每次的計算將利用更大長度的上下文信息,大大增加了捕獲長距離信息的能力。

  • 相對位置編碼:Transformer本身引入了三角函數向量作爲位置編碼向量。而Transformer-XL複用了上文的信息,這就導致位置編碼出現重疊,因此採用了訓練的方式得到相對位置編碼向量。

5. XLNet與Bert比較

  • Bert是直接在輸入端顯示地通過引入Mask標記,在輸入側隱藏掉一部分單詞,讓這些單詞在預測的時候不發揮作用,要求利用上下文中其它單詞去預測某個被Mask掉的單詞。
  • XLNet則拋棄掉輸入側的Mask標記,通過Attention Mask機制,在Transformer內部隨機Mask掉一部分單詞(這個被Mask掉的單詞比例跟當前單詞在句子中的位置有關係,位置越靠前,被Mask掉的比例越高,位置越靠後,被Mask掉的比例越低),讓這些被Mask掉的單詞在預測某個單詞的時候不發生作用。
  • Bert隱藏了15%的詞,用85%去預測15%的詞。缺少了15%的詞中的關聯性。
  • XLNet是通過整個上下文去預測某個詞,這樣的詞的利用率更高,理論上效果更好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章