【論博文筆記】XLNet總結

結合
XLNet結合了Bert、GPT 2.0和Transformer XL

  • 它通過PLM預訓練目標,吸收了Bert(AE)的雙向語言模型;
  • GPT2.0更多更高質量的預訓練數據,這也被XLNet吸收進來;
  • 引入Transformer XL來解決Transformer對於長文檔應用不好的問題

XLNet 四個好處

  • 結合AE優點,PLM獲取雙向語義信息(對token級別的任務如RC\QA很重要)
  • 結合AR優點,輸入不用masking,解決了pretrain-finetune不匹配
  • 可以對序列的概率分佈進行建模,避免了獨立性假設
  • 探索到更長距離


0 XLNet 創新點

  • PLM

  • Two-Stream self-attention(與PLM相輔相成)

    query stream , content stream

    核心是target-aware Representations,引入了target position zt

  • 引入transformer-xl模型(以下簡稱txl)

    • segment recurrence mechanism

    • relative positional encoding


1 三種語言模型

1.1 AR——自迴歸語言模型

對於一個給定的序列 x=[x1,⋯,xT],自迴歸語言模型致力於對該序列的概率分佈進行估計。通俗來講,就是根據上文內容預測下一個可能跟隨的單詞,就是常說的自左向右的語言模型任務,或者反過來也行。GPT 就是典型的自迴歸語言模型。

具體的,利用乘法公式對原始序列的似然函數進行分解
在這裏插入圖片描述
可以通過極大似然來進行預訓練:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kAqyJC5m-1583239177056)(C:\Users\changreal\AppData\Roaming\Typora\typora-user-images\image-20200303132132301.png)]

缺點:不是雙向

1.2 AE——去噪自編碼語言模型(DAE, denoising auto-encoding)

以BERT爲首,核心:reconstruct the original data from corrupted input 。做法是將部分待預測詞替換爲 MASK,通過建模雙向語境的信息,來預測原來的詞語:
在這裏插入圖片描述
優點:融入雙向語言模型,同時看到被預測單詞的上文和下文

缺點

  1. 獨立性假設(independence assumption)。上式使用了 ≈符號,因爲 AE 語言模型不是對原始的序列分佈進行建模,沒有使用乘法公式。BERT 對 mask 掉的目標單詞分別進行預測,使用了獨立性假設,即待預測的所有 MASK token 在未 mask 序列的條件下是獨立的。(xlnet認爲他們是有關係的)

  2. pretrain-finetune 不匹配(discrepancy)

1.3 PLM——亂序語言模型

亂序語言模型使用一個序列的所有可能排序方式來構建一個 AR 語言模型。

理論上,如果模型的參數在所有的順序中共享,那麼模型就能學到從所有位置收集上下文信息。亂序語言模型目標表示如下,其中g函數和zt後面會說,並且後面目標會進一步改進爲局部預測

在這裏插入圖片描述

亂序語言模型使用的是原始位置的位置編碼,而不是調整了原來句子的順序,這得益於 Transformer 的 mask 機制來實現。實現的話要配合後面說到的雙通道自注意力流,query流就是代替Bert的[mask] [2],只保留位置信息。爲了記錄位置信息,使用relative positional encoding

XLNet只是扔了表面的[Mask]佔位符號,內部還是引入Query流來忽略掉被Mask的這個單詞。和Bert比,只是實現方式不同而已。

模型圖例

img

優點

  1. 捕獲雙向信息(AE優點)
  2. 自然的避免了獨立性假設、pretrain-finetune 不匹配的問題。(AR優點,AE缺點)
  3. 模型的參數在所有的順序中共享

2 Two-Stream Self-Attention 雙通道自注意力

2.1 結合PLM

上面說的PLM思想,難點在於具體怎麼實現上述思想。實際上不能去排列組合原始輸入,因爲Fine-tuning階段也不可能也去排列組合原始輸入,因此,可以在Transformer部分做些工作,來達成目標。

由此,XLNet採取了Attention掩碼的機制 (把其它沒有被選到的單詞Mask掉,不讓它們在預測單詞Ti的時候發生作用,看着就類似於把這些被選中的單詞放到了上文Context_before的位置了),即在輸入側維持表面的X句子單詞順序,但在Transformer內部,看到的已經是被重新排列組合後的順序,關鍵就是那個掩碼矩陣

雙流自注意力機制就是實現這個思想的具體方式。得益於 Transformer 的 mask機制,XLNet只是扔了表面的[Mask]佔位符號,內部還是引入Query流來忽略掉被Mask的這個單詞[2]。和Bert比,只是實現方式不同而已。

想要實現亂序的語言模型,如果直接對每個排序方式構建普通的 Transformer,並不能達到效果。原因如下。
假設我們需要預測下一個 token,
在這裏插入圖片描述
hθ(xZ<t) 並沒有依賴於要預測的內容的位置信息zt,亂序語言模型的分解順序是隨機的,因此無論預測目標的位置在哪裏,因式分解後得到的所有情況都是一樣的,並且transformer的權重對於不同的情況是一樣的,因此無論目標位置怎麼變都能得到相同的分佈結果,這是不合理的。

因此需要修改預測next-token distribution的公式,也就是引入target position zt

2.2 雙流Attention

