0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

碾壓Bert?“屠榜”的XLnet對NLP任務(wù)意味著什么

WpOh_rgznai100 ? 來源:YXQ ? 2019-06-25 14:11 ? 次閱讀

這兩天,XLNet貌似也引起了NLP圈的極大關(guān)注,從實驗數(shù)據(jù)看,在某些場景下,確實XLNet相對Bert有很大幅度的提升。就像我們之前說的,感覺Bert打開兩階段模式的魔法盒開關(guān)后,在這條路上,會有越來越多的同行者,而XLNet就是其中比較引人注目的一位。當(dāng)然,我估計很快我們會看到更多的這個模式下的新工作。

未來兩年,在兩階段新模式(預(yù)訓(xùn)練+Finetuning)下,應(yīng)該會有更多的好工作涌現(xiàn)出來。根本原因在于:這個模式的潛力還沒有被充分挖掘,貌似還有很大的提升空間。當(dāng)然,這也意味著NLP在未來兩年會有各種技術(shù)或者應(yīng)用的突破,現(xiàn)在其實是進(jìn)入NLP領(lǐng)域非常好的時機。原因有兩個,一個是NLP正面臨一個技術(shù)棧大的改朝換代的時刻,有很多空白等著你去填補,容易出成績;另外一點,貌似Bert+Transformer有統(tǒng)一NLP各個應(yīng)用領(lǐng)域的趨向,這意味著此時進(jìn)入NLP領(lǐng)域,具備學(xué)習(xí)成本非常低的好處,和之前相比,投入產(chǎn)出比非常合算。

當(dāng)然,即使如此,想要學(xué)好NLP,持續(xù)的精力投入是必不可少的。有句老話說得好:“永恒的愛大約持續(xù)三個月”,這句話其實對于很多對NLP感興趣的同學(xué)也成立:“對NLP的永恒的熱情大約能夠持續(xù)3到5天”,希望真的有興趣的同學(xué)能堅持一下,起碼持續(xù)7到8天,湊夠一個星期…..

那么XLNet和Bert比,有什么異同?有什么模型方面的改進(jìn)?在哪些場景下特別有效?原因又是什么?本文通過論文思想解讀及實驗結(jié)果分析,試圖回答上述問題。

首先,XLNet引入了自回歸語言模型以及自編碼語言模型的提法,這個思維框架我覺得挺好的,可以先簡單說明下。

自回歸語言模型(Autoregressive LM)

在ELMO/BERT出來之前,大家通常講的語言模型其實是根據(jù)上文內(nèi)容預(yù)測下一個可能跟隨的單詞,就是常說的自左向右的語言模型任務(wù),或者反過來也行,就是根據(jù)下文預(yù)測前面的單詞,這種類型的LM被稱為自回歸語言模型。GPT 就是典型的自回歸語言模型。ELMO盡管看上去利用了上文,也利用了下文,但是本質(zhì)上仍然是自回歸LM,這個跟模型具體怎么實現(xiàn)有關(guān)系。ELMO是做了兩個方向(從左到右以及從右到左兩個方向的語言模型),但是是分別有兩個方向的自回歸LM,然后把LSTM的兩個方向的隱節(jié)點狀態(tài)拼接到一起,來體現(xiàn)雙向語言模型這個事情的。所以其實是兩個自回歸語言模型的拼接,本質(zhì)上仍然是自回歸語言模型。

自回歸語言模型有優(yōu)點有缺點,缺點是只能利用上文或者下文的信息,不能同時利用上文和下文的信息,當(dāng)然,貌似ELMO這種雙向都做,然后拼接看上去能夠解決這個問題,因為融合模式過于簡單,所以效果其實并不是太好。它的優(yōu)點,其實跟下游NLP任務(wù)有關(guān),比如生成類NLP任務(wù),比如文本摘要,機器翻譯等,在實際生成內(nèi)容的時候,就是從左向右的,自回歸語言模型天然匹配這個過程。而Bert這種DAE模式,在生成類NLP任務(wù)中,就面臨訓(xùn)練過程和應(yīng)用過程不一致的問題,導(dǎo)致生成類的NLP任務(wù)到目前為止都做不太好。

自編碼語言模型(Autoencoder LM)

自回歸語言模型只能根據(jù)上文預(yù)測下一個單詞,或者反過來,只能根據(jù)下文預(yù)測前面一個單詞。相比而言,Bert通過在輸入X中隨機Mask掉一部分單詞,然后預(yù)訓(xùn)練過程的主要任務(wù)之一是根據(jù)上下文單詞來預(yù)測這些被Mask掉的單詞,如果你對Denoising Autoencoder比較熟悉的話,會看出,這確實是典型的DAE的思路。那些被Mask掉的單詞就是在輸入側(cè)加入的所謂噪音。類似Bert這種預(yù)訓(xùn)練模式,被稱為DAE LM。

這種DAE LM的優(yōu)缺點正好和自回歸LM反過來,它能比較自然地融入雙向語言模型,同時看到被預(yù)測單詞的上文和下文,這是好處。缺點是啥呢?主要在輸入側(cè)引入[Mask]標(biāo)記,導(dǎo)致預(yù)訓(xùn)練階段和Fine-tuning階段不一致的問題,因為Fine-tuning階段是看不到[Mask]標(biāo)記的。DAE嗎,就要引入噪音,[Mask] 標(biāo)記就是引入噪音的手段,這個正常。

