1. 從Embedding到XLNet:NLP預(yù)訓(xùn)練模型簡(jiǎn)介

        共 4703字,需瀏覽 10分鐘

         ·

        2021-05-06 12:05

        深度學(xué)習(xí)


        Author:louwill

        Machine Learning Lab

             

        遷移學(xué)習(xí)和預(yù)訓(xùn)練模型不僅在計(jì)算機(jī)視覺(jué)應(yīng)用廣泛,在NLP領(lǐng)域也逐漸成為主流方法。近來(lái)不斷在各項(xiàng)NLP任務(wù)上刷新最佳成績(jī)的各種預(yù)訓(xùn)練模型值得我們第一時(shí)間跟進(jìn)。本節(jié)對(duì)NLP領(lǐng)域的各種預(yù)訓(xùn)練模型進(jìn)行一個(gè)簡(jiǎn)要的回顧,對(duì)從初始的Embedding模型到ELMo、GPT、到谷歌的BERT、再到最強(qiáng)NLP預(yù)訓(xùn)練模型XLNet。梳理NLP預(yù)訓(xùn)練模型發(fā)展的基本脈絡(luò),對(duì)當(dāng)前NLP發(fā)展的基本特征進(jìn)行概括。


        從Embedding到ELMo

        詞嵌入(Word Embedding,WE)是一種較為流行的詞匯表征方法,其中word2vec是最主要的詞嵌入工具。本文的主題是NLP預(yù)訓(xùn)練模型,詞嵌入除了是一種詞匯表征方法外,一種語(yǔ)言模型,更是一種標(biāo)準(zhǔn)的預(yù)訓(xùn)練過(guò)程。很長(zhǎng)一段時(shí)間以來(lái),詞嵌入對(duì)于許多下游的NLP任務(wù)都大有裨益,例如,計(jì)算語(yǔ)義相似度、社交關(guān)系挖掘與推薦、向量檢索等等。

        但詞嵌入本身也有很多硬傷。最嚴(yán)重的一個(gè)問(wèn)題是多義詞問(wèn)題。作為自然語(yǔ)言中一種最常見(jiàn)的現(xiàn)象,詞嵌入很難處理好這個(gè)問(wèn)題。一個(gè)多義詞的詞嵌入如圖1所示。
        圖1多義詞詞嵌入示例

        圖1所示是單詞Bear的詞嵌入展示,但Bear是個(gè)多義詞,作為名詞是熊的意思,作為動(dòng)詞又是忍受的意思。詞嵌入在對(duì)Bear進(jìn)行語(yǔ)義表征時(shí),很難區(qū)分這兩個(gè)含義。即使這兩種含義出現(xiàn)在不同的上下文語(yǔ)義中,但是用語(yǔ)言模型進(jìn)行訓(xùn)練的時(shí)候,無(wú)論什么樣的上下文經(jīng)過(guò)word2vec處理,都只會(huì)預(yù)測(cè)為語(yǔ)義相同單詞Bear,而同一個(gè)單詞占據(jù)的是同一行參數(shù)空間,這就使得這兩種不同的上下文信息都會(huì)編碼到相同的詞嵌入空間中去,所以詞嵌入無(wú)法處理多義詞問(wèn)題。

        所以,對(duì)于多義詞問(wèn)題,從語(yǔ)言模型嵌入(Embedding from Language Models,ELMo)給出較好的解決方案。詞嵌入的缺點(diǎn)在于靜態(tài)表示,所謂靜態(tài)表示就是word2vec在訓(xùn)練完之后每個(gè)單詞的詞向量都固定住了,在使用的時(shí)候就比較受限于應(yīng)用場(chǎng)景。ELMo的思想也很簡(jiǎn)單,詞嵌入有靜態(tài)表示的缺點(diǎn),那ELMo就來(lái)根據(jù)實(shí)際應(yīng)用的上下文來(lái)對(duì)訓(xùn)練好的詞嵌入進(jìn)行動(dòng)態(tài)調(diào)整。具體來(lái)說(shuō),ELMo先學(xué)習(xí)一個(gè)單詞的詞向量表示,這時(shí)候這個(gè)單詞的詞向量跟原始的詞嵌入是一樣的,不具備區(qū)分多義詞的能力。在實(shí)際使用的時(shí)候,我們根據(jù)應(yīng)用場(chǎng)景的上下文語(yǔ)義來(lái)調(diào)整單詞的詞向量表示,經(jīng)過(guò)調(diào)整后的詞向量就具備區(qū)分多義詞能力了。

        ELMo采用了雙層雙向的LSTM結(jié)構(gòu),由一個(gè)前向和一個(gè)后向語(yǔ)言模型構(gòu)成,目標(biāo)函數(shù)則取這兩個(gè)方向語(yǔ)言模型的最大似然。ELMo結(jié)構(gòu)如圖2所示,左端的前向雙層LSTM表示正方向的編碼器,輸入的是除目標(biāo)單詞之外的從左到右的上文Context-before,與之對(duì)應(yīng)的右端的逆向雙層代表反向編碼器的逆序下文Context-after。

        圖2 ELMo結(jié)構(gòu)

        ELMo訓(xùn)練好之后即可根據(jù)下游的NLP任務(wù)來(lái)進(jìn)行調(diào)整。具體就是從預(yù)訓(xùn)練網(wǎng)絡(luò)中提取對(duì)應(yīng)單詞的網(wǎng)絡(luò)各層的詞向量作為新特征補(bǔ)充道下游的NLP任務(wù),因?yàn)镋LMo是以單詞特征的形式提供給下游NLP任務(wù)的,所以這一類預(yù)訓(xùn)練方法也稱之為Feature-based Pre-Training,即基于特征的預(yù)訓(xùn)練模型。另外一種基于Fine-Tuning的預(yù)訓(xùn)練方法下文會(huì)說(shuō)到。


        特征提取器:Transformer

        一個(gè)好的NLP預(yù)訓(xùn)練模型,除了有能夠適應(yīng)各種場(chǎng)景的詞嵌入表達(dá)外,更需要一個(gè)特征提取能力強(qiáng)大的網(wǎng)絡(luò)結(jié)構(gòu)。ELMo采用了雙向雙層的LSTM結(jié)構(gòu),但事后證明RNN和LSTM的特征提取能力還遠(yuǎn)遠(yuǎn)不夠強(qiáng)大。下文要說(shuō)到的GPT和BERT等超強(qiáng)的預(yù)訓(xùn)練模型大多都用到了一種叫Transformer的網(wǎng)絡(luò)結(jié)構(gòu)。Transformer在那篇著名的“Attention is all your need”的論文中正式提出,也正是在這篇文章里我們了解了注意力機(jī)制這樣一種設(shè)計(jì)。傳統(tǒng)的RNN或者LSTM的順序計(jì)算機(jī)制存在以下兩個(gè)比較嚴(yán)重的問(wèn)題。
        (1)時(shí)間步依賴于時(shí)間步時(shí)刻的計(jì)算結(jié)果,這也是RNN并行能力較差的原因;
        (2)順序計(jì)算過(guò)程中會(huì)存在信息丟失現(xiàn)象。

        為此,Transformer拋棄了傳統(tǒng)的CNN和RNN結(jié)構(gòu),本質(zhì)是一種完全由Attention構(gòu)成的網(wǎng)絡(luò)。Transformer從結(jié)構(gòu)上看依然是編碼-解碼架構(gòu),由自注意力(Self-Attention)、編碼-解碼注意力(Encoder-Decoder Attention)和前饋神經(jīng)網(wǎng)絡(luò)(Feed Forward Neural Network)構(gòu)成,一個(gè)完整的Transformer結(jié)構(gòu)編碼和解碼各采用了6層堆疊共12層的編碼-解碼結(jié)構(gòu),具體結(jié)構(gòu)如圖3所示。

        圖3 Transformer 結(jié)構(gòu)


        Transformer目前已經(jīng)成功取代RNN和LSTM成為NLP預(yù)訓(xùn)練模型的主流的特征提取器,若是ELMo能將雙向雙層的LSTM結(jié)構(gòu)換成Transformer,想來(lái)當(dāng)時(shí)可能就會(huì)是另一種反響了。

        低調(diào)王者:GPT

        GPT模型很好的彌補(bǔ)了ELMo留下的遺憾。GPT的全稱為“Generative Pre-Training”,意為生成式的預(yù)訓(xùn)練模型。在前面ELMo中我們提到NLP的預(yù)訓(xùn)練方法分為基于特征的預(yù)訓(xùn)練和基于微調(diào)的預(yù)訓(xùn)練,GPT就是一種基于微調(diào)的預(yù)訓(xùn)練方法。

        GPT本質(zhì)上跟ELMo較為類似,但有兩點(diǎn)關(guān)鍵的區(qū)別:一是我們上面說(shuō)的彌補(bǔ)了ELMo的遺憾,采用了Transformer取代了LSTM作為特征提取器,二是相對(duì)于ELMo的雙向模型,GPT采用的是單向的語(yǔ)言模型。所謂單向,指的是相對(duì)于雙向的預(yù)測(cè)目標(biāo)詞同時(shí)使用上下文信息來(lái)說(shuō)只使用Context-before上文信息來(lái)做預(yù)測(cè),不使用Context-after的下文信息。當(dāng)然,單向模型相較于雙向模型還是有一定的信息損失的,這也是GPT的一個(gè)缺點(diǎn)。GPT結(jié)構(gòu)如圖4所示。

        圖4 GPT結(jié)構(gòu)

        圖中4左邊是GPT使用的Transformer結(jié)構(gòu)作為預(yù)訓(xùn)練,右邊是如何根據(jù)具體的NLP任務(wù)來(lái)對(duì)GPT進(jìn)行Fine-Tuning。使用了Transformer結(jié)構(gòu)的GPT模型效果也非常驚艷,在基礎(chǔ)的12個(gè)NLP任務(wù)里有9個(gè)達(dá)到了State of the Art。要說(shuō)GPT有什么美中不足,那大概就是單向語(yǔ)言模型了。即使是后來(lái)的GPT-2,也只能算是放大版的GPT,仍然沒(méi)有對(duì)單向語(yǔ)言模型進(jìn)行修改。

        封神之作:BERT

        有了前面的積累,大名鼎鼎的BERT其實(shí)也就是水到渠成的事了。當(dāng)初BERT橫空出世,刷爆各種NLP記錄榜,讓人以為BERT會(huì)有什么里程碑式的結(jié)構(gòu)創(chuàng)新。其實(shí)不然,正是有了ELMo、GPT和Transformer等研究工作的積累,才成就了今天的BERT。跟ELMo和GPT一樣,BERT仍然是基于Finetune的預(yù)訓(xùn)練方法。

        BERT的全稱為Bidirectional Encoder Representations from Transformers,可以理解為基于Transformer的雙向編碼器表征,顧名思義,BERT的兩大關(guān)鍵點(diǎn)就都有了:雙向結(jié)構(gòu)和Transformer特征提取器。BERT本質(zhì)上就是雙向的GPT,若是當(dāng)初GPT把單向語(yǔ)言模型改成雙向語(yǔ)言模型,估計(jì)后來(lái)也就沒(méi)BERT什么事了。所以說(shuō),我們可以把BERT理解為一種以往研究的集成。BERT結(jié)構(gòu)如圖5所示。
        圖5 BERT結(jié)構(gòu)

        同樣的兩階段模型,左圖是BERT的預(yù)訓(xùn)練階段,采用雙向的Transformer結(jié)構(gòu)進(jìn)行特征提取,在Fine-Tuning階段直接根據(jù)具體的NLP任務(wù)進(jìn)行調(diào)整即可。到這里,我們基本上梳理清楚了ELMo、Transformer、GPT、和BERT之間的關(guān)系。

        雖說(shuō)BERT沒(méi)有太大創(chuàng)新,只是做了一些集成工作,但架不住實(shí)際效果太好,一經(jīng)面世就在各種NLP任務(wù)上刷出State of the Art,所以BERT依然是一項(xiàng)具有里程碑意義的工作。關(guān)于GPT和BERT本文還有很多像Masked語(yǔ)言模型等細(xì)節(jié)問(wèn)題沒(méi)有提到,感興趣的讀者可以把相關(guān)論文找出來(lái)仔細(xì)研讀。

        持續(xù)創(chuàng)新:XLNet

        XLNet是一個(gè)類似BERT的模型。是一種通用的自回歸預(yù)訓(xùn)練方法。正式介紹XLNet前,我們先來(lái)看兩個(gè)概念。一個(gè)是自回歸語(yǔ)言模型(Autoregressive LM),就是根據(jù)上文內(nèi)容來(lái)預(yù)測(cè)下一個(gè)可能出現(xiàn)的單詞,或者是反過(guò)來(lái)用下文來(lái)預(yù)測(cè)前文單詞,這種語(yǔ)言模型就是自回歸語(yǔ)言模型。我們前面提到的ELMo和GPT都是典型自回歸語(yǔ)言模型。另一個(gè)概念是自編碼語(yǔ)言模型(Autoencoder LM),關(guān)于自編碼器我們會(huì)在本書(shū)的最后幾章進(jìn)行介紹,基于自編碼器的語(yǔ)言模型是基本思想就是在輸入序列中隨機(jī)地抹去(Mask)掉一些單詞,然后在預(yù)訓(xùn)練的時(shí)候預(yù)測(cè)這些被Mask掉的單詞,通過(guò)自編碼器的角度看,被Mask掉的這些單詞可以視為向輸入添加的噪聲,BERT就是這種自編碼語(yǔ)言模型的代表。

        自編碼語(yǔ)言模型和自回歸語(yǔ)言模型正好相反。自編碼語(yǔ)言模型能夠比較好的融入雙向模型,但輸入端使用Mask使得預(yù)訓(xùn)練階段和Fine-Tuning階段會(huì)存在不一致的情況,因?yàn)樵贔ine-Tuning階段被Mask掉的單詞是沒(méi)有標(biāo)記的。所以BERT就存在這樣的缺點(diǎn)。

        為了解決BERT的這個(gè)問(wèn)題,XLNet應(yīng)運(yùn)而生。相較于BERT的自編碼語(yǔ)言模型,XLNet又用回了自回歸語(yǔ)言模型,但與ELMo和GPT不一樣的是XLNet采用一種新的方法來(lái)實(shí)現(xiàn)雙向編碼,這種方法叫作亂序語(yǔ)言模型(Permutation Language Model)。怎么個(gè)亂序法呢?具體如圖6所示。假設(shè)輸入序列X由X1、X2、X3和X4四個(gè)單詞構(gòu)成,現(xiàn)在要輸入的單詞ti為X3,位置是P3,我們想要它在上文Context-before中,也就是P1或者P2的位置看到位置P4的單詞X4。亂序方法如下:先固定住X3所在位置P3,然后對(duì)序列的全部四個(gè)單詞進(jìn)行隨機(jī)排列組合,從這個(gè)排列組合里選擇一部分作為語(yǔ)言模型的輸入X。假設(shè)隨機(jī)選擇的是X4,X2,X3,X1這樣的組合,此時(shí)X3就能同時(shí)看到上文X2和下文X4的內(nèi)容了。這種亂序的操作是XLNet的主要思想。
        圖6 XLNet亂序

        為了捕捉更長(zhǎng)距離的信息,XLNet采用了超長(zhǎng)版本的Transformer特征提取器transformer-XL。一系列改進(jìn)的結(jié)果就是XLNet在20個(gè)NLP任務(wù)上都以較大優(yōu)勢(shì)超越了此前的BERT,并且在18個(gè)任務(wù)上達(dá)到了State of the Art。

        以上就是本文介紹的主要內(nèi)容,基于深度學(xué)習(xí)的NLP目前正是一個(gè)變革巨大、發(fā)展迅速的領(lǐng)域,本文僅對(duì)一些重要的預(yù)訓(xùn)練模型進(jìn)行一個(gè)簡(jiǎn)單的概覽,很多細(xì)節(jié)方面還需要大家去進(jìn)一步的學(xué)習(xí)。

        往期精彩:

        【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf

        【原創(chuàng)首發(fā)】深度學(xué)習(xí)語(yǔ)義分割理論與實(shí)戰(zhàn)指南.pdf

         談中小企業(yè)算法崗面試

         算法工程師研發(fā)技能表

         真正想做算法的,不要害怕內(nèi)卷

         算法工程師的日常,一定不能脫離產(chǎn)業(yè)實(shí)踐

         技術(shù)學(xué)習(xí)不能眼高手低

         技術(shù)人要學(xué)會(huì)自我營(yíng)銷

         做人不能過(guò)擬合

        求個(gè)在看

        瀏覽 94
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 久操视频在线看 | 就去色色五月天 | 一本色道久久综合熟妇人妻 | 日韩欧美三级视频 | 欧美日韩高清 |