需要建模的兩種 token 爲:

  1. xzt ,此時只能使用位置信息 zt而不能使用內容信息xzt ,否則就暴露標籤了;

  2. xxj ,j>t。對於後面的 token,需要使用完全的上下文內容信息

因此,用到了兩種hidden representation,一個包含了內容信息,一個只包含位置信息:

  • content representation(與標準transformer是相同的)

  • query representation就是用來代替Bert的那個[Mask]標記的

對於 self-attention 的後續層 m=1,…,M,兩個表示分別按照下式進行更新:
在這裏插入圖片描述
在 fine-tuning 階段,直接將 query stream 去掉。

2.3 局部預測

由於使用了亂序的語言模型,部分出現在排列前部分的 token 的上下文信息很弱,導致增加了模型優化的困難度、收斂慢。因此在一個排列中,我們選擇只預測後部分的一些 token。對於一個排列,將對目標子序列進行預測,因爲其有當前排列下的最長上下文信息
在這裏插入圖片描述
使用超參數 K 來決定目標子序列的比例.在這裏插入圖片描述由圖看出,K越大,劃分的子序列也越長。

xlnet認爲哪怕是局部預測,也能獲取到target tokens的之間的關係(因爲沒有bert的假設獨立性),儘管張俊林認爲這不重要。

3 引入Transformer-xl

我們可以將 XLNet 看成是不同排列下多個 Transformer-XL 的並行

預訓練的時候,對於輸入的sequence,就已起作用了。fine-tune的時候當然也有。
在這裏插入圖片描述
segment循環機制

從而使該segment可以使用上一段segment的內容流hs,並且這個attention更新與亂序後的上個segmentZ無關。
在這裏插入圖片描述
因此該機制的引入,也無需知道上一段的亂序信息。query流注意力更新裏的h同理。

相對位置編碼

如上文裏,一段序列中位置 zt的位置編碼,相對位置編碼在不同排列方式間保持一致,不隨排列方式的變化而變化。

4 Multiple Segments與relative segment encodings

預訓練的時候,把2個segment看作一個sequence 運行PLM,和BERT的輸入格式一樣:[CLS, A, SEP, B, SEP],但沒使用NSP。

在 fine-tuning 階段,有很多任務是需要輸入多 segments 的,如雙句分類、閱讀理解、智能問答等。傳統的 BERT 直接使用了絕對編碼,即將 eA 與 eB 直接賦值給句子內的每個 token。

把txl的relative encodings也拓展到segments上,我們對於 segments 進行相對編碼。只關心兩個位置是不是屬於同一個segment,sij等於S+或S-,而不是考慮他們來自哪個segment。這是核心。

從而得到一個attention weight,
在這裏插入圖片描述
與傳統的transformer的weight相加從而得到最終的attention weight.RSE提供了finetune任務有多於2個輸入segments上的可能性。

5 實驗

部分實驗方法:

Since the recurrence mechanism is introduced, they use use a bidirectional data input pipeline.

finetune時,span-based prediction

XLNet vs BERT(使用同樣數據集)
在這裏插入圖片描述
XLNet vs RoBERTa (XLNet用全部數據集)
在這裏插入圖片描述

在這裏插入圖片描述

6 其他補充

關於mask單詞獨立性問題

張俊林說:XLNet說的,Bert裏面被Mask掉單詞的相互獨立問題,其實是不重要的。因爲XLNet在內部Attention Mask的時候,也會Mask掉一定比例的上下文單詞,只要有一部分被Mask掉的單詞,其實就面臨這個問題。而如果訓練數據足夠大,其實不靠當前這個例子,靠其它例子,也能彌補被Mask單詞直接的相互關係問題,因爲總有其它例子能夠學會這些單詞的相互依賴關係。

關於MASK

如圖是單向語言模型的Mask方式,可見是一個下三角。Attention矩陣的每一行事實上代表着輸出,而每一列代表着輸入,而Attention矩陣就表示輸出和輸入的關聯。

XLNet是亂序語言模型,它跟語言模型一樣,都是做條件概率分解,但是亂序語言模型的分解順序是隨機的:
在這裏插入圖片描述
任意一種“出場順序”都有可能。原則上來說,每一種順序都對應着一個模型,所以原則上就有n!個語言模型。基於Transformer的模型,則可以將這所有順序都做到一個模型中去!

以“北京歡迎你”的生成爲例,假設隨機的一種生成順序爲**“< s > → 迎 → 京 → 你 → 歡 → 北 → < e >**”,那麼我們只需要用下圖中第二個子圖的方式去Mask掉Attention矩陣,就可以達到目的了:
在這裏插入圖片描述
直觀來看,這就像是把單向語言模型的下三角形式的Mask“打亂”了。

也就是說,實現一種順序的語言模型,就相當於將原來的下三角形式的Mask以某種方式打亂。

訓練方式,就是輸入的不僅只有token本身,還包括token所在的位置id,即會有個詞序的position embedding會加入到序列輸入上來。

參考

  1. 論文地址:https://arxiv.org/pdf/1906.08237.pdf
  2. 張俊林XLNet和Bert講解:https://zhuanlan.zhihu.com/p/70257427
  3. 超棒的博客:https://suixinblog.cn/2019/11/xlnet.html
  4. 博客2:https://blog.csdn.net/u012526436/article/details/93196139
  5. 關於mask的講解,特別好:https://spaces.ac.cn/archives/6933
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章