XLNet的出發(fā)點就是:能否融合自回歸LM和DAE LM兩者的優(yōu)點。就是說如果站在自回歸LM的角度,如何引入和雙向語言模型等價的效果;如果站在DAE LM的角度看,它本身是融入雙向語言模型的,如何拋掉表面的那個[Mask]標(biāo)記,讓預(yù)訓(xùn)練和Fine-tuning保持一致。當(dāng)然,XLNet還講到了一個Bert被Mask單詞之間相互獨立的問題,我相信這個不太重要,原因后面會說。當(dāng)然,我認(rèn)為這點不重要的事情,純粹是個人觀點,出錯難免,看看就完了,不用較真。

XLNet做了些什么

上文說過,Bert這種自編碼語言模型的好處是:能夠同時利用上文和下文,所以信息利用充分。對于很多NLP任務(wù)而言,典型的比如閱讀理解,在解決問題的時候,是能夠同時看到上文和下文的,所以當(dāng)然應(yīng)該把下文利用起來。

在Bert原始論文中,與GPT1.0的實驗對比分析也可以看出來,BERT相對GPT 1.0的性能提升,主要來自于雙向語言模型與單向語言模型的差異。這是Bert的好處,很明顯,Bert之后的改進(jìn)模型,如果不能把雙向語言模型用起來,那明顯是很吃虧的。

當(dāng)然,GPT 2.0的作者不信這個邪,堅持沿用GPT 1.0 單向語言模型的舊瓶,裝進(jìn)去了更高質(zhì)量更大規(guī)模預(yù)訓(xùn)練數(shù)據(jù)的新酒,而它的實驗結(jié)果也說明了,如果想改善預(yù)訓(xùn)練語言模型,走這條擴(kuò)充預(yù)序列模型訓(xùn)練數(shù)據(jù)的路子,是個多快好但是不省錢的方向。這也進(jìn)一步說明了,預(yù)訓(xùn)練LM這條路,還遠(yuǎn)遠(yuǎn)沒有走完,還有很大的提升空間,比如最簡單的提升方法就是加大數(shù)據(jù)規(guī)模,提升數(shù)據(jù)質(zhì)量。

但是Bert的自編碼語言模型也有對應(yīng)的缺點,就是XLNet在文中指出的,第一個預(yù)訓(xùn)練階段因為采取引入[Mask]標(biāo)記來Mask掉部分單詞的訓(xùn)練模式,而Fine-tuning階段是看不到這種被強行加入的Mask標(biāo)記的,所以兩個階段存在使用模式不一致的情形,這可能會帶來一定的性能損失;另外一個是,Bert在第一個預(yù)訓(xùn)練階段,假設(shè)句子中多個單詞被Mask掉,這些被Mask掉的單詞之間沒有任何關(guān)系,是條件獨立的,而有時候這些單詞之間是有關(guān)系的,XLNet則考慮了這種關(guān)系(關(guān)于這點原因是否可靠,后面會專門分析)。

上面兩點是XLNet在第一個預(yù)訓(xùn)練階段,相對Bert來說要解決的兩個問題。

其實從另外一個角度更好理解XLNet的初衷和做法,我覺得這個估計是XLNet作者真正的思考出發(fā)點,是啥呢?就是說自回歸語言模型有個缺點,要么從左到右,要么從右到左,盡管可以類似ELMO兩個都做,然后再拼接的方式。但是跟Bert比,效果明顯不足夠好(這里面有RNN弱于Transformer的因素,也有雙向語言模型怎么做的因素)。

那么,能不能類似Bert那樣,比較充分地在自回歸語言模型中,引入雙向語言模型呢?因為Bert已經(jīng)證明了這是非常關(guān)鍵的一點。這一點,想法簡單,但是看上去貌似不太好做,因為從左向右的語言模型,如果我們當(dāng)前根據(jù)上文,要預(yù)測某個單詞Ti,那么看上去它沒法看到下文的內(nèi)容。具體怎么做才能讓這個模型:看上去仍然是從左向右的輸入和預(yù)測模式,但是其實內(nèi)部已經(jīng)引入了當(dāng)前單詞的下文信息呢?XLNet在模型方面的主要貢獻(xiàn)其實是在這里。

那么XLNet是怎么做到這一點的呢?其實思路也比較簡潔,可以這么思考:XLNet仍然遵循兩階段的過程,第一個階段是語言模型預(yù)訓(xùn)練階段;第二階段是任務(wù)數(shù)據(jù)Fine-tuning階段。它主要希望改動第一個階段,就是說不像Bert那種帶Mask符號的Denoising-autoencoder的模式,而是采用自回歸LM的模式。

