-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
GPT自回歸語言模型(自回歸模型用什么軟件)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于GPT自回歸語言模型的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、預(yù)訓(xùn)練模型綜述--Albert,xlnet,bert,word2vec
Albert,xlnet,bert,word2vec
通過預(yù)訓(xùn)練模型實(shí)現(xiàn)遷移學(xué)習(xí),遷移學(xué)習(xí)本質(zhì)上是在一個(gè)數(shù)據(jù)集上訓(xùn)練模型,然后對(duì)該模型進(jìn)行調(diào)整,以在不同的數(shù)據(jù)集上執(zhí)行不同的自然語言處理功能。
1. word2vec
線性模型 :
很神奇的地方,從而也說明高維空間映射的詞向量可以很好體現(xiàn)真實(shí)世界中token之間的關(guān)系。如:king-man = queen-woman
負(fù)采樣 :
由于訓(xùn)練詞向量模型的目標(biāo)不是為了得到一個(gè)多么精準(zhǔn)的語言模型,而是為了獲得它的副產(chǎn)物——詞向量。所以要做到的不是在幾萬幾十萬個(gè)token中艱難計(jì)算softmax獲得最優(yōu)的那個(gè)詞(就是預(yù)測(cè)的對(duì)于給定詞的下一詞),而只需能做到在幾個(gè)詞中找到對(duì)的那個(gè)詞就行,這幾個(gè)詞包括一個(gè)正例(即直接給定的下一詞),和隨機(jī)產(chǎn)生的噪聲詞(采樣抽取的幾個(gè)負(fù)例),就是說訓(xùn)練一個(gè)sigmoid二分類器,只要模型能夠從中找出正確的詞就認(rèn)為完成任務(wù)。
這種負(fù)采樣思想也應(yīng)用到之后的BERT里,只不過從word-level變成sentence-level,這樣能獲取句子間關(guān)聯(lián)關(guān)系。
缺點(diǎn)是上下文無關(guān)(static):
因而為了讓句子有一個(gè)整體含義(context),大家會(huì)在下游具體的NLP任務(wù)中基與詞向量的序列做encoding操作。
下面是一個(gè)比較表格,模型不細(xì)講了,預(yù)測(cè)目標(biāo)這里的next word下一個(gè)詞,是所有傳統(tǒng)語言模型都做的事——尋找下一個(gè)詞填什么。
BERT模型進(jìn)一步增加詞向量模型泛化能力,充分描述字符級(jí)、詞級(jí)、句子級(jí)甚至句間關(guān)系特征。
真正的雙向encoding:
Masked LM,類似完形填空,盡管仍舊看到所有位置信息,但需要預(yù)測(cè)的詞已被特殊符號(hào)代替,可以放心雙向encoding。
Transformer做encoder實(shí)現(xiàn)上下文相關(guān)(context):
使用transformer而不是bi-LSTM做encoder,可以有更深的層數(shù)、具有更好并行性。并且線性的Transformer比lstm更易免受mask標(biāo)記影響,只需要通過self-attention減小mask標(biāo)記權(quán)重即可,而lstm類似黑盒模型,很難確定其內(nèi)部對(duì)于mask標(biāo)記的處理方式。
提升至句子級(jí)別:
學(xué)習(xí)句子/句對(duì)關(guān)系表示,句子級(jí)負(fù)采樣。首先給定的一個(gè)句子,下一句子正例(正確詞),隨機(jī)采樣一句負(fù)例(隨機(jī)采樣詞),句子級(jí)上來做二分類(即判斷句子是當(dāng)前句子的下一句還是噪聲),類似word2vec的單詞級(jí)負(fù)采樣。
二、BERT細(xì)則
這里主要介紹BERT的三個(gè)亮點(diǎn)Masked LM、transformer、sentence-level。
1. Masked Language Model
原本叫cloze test,是完形填空的意思。
隨機(jī)mask語料中15%的token,然后將masked token 位置輸出的最終隱層向量送入softmax,來預(yù)測(cè)masked token。
這樣輸入一個(gè)句子,每次只預(yù)測(cè)句子中大概15%的詞,所以BERT訓(xùn)練很慢。。。(但是google設(shè)備NB。。)
而對(duì)于蓋住詞的特殊標(biāo)記,在下游NLP任務(wù)中不存在。因此,為了和后續(xù)任務(wù)保持一致,作者按一定的比例在需要預(yù)測(cè)的詞位置上輸入原詞或者輸入某個(gè)隨機(jī)的詞。如:my dog is hairy
2. Transformer —— attention is all you need
Transformer模型是2018年5月提出的,可以替代傳統(tǒng)RNN和CNN的一種新的架構(gòu),用來實(shí)現(xiàn)機(jī)器翻譯,論文名稱是attention is all you need。無論是RNN還是CNN,在處理NLP任務(wù)時(shí)都有缺陷。CNN是其先天的卷積操作不很適合序列化的文本,RNN是其沒有并行化,很容易超出內(nèi)存限制(比如50tokens長度的句子就會(huì)占據(jù)很大的內(nèi)存)。
下面左圖是transformer模型一個(gè)結(jié)構(gòu),分成左邊Nx框框的encoder和右邊Nx框框的decoder,相較于RNN+attention常見的encoder-decoder之間的attention(上邊的一個(gè)橙色框),還多出encoder和decoder內(nèi)部的self-attention(下邊的兩個(gè)橙色框)。每個(gè)attention都有multi-head特征。最后,通過position encoding加入沒考慮過的位置信息。
下面從multi-head attention,self-attention, position encoding幾個(gè)角度介紹。
multi-head attention:
將一個(gè)詞的vector切分成h個(gè)維度,求attention相似度時(shí)每個(gè)h維度計(jì)算。由于單詞映射在高維空間作為向量形式,每一維空間都可以學(xué)到不同的特征,相鄰空間所學(xué)結(jié)果更相似,相較于全體空間放到一起對(duì)應(yīng)更加合理。比如對(duì)于vector-size=512的詞向量,取h=8,每64個(gè)空間做一個(gè)attention,學(xué)到結(jié)果更細(xì)化。
self-attention:
每個(gè)詞位的詞都可以無視方向和距離,有機(jī)會(huì)直接和句子中的每個(gè)詞encoding。比如上面右圖這個(gè)句子,每個(gè)單詞和同句其他單詞之間都有一條邊作為聯(lián)系,邊的顏色越深表明聯(lián)系越強(qiáng),而一般意義模糊的詞語所連的邊都比較深。比如:law,application,missing,opinion。。。
position encoding:
因?yàn)閠ransformer既沒有RNN的recurrence也沒有CNN的convolution,但序列順序信息很重要,比如你欠我100萬明天要還和我欠你100萬明天要還的含義截然不同。。。
transformer計(jì)算token的位置信息這里使用正弦波↓,類似模擬信號(hào)傳播周期性變化。這樣的循環(huán)函數(shù)可以一定程度上增加模型的泛化能力。
但BERT直接訓(xùn)練一個(gè)position embedding來保留位置信息,每個(gè)位置隨機(jī)初始化一個(gè)向量,加入模型訓(xùn)練,最后就得到一個(gè)包含位置信息的embedding(簡單粗暴。。),最后這個(gè)position embedding和word embedding的結(jié)合方式上,BERT選擇直接相加。
3. sentence-level representation
在很多任務(wù)中,僅僅靠encoding是不足以完成任務(wù)的(這個(gè)只是學(xué)到了一堆token級(jí)的特征),還需要捕捉一些句子級(jí)的模式,來完成SLI、QA、dialogue等需要句子表示、句間交互與匹配的任務(wù)。對(duì)此,BERT又引入了另一個(gè)極其重要卻又極其輕量級(jí)的任務(wù),來試圖把這種模式也學(xué)習(xí)到。
句子級(jí)負(fù)采樣
句子級(jí)別的連續(xù)性預(yù)測(cè)任務(wù),即預(yù)測(cè)輸入BERT的兩端文本是否為連續(xù)的文本。訓(xùn)練的時(shí)候,輸入模型的第二個(gè)片段會(huì)以50%的概率從全部文本中隨機(jī)選取,剩下50%的概率選取第一個(gè)片段的后續(xù)的文本。 即首先給定的一個(gè)句子(相當(dāng)于word2vec中給定context),它下一個(gè)句子即為正例(相當(dāng)于word2vec中的正確詞),隨機(jī)采樣一個(gè)句子作為負(fù)例(相當(dāng)于word2vec中隨機(jī)采樣的詞),然后在該sentence-level上來做二分類(即判斷句子是當(dāng)前句子的下一句還是噪聲)。
句子級(jí)表示
BERT是一個(gè)句子級(jí)別的語言模型,不像ELMo模型在與下游具體NLP任務(wù)拼接時(shí)需要每層加上權(quán)重做全局池化,BERT可以直接獲得一整個(gè)句子的唯一向量表示。它在每個(gè)input前面加一個(gè)特殊的記號(hào)[CLS],然后讓Transformer對(duì)[CLS]進(jìn)行深度encoding,由于Transformer是可以無視空間和距離的把全局信息encoding進(jìn)每個(gè)位置的,而[CLS]的最高隱層作為句子/句對(duì)的表示直接跟softmax的輸出層連接,因此其作為梯度反向傳播路徑上的“關(guān)卡”,可以學(xué)到整個(gè)input的上層特征。
segment embedding
對(duì)于句對(duì)來說,EA和EB分別代表左句子和右句子;對(duì)于句子來說,只有EA。這個(gè)EA和EB也是隨模型訓(xùn)練出來的。
如下圖所示,最終輸入結(jié)果會(huì)變成下面3個(gè)embedding拼接的表示。
首先,XLNet 是一個(gè)類似 BERT 的模型,而不是完全不同的模型。但這是一個(gè)非常有前途和潛力的??傊琗LNet是一種通用的自回歸預(yù)訓(xùn)練方法。
那么什么是自回歸(AR)語言模型?
AR語言模型是一種使用上下文詞來預(yù)測(cè)下一個(gè)詞的模型。但是在這里,上下文單詞被限制在兩個(gè)方向,前向或后向。
AR 語言模型的優(yōu)勢(shì)是擅長生成式自然語言處理任務(wù)。 因?yàn)樵谏缮舷挛臅r(shí),通常是前向的。AR 語言模型很自然地適用于此類 NLP 任務(wù)。
但AR語言模型有一些缺點(diǎn),它只能使用前向上下文或后向上下文,這意味著它不能同時(shí)使用前向和后向上下文。
自回歸語言模型有優(yōu)點(diǎn)有缺點(diǎn),缺點(diǎn)是只能利用上文或者下文的信息,不能同時(shí)利用上文和下文的信息,當(dāng)然,貌似ELMO這種雙向都做,然后拼接看上去能夠解決這個(gè)問題,因?yàn)槿诤夏J竭^于簡單,所以效果其實(shí)并不是太好。它的優(yōu)點(diǎn),其實(shí)跟下游NLP任務(wù)有關(guān),比如生成類NLP任務(wù),比如文本摘要,機(jī)器翻譯等,在實(shí)際生成內(nèi)容的時(shí)候,就是從左向右的,自回歸語言模型天然匹配這個(gè)過程。而Bert這種DAE模式,在生成類NLP任務(wù)中,就面臨訓(xùn)練過程和應(yīng)用過程不一致的問題,導(dǎo)致生成類的NLP任務(wù)到目前為止都做不太好。
與 AR 語言模型不同,BERT 被歸類為自動(dòng)編碼器(AE)語言模型。
AE 語言模型旨在從損壞的輸入重建原始數(shù)據(jù)。
損壞的輸入意味著我們?cè)陬A(yù)訓(xùn)練階段用 [MASK] 替換原始詞 into 。目標(biāo)是預(yù)測(cè) into 得到原始句子。
AE 語言模型的優(yōu)勢(shì)是,它可以從向前和向后的方向看到上下文。
但 AE 語言模型也有其缺點(diǎn)。它在預(yù)訓(xùn)練中使用 [MASK] ,但這種人為的符號(hào)在調(diào)優(yōu)時(shí)在真實(shí)數(shù)據(jù)中并不存在,會(huì)導(dǎo)致預(yù)訓(xùn)練-調(diào)優(yōu)的差異。[MASK] 的另一個(gè)缺點(diǎn)是它假設(shè)預(yù)測(cè)(掩蔽的)詞 在給定未屏蔽的 詞 的情況下彼此獨(dú)立。例如,我們有一句話“它表明住房危機(jī)已經(jīng)變成銀行危機(jī)”。我們掩蔽“銀行業(yè)”和“危機(jī)”。在這里注意,我們知道掩蔽的“銀行業(yè)”和“危機(jī)”包含彼此的隱含關(guān)系。但 AE 模型試圖預(yù)測(cè)“銀行業(yè)”給予未掩蔽的 詞,并預(yù)測(cè)“危機(jī)”分別給出未掩蔽的 詞。它忽略了“銀行業(yè)”與“危機(jī)”之間的關(guān)系。換句話說,它假設(shè)預(yù)測(cè)(掩蔽)的標(biāo)記彼此獨(dú)立。但是我們知道模型應(yīng)該學(xué)習(xí)預(yù)測(cè)(掩蔽)詞之間的這種相關(guān)性來預(yù)測(cè)其中一個(gè)詞。
作者想要強(qiáng)調(diào)的是,XLNet 提出了一種讓 AR 語言模型從雙向上下文中學(xué)習(xí)的新方法,以避免 MASK 方法在 AE 語言模型中帶來的缺點(diǎn)。
XLNet的出發(fā)點(diǎn)就是:能否融合自回歸LM和DAE LM兩者的優(yōu)點(diǎn)。就是說如果站在自回歸LM的角度,如何引入和雙向語言模型等價(jià)的效果;如果站在DAE LM的角度看,它本身是融入雙向語言模型的,如何拋掉表面的那個(gè)[Mask]標(biāo)記,讓預(yù)訓(xùn)練和Fine-tuning保持一致。當(dāng)然,XLNet還講到了一個(gè)Bert被Mask單詞之間相互獨(dú)立的問題,我相信這個(gè)不太重要,原因后面會(huì)說。當(dāng)然,我認(rèn)為這點(diǎn)不重要的事情,純粹是個(gè)人觀點(diǎn),出錯(cuò)難免,看看就完了,不用較真。
AR 語言模型只能向前或向后使用上下文,那么如何讓它從雙向上下文中學(xué)習(xí)呢?
語言模型包括兩個(gè)階段,即預(yù)訓(xùn)練階段和調(diào)優(yōu)階段。XLNet 專注于預(yù)訓(xùn)練階段。在預(yù)訓(xùn)練階段,它提出了一個(gè)名為排列語言建模的新目標(biāo)。我們可以從這個(gè)名稱知道基本思想,它使用排列。
這里我們舉一個(gè)例子來解釋。序列的次序是 [x1, x2, x3, x4] 。這種序列的所有排列如下。
因此對(duì)于這 4 個(gè)詞的([圖片上傳失敗...(image-c7a4e0-1570519576567)]
)句子,有 24([圖片上傳失敗...(image-d738b7-1570519576567)]
)個(gè)排列。
情景是我們想要預(yù)測(cè) x3 。因此在 24 個(gè)排列中有 4 種模式,分別 x3 位于第 1 位,第 2 位,第 3 位,第 4 位。
當(dāng)然,上面講的仍然是基本思想。難點(diǎn)其實(shí)在于具體怎么做才能實(shí)現(xiàn)上述思想。首先,需要強(qiáng)調(diào)一點(diǎn),盡管上面講的是把句子X的單詞排列組合后,再隨機(jī)抽取例子作為輸入,但是,實(shí)際上你是不能這么做的,因?yàn)镕ine-tuning階段你不可能也去排列組合原始輸入。所以,就必須讓預(yù)訓(xùn)練階段的輸入部分,看上去仍然是x1,x2,x3,x4這個(gè)輸入順序,但是可以在Transformer部分做些工作,來達(dá)成我們希望的目標(biāo)。具體而言,XLNet采取了Attention掩碼的機(jī)制,你可以理解為,當(dāng)前的輸入句子是X,要預(yù)測(cè)的單詞Ti是第i個(gè)單詞,前面1到i-1個(gè)單詞,在輸入部分觀察,并沒發(fā)生變化,該是誰還是誰。但是在Transformer內(nèi)部,通過Attention掩碼,從X的輸入單詞里面,也就是Ti的上文和下文單詞中,隨機(jī)選擇i-1個(gè),放到Ti的上文位置中,把其它單詞的輸入通過Attention掩碼隱藏掉,于是就能夠達(dá)成我們期望的目標(biāo)(當(dāng)然這個(gè)所謂放到Ti的上文位置,只是一種形象的說法,其實(shí)在內(nèi)部,就是通過Attention Mask,把其它沒有被選到的單詞Mask掉,不讓它們?cè)陬A(yù)測(cè)單詞Ti的時(shí)候發(fā)生作用,如此而已。看著就類似于把這些被選中的單詞放到了上文Context_before的位置了)。具體實(shí)現(xiàn)的時(shí)候,XLNet是用“雙流自注意力模型”實(shí)現(xiàn)的,細(xì)節(jié)可以參考論文,但是基本思想就如上所述,雙流自注意力機(jī)制只是實(shí)現(xiàn)這個(gè)思想的具體方式,理論上,你可以想出其它具體實(shí)現(xiàn)方式來實(shí)現(xiàn)這個(gè)基本思想,也能達(dá)成讓Ti看到下文單詞的目標(biāo)。
上面說的Attention掩碼,我估計(jì)你還是沒了解它的意思,我再用例子解釋一下。Attention Mask的機(jī)制,核心就是說,盡管當(dāng)前輸入看上去仍然是x1->x2->x3->x4,但是我們已經(jīng)改成隨機(jī)排列組合的另外一個(gè)順序x3->x2->x4->x1了,如果用這個(gè)例子用來從左到右訓(xùn)練LM,意味著當(dāng)預(yù)測(cè)x2的時(shí)候,它只能看到上文x3;當(dāng)預(yù)測(cè)x4的時(shí)候,只能看到上文x3和x2,以此類推……這樣,比如對(duì)于x2來說,就看到了下文x3了。這種在輸入側(cè)維持表面的X句子單詞順序,但是其實(shí)在Transformer內(nèi)部,看到的已經(jīng)是被重新排列組合后的順序,是通過Attention掩碼來實(shí)現(xiàn)的。如上圖所示,輸入看上去仍然是x1,x2,x3,x4,可以通過不同的掩碼矩陣,讓當(dāng)前單詞Xi只能看到被排列組合后的順序x3->x2->x4->x1中自己前面的單詞。這樣就在內(nèi)部改成了被預(yù)測(cè)單詞同時(shí)看到上下文單詞,但是輸入側(cè)看上去仍然維持原先的單詞順序了。關(guān)鍵要看明白上圖右側(cè)那個(gè)掩碼矩陣,我相信很多人剛開始沒看明白,因?yàn)槲覄傞_始也沒看明白,因?yàn)闆]有標(biāo)出掩碼矩陣的單詞坐標(biāo),它的坐標(biāo)是1-2-3-4,就是表面那個(gè)X的單詞順序,通過掩碼矩陣,就能改成你想要的排列組合,并讓當(dāng)前單詞看到它該看到的所謂上文,其實(shí)是摻雜了上文和下文的內(nèi)容。這是attention mask來實(shí)現(xiàn)排列組合的背后的意思。
ALBERT相比于BERT的改進(jìn)
ALBERT也是采用和BERT一樣的Transformer的encoder結(jié)果,激活函數(shù)使用的也是GELU,在講解下面的內(nèi)容前,我們規(guī)定幾個(gè)參數(shù),詞的embedding我們?cè)O(shè)置為E,encoder的層數(shù)我們?cè)O(shè)置為L,hidden size即encoder的輸出值的維度我們?cè)O(shè)置為H,前饋神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)設(shè)置為4H,attention的head個(gè)數(shù)設(shè)置為H/64。
在ALBERT中主要有三個(gè)改進(jìn)方向。
1、對(duì)Embedding因式分解(Factorized embedding parameterization)
在BERT中,詞embedding與encoder輸出的embedding維度是一樣的都是768。但是ALBERT認(rèn)為,詞級(jí)別的embedding是沒有上下文依賴的表述,而隱藏層的輸出值不僅包括了詞本生的意思還包括一些上下文信息,理論上來說隱藏層的表述包含的信息應(yīng)該更多一些,因此應(yīng)該讓H>>E,所以ALBERT的詞向量的維度是小于encoder輸出值維度的。
在NLP任務(wù)中,通常詞典都會(huì)很大,embedding matrix的大小是E×V,如果和BERT一樣讓H=E,那么embedding matrix的參數(shù)量會(huì)很大,并且反向傳播的過程中,更新的內(nèi)容也比較稀疏。
結(jié)合上述說的兩個(gè)點(diǎn),ALBERT采用了一種因式分解的方法來降低參數(shù)量。首先把one-hot向量映射到一個(gè)低維度的空間,大小為E,然后再映射到一個(gè)高維度的空間,說白了就是先經(jīng)過一個(gè)維度很低的embedding matrix,然后再經(jīng)過一個(gè)高維度matrix把維度變到隱藏層的空間內(nèi),從而把參數(shù)量從O(V×H) O(V×H)O(V×H)降低到了O(V×E+E×H) O(V×E+E×H)O(V×E+E×H),當(dāng)E<<H時(shí)參數(shù)量減少的很明顯。
下圖是E選擇不同值的一個(gè)實(shí)驗(yàn)結(jié)果,尷尬的是,在不采用參數(shù)共享優(yōu)化方案時(shí)E設(shè)置為768效果反而好一些,在采用了參數(shù)共享優(yōu)化方案時(shí)E取128效果更好一些。
2、跨層的參數(shù)共享(Cross-layer parameter sharing)
在ALBERT還提出了一種參數(shù)共享的方法,Transformer中共享參數(shù)有多種方案,只共享全連接層,只共享attention層,ALBERT結(jié)合了上述兩種方案,全連接層與attention層都進(jìn)行參數(shù)共享,也就是說共享encoder內(nèi)的所有參數(shù),同樣量級(jí)下的Transformer采用該方案后實(shí)際上效果是有下降的,但是參數(shù)量減少了很多,訓(xùn)練速度也提升了很多。
下圖是BERT與ALBERT的一個(gè)對(duì)比,以base為例,BERT的參數(shù)是108M,而ALBERT僅有12M,但是效果的確相比BERT降低了兩個(gè)點(diǎn)。由于其速度快的原因,我們?cè)僖訠ERT xlarge為參照標(biāo)準(zhǔn)其參數(shù)是1280M,假設(shè)其訓(xùn)練速度是1,ALBERT的xxlarge版本的訓(xùn)練速度是其1.2倍,并且參數(shù)也才223M,評(píng)判標(biāo)準(zhǔn)的平均值也達(dá)到了最高的88.7
除了上述說了訓(xùn)練速度快之外,ALBERT每一層的輸出的embedding相比于BERT來說震蕩幅度更小一些。下圖是不同的層的輸出值的L2距離與cosine相似度,可見參數(shù)共享其實(shí)是有穩(wěn)定網(wǎng)絡(luò)參數(shù)的作用的。
3、句間連貫(Inter-sentence coherence loss)
BERT的NSP任務(wù)實(shí)際上是一個(gè)二分類,訓(xùn)練數(shù)據(jù)的正樣本是通過采樣同一個(gè)文檔中的兩個(gè)連續(xù)的句子,而負(fù)樣本是通過采用兩個(gè)不同的文檔的句子。該任務(wù)主要是希望能提高下游任務(wù)的效果,例如NLI自然語言推理任務(wù)。但是后續(xù)的研究發(fā)現(xiàn)該任務(wù)效果并不好,主要原因是因?yàn)槠淙蝿?wù)過于簡單。NSP其實(shí)包含了兩個(gè)子任務(wù),主題預(yù)測(cè)與關(guān)系一致性預(yù)測(cè),但是主題預(yù)測(cè)相比于關(guān)系一致性預(yù)測(cè)簡單太多了,并且在MLM任務(wù)中其實(shí)也有類型的效果。
這里提一下為啥包含了主題預(yù)測(cè),因?yàn)檎龢颖臼窃谕粋€(gè)文檔中選取的,負(fù)樣本是在不同的文檔選取的,假如我們有2個(gè)文檔,一個(gè)是娛樂相關(guān)的,一個(gè)是新中國成立70周年相關(guān)的,那么負(fù)樣本選擇的內(nèi)容就是不同的主題,而正樣都在娛樂文檔中選擇的話預(yù)測(cè)出來的主題就是娛樂,在新中國成立70周年的文檔中選擇的話就是后者這個(gè)主題了。
在ALBERT中,為了只保留一致性任務(wù)去除主題識(shí)別的影響,提出了一個(gè)新的任務(wù) sentence-order prediction(SOP),SOP的正樣本和NSP的獲取方式是一樣的,負(fù)樣本把正樣本的順序反轉(zhuǎn)即可。SOP因?yàn)閷?shí)在同一個(gè)文檔中選的,其只關(guān)注句子的順序并沒有主題方面的影響。并且SOP能解決NSP的任務(wù),但是NSP并不能解決SOP的任務(wù),該任務(wù)的添加給最終的結(jié)果提升了一個(gè)點(diǎn)。
4、移除dropout
除了上面提到的三個(gè)主要優(yōu)化點(diǎn),ALBERT的作者還發(fā)現(xiàn)一個(gè)很有意思的點(diǎn),ALBERT在訓(xùn)練了100w步之后,模型依舊沒有過擬合,于是乎作者果斷移除了dropout,沒想到對(duì)下游任務(wù)的效果竟然有一定的提升。這也是業(yè)界第一次發(fā)現(xiàn)dropout對(duì)大規(guī)模的預(yù)訓(xùn)練模型會(huì)造成負(fù)面影響。
參考鏈接:
徹底搞懂BERT
什么是 XLNet,為何它會(huì)超越 BERT?
XLNet:運(yùn)行機(jī)制及和Bert的異同比較
一文揭開ALBERT的神秘面紗
不懂word2vec,還敢說自己是做NLP?
二、原來是在想這個(gè)出自哪里
Chatgpt源于人工智能領(lǐng)域的研究,在深度學(xué)習(xí)和自然語言處理的基礎(chǔ)上,使用了大規(guī)模的語料庫進(jìn)行訓(xùn)練。其核心技術(shù)是GPT(Generative Pre-training Transformer),是一種基于Transformer網(wǎng)絡(luò)的語言模型。Chatgpt可以通過語言生成和理解實(shí)現(xiàn)自然的智能對(duì)話,其能夠模擬人類的思維方式,與用戶進(jìn)行真正意義上的交流,并且不斷學(xué)習(xí)和完善自己的對(duì)話技能。Chatgpt的應(yīng)用領(lǐng)域眾多,包括客服機(jī)器人、智能語音助手、智能家居、社交娛樂等,未來將會(huì)有更多的智能對(duì)話應(yīng)用出現(xiàn),并且整個(gè)行業(yè)將會(huì)不斷推進(jìn)和升級(jí)。
三、中國有g(shù)pt嗎
答:現(xiàn)在中國也有GPT(Generative Pre-trained Transformer)技術(shù),它是一種自然語言處理(NLP)技術(shù),用于構(gòu)建自然語言生成模型,可以自動(dòng)生成文本。它的出現(xiàn)極大地推動(dòng)了自然語言處理的發(fā)展,也為中國的NLP研究者提供了一個(gè)新的工具。中國的研究者們正在努力開發(fā)和改進(jìn)GPT技術(shù),以更好地應(yīng)用于中文環(huán)境。例如,中國研究者們正在開發(fā)一種新的GPT技術(shù),稱為“中文GPT”,它可以更好地支持中文文本的生成。此外,中國研究者們還在努力改進(jìn)GPT技術(shù),以更好地應(yīng)用于中文環(huán)境,如改進(jìn)中文GPT模型的準(zhǔn)確性和性能,以及開發(fā)新的GPT模型,用于解決特定的NLP任務(wù)。
四、論文筆記之GPT-GNN: Generative Pre-Training of Graph Neural Networks
文中指出訓(xùn)練GNN需要大量和任務(wù)對(duì)應(yīng)的標(biāo)注數(shù)據(jù),這在很多時(shí)候是難以獲取的。一種有效的方式是,在無標(biāo)簽數(shù)據(jù)上通過自監(jiān)督的方式預(yù)訓(xùn)練一個(gè)GNN,然后在下游任務(wù)上只需要少量的標(biāo)注數(shù)據(jù)進(jìn)行fine-tuning。
本文提出了GPT-GNN通過生成式預(yù)訓(xùn)練的方式來初始化GNN。GPT-GNN引入了一個(gè)自監(jiān)督的屬性圖生成任務(wù),來pre-training一個(gè)GNN,使其能夠捕捉圖上的結(jié)構(gòu)信息和節(jié)點(diǎn)屬性信息。
圖生成任務(wù)被分成了兩部分:①屬性生成。②邊生成。
pre-training的GNN要能夠捕捉input graph的結(jié)構(gòu)信息和節(jié)點(diǎn)屬性信息,使其能夠在相似領(lǐng)域的下游任務(wù)上通過少量label的fine-tuning就能達(dá)到很好的泛化效果。本文采用的方式是重構(gòu)輸入的屬性圖來對(duì)圖分布建模。
第一步,如上左圖所示,通過自監(jiān)督學(xué)習(xí)任務(wù)(節(jié)點(diǎn)屬性生成和邊生成)來預(yù)訓(xùn)練GNN。第二步,如上右圖所示,pre-training好的模型以及參數(shù)用于對(duì)下游任務(wù)的初始化,只需要在少部分標(biāo)注數(shù)據(jù)上做fine-tuning。
輸入G=(V,E,X),其中V表示頂點(diǎn)集,E表示邊集,X表示頂點(diǎn)屬性矩陣。
目標(biāo):pre-training一個(gè)GNN模型,使其能夠:1)捕捉圖中的結(jié)構(gòu)特征和屬性特征。2)能夠?qū)D的下游任務(wù)有幫助。
也就是對(duì)圖G=(V,E,X)不使用label學(xué)習(xí)一個(gè)可以泛化的GNN模型fθ。
GPT-GNN通過重構(gòu)/生成輸入圖的結(jié)構(gòu)信息和節(jié)點(diǎn)屬性信息來pre-training GNN。given 輸入圖G=(V,E,X)和GNN模型fθ,圖和GNN的likelihood定義為p(G,θ),通過最大化likelihood來預(yù)訓(xùn)練GNN,也就是
如何對(duì)p(G,θ)建模?
通過自回歸的方法分解目標(biāo)概率分布。
首先說明什么是自回歸
如上式所示,c為常數(shù)項(xiàng),є為隨機(jī)誤差,概括來說就是X的當(dāng)期值等于一個(gè)或數(shù)個(gè)前期值的線性組合加常數(shù)項(xiàng)加隨機(jī)誤差。
對(duì)于graph來說,自回歸方法概括為:nodes in the graph come in an order, and the edges are generated by connecting each new arriving node to existing nodes.
對(duì)于一個(gè)給定的order,通過自回歸的方式分解log likelihood,每次生成一個(gè)節(jié)點(diǎn)。
在step i,given 所有在前面步驟生成的節(jié)點(diǎn),包括節(jié)點(diǎn)屬性X<i和節(jié)點(diǎn)之間的邊E<i來生成新的節(jié)點(diǎn)i,包括節(jié)點(diǎn)屬性Xi和與現(xiàn)有節(jié)點(diǎn)的連接邊Ei.
如何對(duì)pθ(Xi,Ei|X<i,E<i)建模?
一種簡單的方式是假設(shè)Xi和Ei是獨(dú)立的,也就是
然而,這種分解方式完全忽略了節(jié)點(diǎn)屬性和節(jié)點(diǎn)之間聯(lián)系(邊)之間的依賴關(guān)系。然而這種依賴關(guān)系是屬性圖和基于聚合鄰居節(jié)點(diǎn)信息的GNN的核心屬性。
因此,文中提出了一種分解方式,當(dāng)生成一個(gè)新的節(jié)點(diǎn)屬性時(shí),給出結(jié)構(gòu)信息,反之亦然。
從而整個(gè)生成過程可以分為兩部分:
1)given 觀測(cè)邊,生成節(jié)點(diǎn)屬性。
2)given 觀測(cè)邊和1)中生成的節(jié)點(diǎn)屬性,生成剩下的邊。
通過這種方式,模型能夠捕捉每個(gè)節(jié)點(diǎn)屬性和結(jié)構(gòu)之間的依賴關(guān)系。
定義變量o來表示Ei中觀測(cè)邊的index vector,即Ei,o表示已經(jīng)觀測(cè)到的邊。¬o表示masked邊(要生成邊)的index。
通過引入o,可以把前面的分布重寫為所有可能觀測(cè)邊的期望likelihood.
這里的理解非常重要,第一個(gè)等式中,把Ei拆成了Ei,¬o和Ei,o,也就是說指定了哪些邊是觀測(cè)邊,哪些邊是masked邊。需要注意的是,當(dāng)o確定下來以后,¬o也是確定的。因此等式外面加上了對(duì)o的累加,這里可以理解為類似于全概率公式去對(duì)所有可能的o求和。
此外,這里需要注意Ei,E<i,Ei,o,Ei,¬o四個(gè)符號(hào)分別表示的是什么?,F(xiàn)在位于step i,E<i是指在step i之前已經(jīng)生成的邊,Ei是指在step i將會(huì)生成的邊(與節(jié)點(diǎn)i相連,有好多條),之后再將Ei中的邊生成過程拆分成已經(jīng)生成和將要生成兩部分,即Ei,o和Ei,¬o。
下一個(gè)等式中,把第二個(gè)p看作概率分布,寫作對(duì)于o期望的形式。最后把Xi和Ei,¬o看作獨(dú)立的過程,拆成兩個(gè)概率分布。
這種分解的優(yōu)勢(shì)在于,沒有忽略Xi和Ei,o的聯(lián)系。第一項(xiàng)表示given觀測(cè)邊,聚合目標(biāo)節(jié)點(diǎn)i的鄰居信息來生成其屬性Xi.第二項(xiàng)表示given觀測(cè)邊和剛生成的屬性Xi,預(yù)測(cè)Ei,¬o中的邊是否存在。
如上圖所示,給出了一個(gè)例子。對(duì)于一個(gè)academic graph,我們要去生成一個(gè)paper node,它的屬性為title,并且其和author,publish venue,reference相連。上圖中的實(shí)線部分為已經(jīng)觀測(cè)到的邊,首先生成節(jié)點(diǎn)的屬性,即title。然后基于author1,author2,author3和剛生成的節(jié)點(diǎn)屬性title,預(yù)測(cè)剩下的邊,即虛線部分。
出于效率的考慮,希望:
1)對(duì)于輸入圖只跑一次GNN就能計(jì)算節(jié)點(diǎn)屬性生成和邊生成過程的loss。
2)希望節(jié)點(diǎn)屬性生成和邊生成能同時(shí)進(jìn)行。
然而,邊生成需要用到節(jié)點(diǎn)屬性信息,如果兩個(gè)生成過程同時(shí)進(jìn)行,會(huì)導(dǎo)致信息泄漏。
為了避免這個(gè)問題,將節(jié)點(diǎn)分為兩種類型:
•屬性生成節(jié)點(diǎn)。mask住這些節(jié)點(diǎn)的屬性,用一個(gè)共用的dummy token Xinit來代替,Xinit和Xi的維度是相同的,并且在pre-training的過程中學(xué)習(xí)到。
•邊生成節(jié)點(diǎn)。保持它們?cè)械膶傩浴?/p>
需要注意的是,同一個(gè)節(jié)點(diǎn)在不同階段扮演不同的角色,可能是屬性生成節(jié)點(diǎn)也可能是邊生成節(jié)點(diǎn)。只是在某一階段,一個(gè)節(jié)點(diǎn)有一個(gè)確定的角色。
在graph上訓(xùn)練GNN來生成各節(jié)點(diǎn)的embedding,用hAttr和hEdge來分別表示屬性生成節(jié)點(diǎn)和邊生成節(jié)點(diǎn)的embedding。由于屬性生成節(jié)點(diǎn)的屬性被mask住了,因此hAttr中包含的信息通常會(huì)少于hEdge。因此,在GNN的message passing過程中,只使用hEdge作為向其他節(jié)點(diǎn)發(fā)送的信息。也就是說,對(duì)于每個(gè)節(jié)點(diǎn),其聚合鄰居hEdge的信息和自身的信息來生成新的embedding。之后,對(duì)于節(jié)點(diǎn)的embedding,使用不同的decoder來生成節(jié)點(diǎn)屬性和邊。(注意,節(jié)點(diǎn)的embedding和節(jié)點(diǎn)屬性不是一回事。通俗理解,在GNN中節(jié)點(diǎn)的屬性是input,節(jié)點(diǎn)的embedding是hidden layer。)
對(duì)于屬性生成,用DecAttr來表示decoder,輸入hAttr來生成節(jié)點(diǎn)屬性。decoder的選擇依賴于節(jié)點(diǎn)屬性的類型,如果是text類型的節(jié)點(diǎn)屬性,可以使用LSTM等;如果節(jié)點(diǎn)屬性是vector,可以使用MLP。定義一個(gè)距離函數(shù)來度量生成屬性和真實(shí)屬性之間的差異,對(duì)于text類型屬性,可以使用perplexity,對(duì)于vector屬性,可以使用L2距離。由此,可以計(jì)算屬性生成過程中的loss
最小化生成屬性和真實(shí)屬性之間的差異,等價(jià)于對(duì)generate attributes做MLE,也就是最大化下式
從而捕捉了圖中的節(jié)點(diǎn)屬性信息。
對(duì)于邊生成過程,假設(shè)每條邊的生成過程和其他邊是獨(dú)立的,由此對(duì)likelihood進(jìn)行分解
得到hEdge后,如果節(jié)點(diǎn)i和節(jié)點(diǎn)j相連,則使用
進(jìn)行建模,DecEdge是一個(gè)pairwise score function。
loss定義為
Si-指的是沒有和節(jié)點(diǎn)i相連的節(jié)點(diǎn)。
最小化loss等價(jià)于對(duì)generate edges做MLE,從而捕捉了圖中的結(jié)構(gòu)信息。
上圖給出了屬性圖生成過程的一個(gè)具體例子。
a)對(duì)于input graph確定permutation order π。
b)隨機(jī)挑選一部分與節(jié)點(diǎn)i相連的邊作為observed edges Ei,o,剩下的邊作為masked edges Ei,¬o,并且刪除masked edges。
c)把節(jié)點(diǎn)分為屬性生成節(jié)點(diǎn)和邊生成節(jié)點(diǎn)。
d)計(jì)算節(jié)點(diǎn)3,4,5的embedding,包括它們的屬性生成節(jié)點(diǎn)和邊生成節(jié)點(diǎn)。
(d)-(e)通過對(duì)于每個(gè)節(jié)點(diǎn)并行進(jìn)行節(jié)點(diǎn)屬性預(yù)測(cè)和masked邊預(yù)測(cè)來訓(xùn)練一個(gè)GNN模型。
完整的算法流程如下所示。
對(duì)于上圖的算法流程進(jìn)行詳細(xì)的說明。
輸入一個(gè)屬性圖,每次采樣一個(gè)子圖G~作為訓(xùn)練的實(shí)例進(jìn)行訓(xùn)練。首先決定permutation order π。同時(shí),我們希望能夠并行化訓(xùn)練,只做一次前向傳播,就能得到整個(gè)圖的embedding,由此可以同時(shí)計(jì)算所有節(jié)點(diǎn)的loss。因此,根據(jù)permutation order π來移除邊,也就是使每個(gè)節(jié)點(diǎn)只能從跟低order的節(jié)點(diǎn)處獲得信息。
之后,需要決定哪些邊被mask。對(duì)于每個(gè)節(jié)點(diǎn),獲得其所有的出邊,隨機(jī)挑選一部分邊被mask住,這一過程對(duì)應(yīng)上述line4。
之后,對(duì)節(jié)點(diǎn)進(jìn)行劃分,得到整個(gè)圖中節(jié)點(diǎn)的embedding,用于之后loss的計(jì)算,對(duì)應(yīng)line5。
lone 7-9進(jìn)行l(wèi)oss的計(jì)算。
line 8中,通過整合采樣圖中未連接的節(jié)點(diǎn)和Q中以前計(jì)算的節(jié)點(diǎn)embedding來選擇負(fù)樣本,這種方式能夠減輕對(duì)于采樣圖優(yōu)化和對(duì)于整個(gè)圖優(yōu)化的差距。
在line11-12中,優(yōu)化模型并更新Q。
對(duì)于異構(gòu)圖,即包含不同類型的點(diǎn)和邊的圖,唯一的不同在于不同類型的點(diǎn)和邊采用不同的decoder。
對(duì)于大規(guī)模的圖,可以采樣子圖來進(jìn)行訓(xùn)練,即上述算法流程中Sampler的作用。為了計(jì)算Ledge這一loss,需要遍歷輸入圖的所有節(jié)點(diǎn)。然而,我們只能在采樣的子圖上計(jì)算這個(gè)loss。為了緩解這一差異,提出了adaptive queue,其中存儲(chǔ)了之前采樣的子圖的節(jié)點(diǎn)embedding作為負(fù)樣本。每次采樣一個(gè)新的子圖時(shí),逐步更新這個(gè)隊(duì)列,增加新的節(jié)點(diǎn)embedding,移除舊的節(jié)點(diǎn)embedding。通過引入adaptive queue,不同采樣子圖中的節(jié)點(diǎn)也能為全局的結(jié)構(gòu)提供信息。
以上就是關(guān)于GPT自回歸語言模型相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
ChatGPt與醫(yī)學(xué)診斷(醫(yī)學(xué)診斷術(shù)語)
中國版ChatGPT來了,預(yù)計(jì)今年3月開放!A股眾多ChatGPT概念股,誰在虛張聲勢(shì),誰有真實(shí)力?
服裝品牌風(fēng)格怎么寫(服裝品牌風(fēng)格怎么寫文案)