<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從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ù)的,所以這一類(lèi)預(yù)訓(xùn)練方法也稱(chēng)之為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í)間步依賴(lài)于時(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的全稱(chēng)為“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較為類(lèi)似,但有兩點(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的全稱(chēng)為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è)類(lèi)似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)銷(xiāo)

           做人不能過(guò)擬合

          求個(gè)在看

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美精品三级在线观看 | 99伊人大香蕉 | 精品国产Av无码久久久影音先锋 | 亚洲精品视频在线观看免费无码 | 欧美性爱中文字慕 |