就是說,看上去輸入句子X仍然是自左向右的輸入,看到Ti單詞的上文Context_before,來預(yù)測Ti這個單詞。但是又希望在Context_before里,不僅僅看到上文單詞,也能看到Ti單詞后面的下文Context_after里的下文單詞,這樣的話,Bert里面預(yù)訓(xùn)練階段引入的Mask符號就不需要了,于是在預(yù)訓(xùn)練階段,看上去是個標(biāo)準(zhǔn)的從左向右過程,F(xiàn)ine-tuning當(dāng)然也是這個過程,于是兩個環(huán)節(jié)就統(tǒng)一起來。當(dāng)然,這是目標(biāo)。剩下是怎么做到這一點的問題。

那么,怎么能夠在單詞Ti的上文中Contenxt_before中揉入下文Context_after的內(nèi)容呢?你可以想想。XLNet是這么做的,在預(yù)訓(xùn)練階段,引入Permutation Language Model的訓(xùn)練目標(biāo)。什么意思呢?

就是說,比如包含單詞Ti的當(dāng)前輸入的句子X,由順序的幾個單詞構(gòu)成,比如x1,x2,x3,x4四個單詞順序構(gòu)成。我們假設(shè),其中,要預(yù)測的單詞Ti是x3,位置在Position 3,要想讓它能夠在上文Context_before中,也就是Position 1或者Position 2的位置看到Position 4的單詞x4??梢赃@么做:假設(shè)我們固定住x3所在位置,就是它仍然在Position 3,之后隨機排列組合句子中的4個單詞,在隨機排列組合后的各種可能里,再選擇一部分作為模型預(yù)訓(xùn)練的輸入X。比如隨機排列組合后,抽取出x4,x2,x3,x1這一個排列組合作為模型的輸入X。于是,x3就能同時看到上文x2,以及下文x4的內(nèi)容了。

這就是XLNet的基本思想,所以說,看了這個就可以理解上面講的它的初衷了吧:看上去仍然是個自回歸的從左到右的語言模型,但是其實通過對句子中單詞排列組合,把一部分Ti下文的單詞排到Ti的上文位置中,于是,就看到了上文和下文,但是形式上看上去仍然是從左到右在預(yù)測后一個單詞。

當(dāng)然,上面講的仍然是基本思想。難點其實在于具體怎么做才能實現(xiàn)上述思想。首先,需要強調(diào)一點,盡管上面講的是把句子X的單詞排列組合后,再隨機抽取例子作為輸入,但是,實際上你是不能這么做的,因為Fine-tuning階段你不可能也去排列組合原始輸入。所以,就必須讓預(yù)訓(xùn)練階段的輸入部分,看上去仍然是x1,x2,x3,x4這個輸入順序,但是可以在Transformer部分做些工作,來達(dá)成我們希望的目標(biāo)。

具體而言,XLNet采取了Attention掩碼的機制,你可以理解為,當(dāng)前的輸入句子是X,要預(yù)測的單詞Ti是第i個單詞,前面1到i-1個單詞,在輸入部分觀察,并沒發(fā)生變化,該是誰還是誰。但是在Transformer內(nèi)部,通過Attention掩碼,從X的輸入單詞里面,也就是Ti的上文和下文單詞中,隨機選擇i-1個,放到Ti的上文位置中,把其它單詞的輸入通過Attention掩碼隱藏掉,于是就能夠達(dá)成我們期望的目標(biāo)(當(dāng)然這個所謂放到Ti的上文位置,只是一種形象的說法,其實在內(nèi)部,就是通過Attention Mask,把其它沒有被選到的單詞Mask掉,不讓它們在預(yù)測單詞Ti的時候發(fā)生作用,如此而已??粗皖愃朴诎堰@些被選中的單詞放到了上文Context_before的位置了)。

具體實現(xiàn)的時候,XLNet是用“雙流自注意力模型”實現(xiàn)的,細(xì)節(jié)可以參考論文,但是基本思想就如上所述,雙流自注意力機制只是實現(xiàn)這個思想的具體方式,理論上,你可以想出其它具體實現(xiàn)方式來實現(xiàn)這個基本思想,也能達(dá)成讓Ti看到下文單詞的目標(biāo)。

這里簡單說下“雙流自注意力機制”,一個是內(nèi)容流自注意力,其實就是標(biāo)準(zhǔn)的Transformer的計算過程;主要是引入了Query流自注意力,這個是干嘛的呢?

其實就是用來代替Bert的那個[Mask]標(biāo)記的,因為XLNet希望拋掉[Mask]標(biāo)記符號,但是比如知道上文單詞x1,x2,要預(yù)測單詞x3,此時在x3對應(yīng)位置的Transformer最高層去預(yù)測這個單詞,但是輸入側(cè)不能看到要預(yù)測的單詞x3,Bert其實是直接引入[Mask]標(biāo)記來覆蓋掉單詞x3的內(nèi)容的,等于說[Mask]是個通用的占位符號。

而XLNet因為要拋掉[Mask]標(biāo)記,但是又不能看到x3的輸入,于是Query流,就直接忽略掉x3輸入了,只保留這個位置信息,用參數(shù)w來代表位置的embedding編碼。其實XLNet只是扔了表面的[Mask]占位符號,內(nèi)部還是引入Query流來忽略掉被Mask的這個單詞。和Bert比,只是實現(xiàn)方式不同而已。

