1. XLNet和Bert
首先講講我對XLNet和Bert比,有什么異同?有什么模型方面的改進?的理解
1.1 自回歸語言模型
第一次聽到自回歸語言模型(Autoregressive LM)這個詞。我們知道一般的語言模型都是從左到右計算某個詞出現的概率,但是當我們做完型填空或者閱讀理解這一類NLP任務的時候詞的上下文信息都是需要考慮的,而這個時候只考慮了該詞的上文信息而沒有考慮到下文信息。所以,反向的語言模型出現了,就是從右到左計算某個詞出現的概率,這一類語言模型稱之為自回歸語言模型。像堅持只用單向Transformer的GPT就是典型的自回歸語言模型,也有像ELMo那種拼接兩個上文和下文LSTM的變形自回歸語言模型。
1.2 自編碼語言模型
自編碼語言模型(Autoencoder LM)這個名詞毫無疑問也是第一次聽到。區別于上一節所述,自回歸語言模型是根據上文或者下文來預測后一個單詞。那不妨換個思路,我把句子中隨機一個單詞用[mask]替換掉,是不是就能同時根據該單詞的上下文來預測該單詞。我們都知道Bert在預訓練階段使用[mask]標記對句子中15%的單詞進行隨機屏蔽,然后根據被mask單詞的上下文來預測該單詞,這就是自編碼語言模型的典型應用。
1.3 兩種模型的優缺點對比
自回歸語言模型沒能自然的同時獲取單詞的上下文信息(ELMo把兩個方向的LSTM做concat是一個很好的嘗試,但是效果并不是太好),而自編碼語言模型能很自然的把上下文信息融合到模型中(Bert中的每個Transformer都能看到整句話的所有單詞,等價于雙向語言模型),但自編碼語言模型也有其缺點,就是在Fine-tune階段,模型是看不到[mask]標記的,所以這就會帶來一定的誤差。XLNet將二者的上述優缺點做了一個完美的結合,在自回歸語言模型中自然地引入上下文信息,并且解決自編碼語言模型兩階段保持一致的問題。
2. XLNet是怎么做的
XLNet的思路采用的是自回歸語言模型,根據上文來預測下一個單詞,但是在上文中添加了下文信息,這樣就既解決了[mask]帶來的兩階段不一致問題和無法同時引入上下文信息的問題。改進之后,取了個新名字:Permutation Language Model。舉個例子:輸入句子為x1->x2->x3->x4,假設我們要預測的單詞是x3,那我們需要在x3的上文x1和x2的位置看到x4的信息,這樣才能解決同時引入上下文的問題。那就可以這么做了:隨機排列組合x1、x2、x3、x4的順序,并從中隨機選擇一部分作為新的句子輸入。比如選擇了x2->x4->x3->x1,那這個時候預測x3的時候是不是就能看到上文x2和下文x4的信息了呢,這就是XLNet的基本思路。就是通過排列組合的方式將一部分下文單詞放到上文單詞的位置,但實際形式還是一個從左到右預測的自回歸語言模型。
但是我們在Fine-tune的時候總不能也隨機組合輸入的句子吧,那這和加了[mask]有啥區別呢?別急,繼續往下看。XLNet在輸入階段并沒有改變輸入順序,隨機打亂輸入句子的順序這個過程是在Transformer中通過Attention mask實現的,就是隨機掩蓋掉序列中的一些單詞,并將未掩蓋掉的單詞作為預測單詞的上文。拿原文中的一個圖舉例:
右圖的紅色矩陣就是Attention Mask矩陣,1->2->3->4的輸入序列在Attention Mask的作用下變成了3->2->4->1,Attention Mask也分為兩種,一種是能看見自身的Content stream和Query stream。對于1來說3,2,4就是1的上文,所以第一行全是紅色;對于2來說上文就只有3,所以對應位置為紅色;對于3來說沒有上文,所以全為白色...以此類推。那這樣就實現了在輸入側不改變單詞順序,在Transformer內部實現了輸入的隨機排列了。
-
語言模型
+關注
關注
0文章
506瀏覽量
10245 -
nlp
+關注
關注
1文章
487瀏覽量
22011
原文標題:講講我理解的XLNet
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論