1、XLNet的出發點
自回歸語言模型AR:僅根據上文預測,或僅根據下文預測。ELMO、GPT。優勢是擅長生成式自然語言處理任務。 因為在生成上下文時,通常是前向的。缺點是僅利用一邊,信息利用不充分。
噪聲自動編碼器DAE:DAE是從損壞的輸入重建原始數據。比如Bert。缺點是1、輸入側引入[Mask]標記,導致預訓練階段和Fine-tuning階段不一致的問題。2、Bert是基于被Mask的token之間完全獨立假設。如[New, York, is, a, city]中New, York被mask。Bert是用 is, a, city預測New,用 is, a, city預測York。但其實New和York之間也是有相關性的,也就是被mask的詞之間并不一定獨立。
2、XLNet基本思想
XLNet初衷:如何實現,看上去仍然是從左向右的輸入和預測模式,但是其實內部已經引入了當前單詞的下文信息呢?即仍然用自回歸LM的方法,但是要考慮兩側上下文信息。
在預訓練階段,引入Permutation Language Model(排列LM)的訓練目標。首先將句子的 token 隨機排列,然后采用 AR 的方式預測句子末尾的1/k個單詞,這樣 XLNet 即可同時擁有 AE 和 AR 的優勢。
如果我們的語言模型遍歷T!種分解方法,并且這個模型參數共享,那么這個模型應該就能(必須)學習到各種上下文。現實中是隨機采樣部分排列。
3、 XLNet實現
3.1 PLM
輸入序列不變,在transformer內部,通過Attention Mask,把其它沒有被選到的單詞Mask掉,不讓它們在預測單詞Ti的時候發生作用??粗皖愃朴诎堰@些被選中的單詞放到了上文Context_before的位置了。
3.2雙流自注意力模型
因為引入了PLM,所以對于每個詞,我們有時候只要位置信息,有時候位置信息和內容信息都要。所以需要兩個流,分別是Query Stream和Content Stream。
3.2.1 Query Stream
g表示Query Stream,只包含位置信息,h表示Content Stream,包含位置和內容信息。在計算上層該token的Query Stream時,用到了該token的位置信息作為Q和其他可見token的內容信息KV,哪些token的內容信息可見,用Query Stream mask矩陣表示。
3.2.2Content Stream
計算上層該token的Content Stream時,用到了該token的內容信息作為Q和其他可見token的內容信息作為KV,哪些token的內容信息可見,用Content Stream mask矩陣表示。比Query Stream mask矩陣多了對角線。
3.2.3Query Stream和Content Stream的結合
最下面是輸入層, e(x) 是單詞的詞向量,表示輸入的 Content Stream,而 w 表示輸入的位置信息,即 Query Stream。
3.3 Partial Prediction部分預測
XLNet在實現的時候,為了提升效率,選擇每個句子最后末尾的1/K單詞被預測(前面詞的上下文比較少)。XLNet-Large 時使用的 K 為 6,大約是預測末尾 14.3%的 token。
3.4 pretraining和finetuning的區別
fine-tuning的時候,只使用Content Stream,并且Mask為全為0,這樣每個Token都可以attend to其它所有的Token。
4、XLNet集大成者
XLNet就是Bert、GPT 2.0和Transformer XL的綜合體變身。
1、它通過PLM預訓練目標,吸收了Bert的雙向語言模型;
2、GPT2.0的核心其實是更多更高質量的預訓練數據,這個明顯也被XLNet吸收進來了(擴充數據規模,并對質量進行了篩選過濾);Bert使用的預訓練數據是BooksCorpus和英文Wiki數據,大小13G。XLNet除了使用這些數據外,另外引入了Giga5,ClueWeb以及Common Crawl數據,并排掉了其中的一些低質量數據,大小分別是16G,19G和78G。
3、Transformer XL的主要目標是解決Transformer對于長文檔NLP應用不夠友好的問題。XLNet吸收了相對位置編碼以及分段RNN機制。