上面說的Attention掩碼,我估計你還是沒了解它的意思,我再用例子解釋一下。Attention Mask的機制,核心就是說,盡管當(dāng)前輸入看上去仍然是x1->x2->x3->x4,但是我們已經(jīng)改成隨機排列組合的另外一個順序x3->x2->x4->x1了,如果用這個例子用來從左到右訓(xùn)練LM,意味著當(dāng)預(yù)測x2的時候,它只能看到上文x3;當(dāng)預(yù)測x4的時候,只能看到上文x3和x2,以此類推……這樣,比如對于x2來說,就看到了下文x3了。

這種在輸入側(cè)維持表面的X句子單詞順序,但是其實在Transformer內(nèi)部,看到的已經(jīng)是被重新排列組合后的順序,是通過Attention掩碼來實現(xiàn)的。如上圖所示,輸入看上去仍然是x1,x2,x3,x4,可以通過不同的掩碼矩陣,讓當(dāng)前單詞Xi只能看到被排列組合后的順序x3->x2->x4->x1中自己前面的單詞。這樣就在內(nèi)部改成了被預(yù)測單詞同時看到上下文單詞,但是輸入側(cè)看上去仍然維持原先的單詞順序了。

關(guān)鍵要看明白上圖右側(cè)那個掩碼矩陣,我相信很多人剛開始沒看明白,因為我剛開始也沒看明白,因為沒有標(biāo)出掩碼矩陣的單詞坐標(biāo),它的坐標(biāo)是1-2-3-4,就是表面那個X的單詞順序,通過掩碼矩陣,就能改成你想要的排列組合,并讓當(dāng)前單詞看到它該看到的所謂上文,其實是摻雜了上文和下文的內(nèi)容。這是attention mask來實現(xiàn)排列組合的背后的意思。

上面講的Permutation Language Model是XLNet的主要理論創(chuàng)新,所以介紹的比較多,從模型角度講,這個創(chuàng)新還是挺有意思的,因為它開啟了自回歸語言模型如何引入下文的一個思路,相信對于后續(xù)工作會有啟發(fā)。當(dāng)然,XLNet不僅僅做了這些,它還引入了其它的因素,也算是一個當(dāng)前有效技術(shù)的集成體。

感覺XLNet就是Bert、GPT 2.0和Transformer XL的綜合體變身,首先,它通過PLM預(yù)訓(xùn)練目標(biāo),吸收了Bert的雙向語言模型;然后,GPT2.0的核心其實是更多更高質(zhì)量的預(yù)訓(xùn)練數(shù)據(jù),這個明顯也被XLNet吸收進(jìn)來了;再然后,Transformer XL的主要思想也被吸收進(jìn)來,它的主要目標(biāo)是解決Transformer對于長文檔NLP應(yīng)用不夠友好的問題。

以上是XLNet的幾個主要改進(jìn)點,有模型創(chuàng)新方面的,有其它模型引入方面的,也有數(shù)據(jù)擴(kuò)充方面的。那么,這些因素各自起到了什么作用呢?在后面我們會談。在談不同因素各自作用之前,我們先分析下XLNet和Bert的異同問題。

與 Bert 的預(yù)訓(xùn)練過程的異同問題

盡管看上去,XLNet在預(yù)訓(xùn)練機制引入的Permutation Language Model這種新的預(yù)訓(xùn)練目標(biāo),和Bert采用Mask標(biāo)記這種方式,有很大不同。其實你深入思考一下,會發(fā)現(xiàn),兩者本質(zhì)是類似的。區(qū)別主要在于:Bert是直接在輸入端顯示地通過引入Mask標(biāo)記,在輸入側(cè)隱藏掉一部分單詞,讓這些單詞在預(yù)測的時候不發(fā)揮作用,要求利用上下文中其它單詞去預(yù)測某個被Mask掉的單詞;而XLNet則拋棄掉輸入側(cè)的Mask標(biāo)記,通過Attention Mask機制,在Transformer內(nèi)部隨機Mask掉一部分單詞(這個被Mask掉的單詞比例跟當(dāng)前單詞在句子中的位置有關(guān)系,位置越靠前,被Mask掉的比例越高,位置越靠后,被Mask掉的比例越低),讓這些被Mask掉的單詞在預(yù)測某個單詞的時候不發(fā)生作用。

所以,本質(zhì)上兩者并沒什么太大的不同,只是Mask的位置,Bert更表面化一些,XLNet則把這個過程隱藏在了Transformer內(nèi)部而已。這樣,就可以拋掉表面的[Mask]標(biāo)記,解決它所說的預(yù)訓(xùn)練里帶有[Mask]標(biāo)記導(dǎo)致的和Fine-tuning過程不一致的問題。至于說XLNet說的,Bert里面被Mask掉單詞的相互獨立問題,也就是說,在預(yù)測某個被Mask單詞的時候,其它被Mask單詞不起作用,這個問題,你深入思考一下,其實是不重要的,因為XLNet在內(nèi)部Attention Mask的時候,也會Mask掉一定比例的上下文單詞,只要有一部分被Mask掉的單詞,其實就面臨這個問題。

而如果訓(xùn)練數(shù)據(jù)足夠大,其實不靠當(dāng)前這個例子,靠其它例子,也能彌補被Mask單詞直接的相互關(guān)系問題,因為總有其它例子能夠?qū)W會這些單詞的相互依賴關(guān)系。

我相信,通過改造Bert的預(yù)訓(xùn)練過程,其實是可以模擬XLNet的Permutation Language Model過程的:Bert目前的做法是,給定輸入句子X,隨機Mask掉15%的單詞,然后要求利用剩下的85%的單詞去預(yù)測任意一個被Mask掉的單詞,被Mask掉的單詞在這個過程中相互之間沒有發(fā)揮作用。

如果我們把Bert的預(yù)訓(xùn)練過程改造成:對于輸入句子,隨機選擇其中任意一個單詞Ti,只把這個單詞改成Mask標(biāo)記,假設(shè)Ti在句子中是第i個單詞,那么此時隨機選擇X中的任意i個單詞,只用這i個單詞去預(yù)測被Mask掉的單詞。

當(dāng)然,這個過程理論上也可以在Transformer內(nèi)采用attention mask來實現(xiàn)。如果是這樣,其實Bert的預(yù)訓(xùn)練模式就和XLNet是基本等價的了。

或者換個角度思考,假設(shè)仍然利用Bert目前的Mask機制,但是把Mask掉15%這個條件極端化,改成,每次一個句子只Mask掉一個單詞,利用剩下的單詞來預(yù)測被Mask掉的單詞。那么,這個過程其實跟XLNet的PLM也是比較相像的,區(qū)別主要在于每次預(yù)測被Mask掉的單詞的時候,利用的上下文更多一些(XLNet在實現(xiàn)的時候,為了提升效率,其實也是選擇每個句子最后末尾的1/K單詞被預(yù)測,假設(shè)K=7,意味著一個句子X,只有末尾的1/7的單詞會被預(yù)測,這意味著什么呢?意味著至少保留了6/7的Context單詞去預(yù)測某個單詞,對于最末尾的單詞,意味著保留了所有的句子中X的其它單詞,這其實和上面提到的Bert只保留一個被Mask單詞是一樣的)。

或者我們站在Bert預(yù)訓(xùn)練的角度來考慮XLNet,如果XLNet改成對于句子X,只需要預(yù)測句子中最后一個單詞,而不是最后的1/K(就是假設(shè)K特別大的情況),那么其實和Bert每個輸入句子只Mask掉一個單詞,兩者基本是等價的。

當(dāng)然,XLNet這種改造,維持了表面看上去的自回歸語言模型的從左向右的模式,這個Bert做不到,這個有明顯的好處,就是對于生成類的任務(wù),能夠在維持表面從左向右的生成過程前提下,模型里隱含了上下文的信息。

所以看上去,XLNet貌似應(yīng)該對于生成類型的NLP任務(wù),會比Bert有明顯優(yōu)勢。另外,因為XLNet還引入了Transformer XL的機制,所以對于長文檔輸入類型的NLP任務(wù),也會比Bert有明顯優(yōu)勢。

哪些因素在起作用?

如上分析,XLNet有個好處,但是感覺同時也是個問題,那就是:XLNet其實同時引入了很多因素在模型里。說是好處,因為實驗證明了這樣效果確實好,即使是跟Bert_Large這種非常強的基準(zhǔn)模型比也是,尤其是長文檔任務(wù),這個效果提升比較明顯;說是問題,是因為其實應(yīng)該在實驗部分充分說明,如果模型起了作用,這些因素各自發(fā)揮了多大作用,尤其是在跟Bert進(jìn)行對比的時候,感覺應(yīng)該把數(shù)據(jù)規(guī)模這個變量磨平進(jìn)行比較,因為這才是單純的模型差異導(dǎo)致的性能差異,而不是訓(xùn)練數(shù)據(jù)量引發(fā)的差異。

當(dāng)然,XLNet最后一組實驗是把這個預(yù)訓(xùn)練數(shù)據(jù)規(guī)模差異磨平后,和Bert比較的,所以信息含量更大些。而前面的幾組實驗,因為天然存在預(yù)訓(xùn)練數(shù)據(jù)量的差異,所以模型導(dǎo)致的差異到底有多大,看得不太明顯。

我們上文提到過,XLNet起作用的,如果宏觀歸納一下,共有三個因素;

1. 與Bert采取De-noising Autoencoder方式不同的新的預(yù)訓(xùn)練目標(biāo):Permutation Language Model(簡稱PLM);這個可以理解為在自回歸LM模式下,如何采取具體手段,來融入雙向語言模型。這個是XLNet在模型角度比較大的貢獻(xiàn),確實也打開了NLP中兩階段模式潮流的一個新思路。

2. 引入了Transformer-XL的主要思路:相對位置編碼以及分段RNN機制。實踐已經(jīng)證明這兩點對于長文檔任務(wù)是很有幫助的;

3. 加大增加了預(yù)訓(xùn)練階段使用的數(shù)據(jù)規(guī)模;Bert使用的預(yù)訓(xùn)練數(shù)據(jù)是BooksCorpus和英文Wiki數(shù)據(jù),大小13G。XLNet除了使用這些數(shù)據(jù)外,另外引入了Giga5,ClueWeb以及Common Crawl數(shù)據(jù),并排掉了其中的一些低質(zhì)量數(shù)據(jù),大小分別是16G,19G和78G??梢钥闯?,在預(yù)訓(xùn)練階段極大擴(kuò)充了數(shù)據(jù)規(guī)模,并對質(zhì)量進(jìn)行了篩選過濾。這個明顯走的是GPT2.0的路線。

所以實驗部分需要仔細(xì)分析,提升到底是上述哪個因素或者是哪幾個因素導(dǎo)致的性能提升?

我們把實驗分成幾個部分來分析。

首先,給人最大的印象是:XLNet對于閱讀理解類任務(wù),相對Bert,性能有極大幅度地提升。下面是論文報道的實驗結(jié)果:

其中,RACE和SQuAD 2.0是文檔長度較長的閱讀理解任務(wù),任務(wù)難度也相對高。可以看出,在這兩個任務(wù)中,XLNet相對 Bert_Large,確實有大幅性能提升(Race提升13.5%,SQuAD 2.0 F1指標(biāo)提升8.6)。在Squad1.1上提升盡管稍微小些,F(xiàn)1提升3.9%,但是因為基準(zhǔn)高,所以提升也比較明顯。

說XLNet在閱讀理解,尤其是長文檔的閱讀理解中,性能大幅超過Bert,這個是沒疑問的。但是,因為XLNet融入了上文說的三個因素,所以不確定每個因素在其中起的作用有多大,而對于長文檔,Transformer XL的引入肯定起了比較大的作用,Bert天然在這種類型任務(wù)中有缺點,其它兩類因素的作用不清楚。

感覺這里應(yīng)該增加一個基準(zhǔn),就是Bert用與XLNet相同大小的預(yù)訓(xùn)練數(shù)據(jù)做,這樣抹平數(shù)據(jù)量差異,更好比較模型差異帶來的效果差異。當(dāng)然,我覺得即使是這樣,XLNet應(yīng)該仍然是比Bert效果好的,只是可能不會差距這么大,因為XLNet的長文檔優(yōu)勢肯定會起作用。

下面我們看下其它類型的NLP任務(wù)。

GLUE是個綜合的NLP任務(wù)集合,包含各種類型的任務(wù),因為ensemble模式里面包含了各種花式的trick,所以重點看上面一組實驗,這里比較單純。從實驗數(shù)據(jù)看,XLNet相對Bert也有性能提升,當(dāng)然不像閱讀理解提升那么大,而且性能提升比較大的集中在RTE,MNLI和COLA數(shù)據(jù)集合,其它任務(wù)提升效果還好。

而我一直覺得,RTE在GLUE里,是個神奇的存在,如果沒有它,很多論文的效果可能沒法看,這個是閑話,先不講了,后面我會單說。

當(dāng)然,仍然不確定這種性能提升主要來自于XLNet的哪個因素,或者哪幾個因素各自的貢獻(xiàn),尤其是如果Bert加大預(yù)訓(xùn)練數(shù)據(jù)規(guī)模后,兩者性能差異有多大。感覺這里Transformer XL的因素可能發(fā)揮的作用不會太大,其它兩個因素在起作用,但是作用未知,這里感覺應(yīng)該補充其它實驗。

上面是文本分類任務(wù)和信息檢索任務(wù),可以看出,相對Bert,XLNet效果有提升,但是幅度不算大。仍然是上面的考慮,起作用的三個因素,到底哪個發(fā)揮多大作用,從數(shù)據(jù)方面看不太出來。

下面一組實驗可以仔細(xì)分析一下,這組實驗是排除掉上述第三個數(shù)據(jù)規(guī)模因素的實驗的對比,就是說XLNet用的是和Bert相同規(guī)模的預(yù)訓(xùn)練數(shù)據(jù),所以與Bert對比更具備模型方面的可比較性,而沒有數(shù)據(jù)規(guī)模的影響。實驗結(jié)果如下:

如果仔細(xì)分析實驗數(shù)據(jù),實驗結(jié)果說明:

因為和Bert比較,XLNet使用相同的預(yù)訓(xùn)練數(shù)據(jù)。所以兩者的性能差異來自于:Permutation Language Model預(yù)訓(xùn)練目標(biāo)以及Transformer XL的長文檔因素。

而從中可以看出,DAE+Transformer XL體現(xiàn)的是長文檔因素的差異,和Bert比,Race提升1個點,SQuAD F1提升3個點,MNLI提升0.5個點,SST-2性能稍微下降。這是Transformer XL因素解決長文檔因素帶來的收益,很明顯,長文檔閱讀理解任務(wù)提升比較明顯,其它任務(wù)提升不太明顯。

而通過XLNet進(jìn)一步和DAE+Transformer XL及Bert比,這一點應(yīng)該拆解出Permutation Language Model和Mask的方式差異??梢钥闯觯篨LNet相對DAE+Transformer XL來說,Race進(jìn)一步提升1個點左右;SQuAD進(jìn)一步提升1.8個點左右,NMLI提升1個點左右,SST-B提升不到1個點。

雖然不精準(zhǔn),但是大致是能說明問題的,這個應(yīng)該大致是PLM帶來的模型收益。可以看出,PLM還是普遍有效的,但是提升幅度并非特別巨大。

如果我們結(jié)合前面Race和SQuAD的實驗結(jié)果看(上面兩組實驗是三個因素的作用,后面是排除掉數(shù)據(jù)量差異的結(jié)果,所以兩者的差距,很可能就是第三個因素:數(shù)據(jù)規(guī)模導(dǎo)致的差異,當(dāng)然,因為一個是Bert_base,一個是Bert_Large,所以不具備完全可比性,但是大致估計不會偏離真實結(jié)論太遠(yuǎn)),Race數(shù)據(jù)集合三因素同時具備的XLNet,超過Bert絕對值大約9個多百分點,Transformer因素+PLM因素估計貢獻(xiàn)大約在2到4個點之間,那么意味著預(yù)訓(xùn)練數(shù)據(jù)量導(dǎo)致的差異大概在4到5個點左右;類似的,可以看出,SQuAD 2.0中,預(yù)訓(xùn)練數(shù)據(jù)量導(dǎo)致的差異大約在2到3個點左右,也就是說,估計訓(xùn)練數(shù)據(jù)量帶來的提升,在閱讀理解任務(wù)中大約占比30%到40%左右。

如果從實驗結(jié)果歸納一下的話,可以看出:XLNet綜合而言,效果是優(yōu)于Bert的,尤其是在長文檔類型任務(wù),效果提升明顯。如果進(jìn)一步拆解的話,因為對比實驗不足,只能做個粗略的結(jié)論:預(yù)訓(xùn)練數(shù)據(jù)量的提升,大概帶來30%左右的性能提升,其它兩個模型因素帶來剩余的大約70%的性能提升。

當(dāng)然,這個主要指的是XLNet性能提升比較明顯的閱讀理解類任務(wù)而言。對于其它類型任務(wù),感覺Transformer XL的因素貢獻(xiàn)估計不會太大,主要應(yīng)該是其它兩個因素在起作用。

對NLP應(yīng)用任務(wù)的影響

XLNet其實本質(zhì)上還是ELMO/GPT/Bert這一系列兩階段模型的進(jìn)一步延伸。在將自回歸LM方向引入雙向語言模型方面,感覺打開了一個新思路,這點還是非常對人有啟發(fā)的。當(dāng)然,如果深入思考,其實和Bert并沒有太大的不同。

如果讓我推論下XLNet的出現(xiàn),對后續(xù)NLP工作的影響,我覺得跟Bert比,最直接的影響應(yīng)該有兩個,一個是對于Bert長文檔的應(yīng)用,因為Transformer天然對長文檔任務(wù)處理有弱點,所以XLNet對于長文檔NLP任務(wù)相比Bert應(yīng)該有直接且比較明顯的性能提升作用,它在論文中也證明了這點。所以,以后長文檔類型的NLP應(yīng)用,XLNet明顯跟Bert比占優(yōu)勢。當(dāng)然,你說我把Transformer XL的因素引入Bert,然后繼續(xù)在Bert上做改進(jìn),明顯這也是可以的。

第二點,對于生成類的NLP任務(wù),到目前為止,盡管出了一些改進(jìn)模型,但是從效果看,Bert仍然不能很好地處理。而因為XLNet的預(yù)訓(xùn)練模式天然符合下游任務(wù)序列生成結(jié)果,所以按理說能夠直接通過引入XLNet來改進(jìn)生成類NLP任務(wù)的效果。所以,這點估計是XLNet會明顯占優(yōu)勢的一個領(lǐng)域。

可以預(yù)計的是,很快我們就會看到XLNet在文本摘要,機器翻譯,信息檢索…..等符合上述XLNet應(yīng)用領(lǐng)域特點和優(yōu)勢領(lǐng)域的應(yīng)用結(jié)果,以及在這些任務(wù)上的進(jìn)一步改進(jìn)模型。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    489

    瀏覽量

    22064

原文標(biāo)題:碾壓Bert?“屠榜”的XLnet對NLP任務(wù)意味著什么

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AFE0064芯片手冊中把所有的地引腳都表示為GND,是不是就意味著不分?jǐn)?shù)字地和模擬地呢?

    最近在用AFE0064設(shè)計一款產(chǎn)品,再畫版圖的時候遇到了問題,就是AFE0064芯片手冊中把所有的地引腳都表示為GND,是不是就意味著不分?jǐn)?shù)字地和模擬地呢?如果后端AD分?jǐn)?shù)字地和模擬地,為了達(dá)到更好的性能,GND應(yīng)該和數(shù)字地相連,還是模擬地鏈接呢?
    發(fā)表于 01-10 07:06

    ADS7230有兩個電源和兩個地,是不是意味著芯片內(nèi)部模擬部分和數(shù)字部分是隔離的?

    ADS7230有兩個電源和兩個地,是不是意味著芯片內(nèi)部模擬部分和數(shù)字部分是隔離的?或者是非隔離,只做電平轉(zhuǎn)換的?忘各位大俠解答,小弟不甚感激?。?!
    發(fā)表于 01-08 08:21

    ADS1274沒有DRDY信號輸出,是否意味著芯片已經(jīng)損壞?

    ADS1274有CLK信號,但是沒有DRDY信號輸出,是否意味著芯片已經(jīng)損壞? 芯片工作正常應(yīng)該一直有DRDY信號輸出的,之前芯片一直是正常的,接了個傳感器加載測試結(jié)果DRDY就沒輸出了,傳感器
    發(fā)表于 12-31 07:34

    ADS8671 datasheet里寫的是小信號輸入-3db帶寬為15KHz,是不是意味著正常信號超過10K衰減已經(jīng)很厲害了?

    ADS8671這個芯片,datasheet里寫的是小信號輸入-3db帶寬為15KHz,是不是意味著正常信號超過10K衰減已經(jīng)很厲害了,那要1MSPS這么高的采樣速率有什么用?
    發(fā)表于 12-20 07:54

    在ADS8320的規(guī)格書里,Tcsd最大為0ns,請問這是不是意味著Dclock極性只能是空閑為低?

    在ADS8320的規(guī)格書里,Tcsd最大為0ns,請問這是不是意味著Dclock極性只能是空閑為低?
    發(fā)表于 11-29 06:47

    ADC的數(shù)據(jù)表給出了±VREF的輸入范圍,是否意味著可以測量相對于接地的負(fù)電壓?

    我的 ADC 的數(shù)據(jù)表給出了 ±VREF 的輸入范圍。這是否意味著我可以測量相對于接地的負(fù)電壓?
    發(fā)表于 11-26 08:22

    ADS1262浮空測量波動大,是否意味著連接上信號實測波動也會很大?

    : 1.這樣的測試數(shù)據(jù)是否具有參考價值?換句話說,浮空測量波動大,是否意味著連接上信號實測波動也會很大? 2.USB轉(zhuǎn)TTL芯片接電腦輸出的5V電壓是否不夠穩(wěn)定,無法正確反應(yīng)采集效果?
    發(fā)表于 11-19 06:17

    超級電容的出現(xiàn)意味著儲能技術(shù)的突破

    電子產(chǎn)品靠電能運轉(zhuǎn),有線供電和電池供電是主要方式。超級電容,又稱為電化學(xué)電容器或雙電層電容器,是一種介于傳統(tǒng)電容器和電池之間的新型儲能裝置。充放電快、循環(huán)次數(shù)多,應(yīng)用前景廣。
    的頭像 發(fā)表于 10-30 14:00 ?401次閱讀
    超級電容的出現(xiàn)<b class='flag-5'>意味著</b>儲能技術(shù)的突破

    請問固定增益芯片是否意味著不能通過改變外圍參數(shù)來改變增益?

    固定增益芯片是否意味著我不能通過改變外圍參數(shù)來改變增益?
    發(fā)表于 09-11 07:13

    想要對脈寬3ns的脈沖信號進(jìn)行放大,是不是意味著我選放大器時的響應(yīng)時間要小于3ns?

    想要對脈寬3ns的脈沖信號進(jìn)行放大,是不是意味著我選放大器時的響應(yīng)時間要小于3ns?
    發(fā)表于 08-08 07:31

    nlp自然語言處理的主要任務(wù)及技術(shù)方法

    的應(yīng)用,如搜索引擎、機器翻譯、語音識別、情感分析等。 NLP的主要任務(wù) NLP的主要任務(wù)可以分為以下幾個方面: 1.1 詞法分析(Lexical Analysis) 詞法分析是
    的頭像 發(fā)表于 07-09 10:26 ?1254次閱讀

    llm模型有哪些格式

    Representations from Transformers):BERT是一種雙向預(yù)訓(xùn)練模型,通過大量文本數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,可以用于各種NLP任務(wù),如文本分類、問答、命名實體識別等。 b. GPT(
    的頭像 發(fā)表于 07-09 09:59 ?688次閱讀

    芯耀輝科技解讀高速互連對于AI和大算力芯片而言意味著什么?

    近年來,隨著人工智能技術(shù)的迅猛發(fā)展,大算力芯片已成為推動AI技術(shù)創(chuàng)新的關(guān)鍵力量。然而,隨著芯片內(nèi)部計算單元數(shù)量的增加和任務(wù)復(fù)雜度的提升,互連已成為一個嚴(yán)重的瓶頸,制約算力的發(fā)揮。好比飯店里烹飪
    的頭像 發(fā)表于 07-08 11:39 ?1002次閱讀

    NLP模型中RNN與CNN的選擇

    在自然語言處理(NLP)領(lǐng)域,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)是兩種極為重要且廣泛應(yīng)用的網(wǎng)絡(luò)結(jié)構(gòu)。它們各自具有獨特的優(yōu)勢,適用于處理不同類型的NLP任務(wù)。本文旨在深入探討RNN與CNN
    的頭像 發(fā)表于 07-03 15:59 ?586次閱讀

    請問freertos測試外部1KHz頻率,會不會讓系統(tǒng)負(fù)荷加重?

    請問我現(xiàn)在測試頻率有1khz,采用輸入捕獲的模式,就是意味著1ms就進(jìn)中斷,中斷中,釋放信號量進(jìn)行同步,任務(wù)就會讀取該頻率,意味著任務(wù)會每1ms讀取頻率值,這會不會時間太短了, 其他
    發(fā)表于 04-18 08:12