-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
gpt和bert區(qū)別(bert和gpt2區(qū)別)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于gpt和bert區(qū)別的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、磁盤(pán)初始化時(shí)選mbr還是選gpt,有什么區(qū)別
MBR和GPT各有各的特點(diǎn),這兩個(gè)現(xiàn)在都在使用,至于選哪一個(gè)是要分情況討論的。
在設(shè)置新磁盤(pán)時(shí),系統(tǒng)會(huì)詢問(wèn)你是想要使用MBR還是GPT分區(qū)。GPT是一種新的標(biāo)準(zhǔn),并在將來(lái)逐漸取代MBR。
GPT為我們帶來(lái)了很多新的特性,但MBR仍然擁有最好的兼容性。GPT并不是Windows專用的新標(biāo)準(zhǔn),Mac OS X,Linux,及其他操作系統(tǒng)同樣使用GPT,實(shí)際上其他操作系統(tǒng)仍可以使用MBR。
新磁盤(pán)在使用之前,必須對(duì)其進(jìn)行分區(qū)操作。MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盤(pán)上存儲(chǔ)分區(qū)信息的兩種不同方式。這些分區(qū)信息包含了每個(gè)分區(qū)從哪里開(kāi)始的信息,這樣才能讓操作系統(tǒng)知道哪個(gè)扇區(qū)是屬于哪個(gè)分區(qū)的,以及哪個(gè)分區(qū)是可以啟動(dòng)的。在磁盤(pán)上創(chuàng)建分區(qū)時(shí),必須在MBR和GPT之間選擇一個(gè)適當(dāng)?shù)姆謪^(qū)管理方式。
MBR的局限性
MBR的意思是“主引導(dǎo)記錄”,最早在1983年在IBM PC DOS 2.0中提出。
它是存在于驅(qū)動(dòng)器開(kāi)始部分的一個(gè)特殊的啟動(dòng)扇區(qū),磁盤(pán)的第一個(gè)扇區(qū)。這個(gè)扇區(qū)包含了已安裝的操作系統(tǒng)的Bootloader和驅(qū)動(dòng)器的邏輯分區(qū)信息。
MBR最大支持2TB磁盤(pán),它無(wú)法處理大于2TB容量的磁盤(pán)。MBR支持最多4個(gè)主分區(qū)——如果想要更多分區(qū),就需要?jiǎng)?chuàng)建所謂“擴(kuò)展分區(qū)”,并在其中創(chuàng)建邏輯分區(qū)。MBR已經(jīng)成為磁盤(pán)分區(qū)和啟動(dòng)的工業(yè)標(biāo)準(zhǔn)。
GPT的優(yōu)勢(shì)
GPT意為GUID分區(qū)表。(GUID意為全局唯一標(biāo)識(shí)符)。這是一個(gè)正逐漸取代MBR的新標(biāo)準(zhǔn)。它和UEFI相輔相成——UEFI用于取代老舊的BIOS,而GPT則取代老舊的MBR。之所以叫作“GUID分區(qū)表”,是因?yàn)槟愕尿?qū)動(dòng)器上的每個(gè)分區(qū)都有一個(gè)全局唯一的標(biāo)識(shí)符(globally unique identifier,GUID)——這是一個(gè)隨機(jī)生成的字符串,可以保證為地球上的每一個(gè)GPT分區(qū)都分配完全唯一的標(biāo)識(shí)符。
GPT沒(méi)有MBR的那些限制。磁盤(pán)驅(qū)動(dòng)器容量幾乎不限制(還是有限制的,只不過(guò)對(duì)我們來(lái)說(shuō)它太大太大)。它還支持幾乎無(wú)限個(gè)分區(qū)數(shù)量,限制只在于操作系統(tǒng)——Windows支持最多128個(gè)GPT分區(qū),而且你還不需要?jiǎng)?chuàng)建擴(kuò)展分區(qū)。
在MBR磁盤(pán)上,分區(qū)和啟動(dòng)信息是保存在一起的。如果這部分?jǐn)?shù)據(jù)被覆蓋或破壞,事情就麻煩了。相對(duì)的,GPT在整個(gè)磁盤(pán)上保存多個(gè)這部分信息的副本,因此它更為健壯,并可以恢復(fù)被破壞的這部分信息。GPT還為這些信息保存了循環(huán)冗余校驗(yàn)碼(CRC)以保證其完整和正確——如果數(shù)據(jù)被破壞,GPT會(huì)發(fā)覺(jué)這些破壞,并從磁盤(pán)上的其他地方進(jìn)行恢復(fù)。而MBR則對(duì)這些問(wèn)題無(wú)能為力——只有在問(wèn)題出現(xiàn)后,你才會(huì)發(fā)現(xiàn)計(jì)算機(jī)無(wú)法啟動(dòng),或者磁盤(pán)分區(qū)都不翼而飛了。
現(xiàn)代操作系統(tǒng)也同樣支持GPT。Linux內(nèi)建了GPT支持。蘋(píng)果公司基于Intel芯片的MAC電腦也不再使用自家的APT(Apple Partition Table),轉(zhuǎn)而使用GPT。
如果現(xiàn)在要進(jìn)行分區(qū)的話,推薦使用GPT對(duì)磁盤(pán)進(jìn)行分區(qū)。它更先進(jìn),更健壯,所有計(jì)算機(jī)系統(tǒng)都在向其轉(zhuǎn)移。如果你需要保持對(duì)舊系統(tǒng)的兼容性——比如在使用傳統(tǒng)BIOS的計(jì)算機(jī)上啟動(dòng)Windows,你需要使用MBR。
二、BERT預(yù)訓(xùn)練模型
n-gram語(yǔ)言模型:根據(jù)前面n個(gè)詞預(yù)測(cè)當(dāng)前詞,它的缺點(diǎn)是,一般只能取1-2,n越大計(jì)算成本越高,這就使得它關(guān)注的信息是非常局限的。
預(yù)訓(xùn)練語(yǔ)言模型:wordvec\glove\fasttext。wordvec是根據(jù)周圍詞預(yù)測(cè)當(dāng)前詞或當(dāng)前詞預(yù)測(cè)周圍詞,相比于n-gram,它關(guān)注了下文,但它仍然是關(guān)注局部信息。glove通過(guò)構(gòu)建詞頻共現(xiàn)矩陣來(lái)訓(xùn)練詞向量,將全局信息融入到詞向量中。fasttext仍然是局部的,只是他分詞是基于subword,對(duì)于oov詞相對(duì)友好。三者共同的缺點(diǎn)是,無(wú)法解決一詞多義問(wèn)題。
高級(jí)語(yǔ)言模型:elmo\GPT,elmo采用1層靜態(tài)向量+2層單向LSTM提取特征,并且能夠解決一詞多義,elmo是一個(gè)雙向語(yǔ)言模型,但實(shí)際上是兩個(gè)單向語(yǔ)言模型(方向相反)的拼接,這種融合特征的能力比 BERT 一體化融合特征方式弱。GPT采用Transformer的decoder單元提取特征,同樣也可以解決一詞多義問(wèn)題,但GPT是單向的。所以,對(duì)上下文信息的融合,二者能力還不夠。
bert是雙向語(yǔ)言模型,句子沒(méi)有shift_mask操作,所以是完整的上下文環(huán)境,證實(shí)了雙向語(yǔ)言模型對(duì)文本特征表示的重要性。bert同時(shí)證實(shí)了預(yù)訓(xùn)練模型能夠簡(jiǎn)化很多繁重任務(wù)的網(wǎng)絡(luò)結(jié)構(gòu),在11個(gè)nlp任務(wù)上都有顯著提升。
bert采用Transformer的encoder單元提取特征,encoder中包含幾個(gè)重要的機(jī)制:self-attention、muti-head attention、position encoding。
bert分為bert_base和bert_large大小兩個(gè)模型,bert_base采用了12個(gè)encoder單元,768維隱藏層,12個(gè)attention。bert_base采用了24個(gè)encoder單元,1024維隱藏層,16個(gè)attention。
input:?jiǎn)尉浠蚓鋵?duì)組合,有[cls]作為句子開(kāi)頭的標(biāo)記,[sep]作為句子分隔和結(jié)束的標(biāo)記。
token embedding:對(duì)于英文采用WordPiece embeddings,也就是一個(gè)單詞會(huì)被拆成詞根詞綴的,比如圖中的playing被拆成了play和ing兩個(gè)token;對(duì)于中文,就是單子拆分。
segment embedding:相鄰句子采用不同的標(biāo)志分隔,形如111111111100000011111100000。
position embedding:在transformer中,單詞之間是沒(méi)有先后順序的,而語(yǔ)言本身是有序的,所以采用采用正余弦函數(shù)來(lái)計(jì)算每個(gè)單詞的先后順序,這種方式有點(diǎn)勉強(qiáng),算是折中方式。
前面講到elmo也是雙向語(yǔ)言模型,它是采用bi-LSTM來(lái)提取特征,如下:
比如一句話:‘北京是中國(guó)的首都’,在LSTM中從左往右,預(yù)測(cè)‘中國(guó)’的時(shí)候只能看到‘北京’,從右往左,預(yù)測(cè)‘中國(guó)’的時(shí)候只能看到‘首都’,然后將兩個(gè)lstm的輸出做拼接來(lái)達(dá)到上下文信息融合的目的。其實(shí)是沒(méi)有完全做到雙向,只是以結(jié)構(gòu)的改變來(lái)接近雙向語(yǔ)言模型。真正的雙向是預(yù)測(cè)‘中國(guó)’的時(shí)候,需要同時(shí)看到‘北京’和‘首都’。由此,mask LM產(chǎn)生了。
mask LM的原理是將‘中國(guó)’遮蓋住,同時(shí)用‘北京’和‘首都’來(lái)預(yù)測(cè)‘中國(guó)’。‘北京’和‘首都’聯(lián)系起來(lái)語(yǔ)言模型很容易聯(lián)想到就是‘中國(guó)’啦。這個(gè)思想和wordvec的CBOW模型如出一轍,就是用周圍詞預(yù)測(cè)當(dāng)前詞,只是這個(gè)思想放在厲害的transformer中,便能大顯其能。
BERT的mask方式:在選擇mask的15%的詞當(dāng)中,80%情況下使用mask掉這個(gè)詞,10%情況下采用一個(gè)任意詞替換,剩余10%情況下保持原詞匯不變。這樣mask的優(yōu)點(diǎn)是什么?
1)被隨機(jī)選擇15%的詞當(dāng)中以10%的概率用任意詞替換去預(yù)測(cè)正確的詞,相當(dāng)于文本糾錯(cuò)任務(wù),為BERT模型賦予了一定的文本糾錯(cuò)能力;
2)被隨機(jī)選擇15%的詞當(dāng)中以10%的概率保持不變,緩解了finetune時(shí)候與預(yù)訓(xùn)練時(shí)候輸入不匹配的問(wèn)題(預(yù)訓(xùn)練時(shí)候輸入句子當(dāng)中有mask,而finetune時(shí)候輸入是完整無(wú)缺的句子,即為輸入不匹配問(wèn)題)。
在Mask LM任務(wù)中,模型學(xué)到了詞與詞之間的關(guān)系,而NSP任務(wù)是要模型學(xué)到句子與句子之間的關(guān)系,比如問(wèn)答、推理等。它將訓(xùn)練語(yǔ)料分為兩類,一是將50%語(yǔ)料構(gòu)建成正常語(yǔ)序的句子對(duì),比如A-B句子對(duì),B就是A的實(shí)際下一個(gè)句子,并做標(biāo)記為isnext;二是將50%語(yǔ)料構(gòu)建成非正常語(yǔ)序句子對(duì),B是來(lái)自語(yǔ)料庫(kù)的隨機(jī)句子,并做標(biāo)記為notnext。然后通過(guò)對(duì)句子對(duì)的關(guān)系做分類,預(yù)測(cè)B到底是不是A句子的下一個(gè)句子,使模型具有句子級(jí)別的識(shí)別能力。
微調(diào)的目的在于我們的任務(wù)與bert預(yù)訓(xùn)練任務(wù)是不一致的,但是bert是非常好的語(yǔ)言模型,他具備提取詞法和句法的強(qiáng)大能力。將bert嵌入到我們的網(wǎng)絡(luò)結(jié)構(gòu)中,能夠簡(jiǎn)化在語(yǔ)言模型方面的復(fù)雜結(jié)構(gòu)。只需要將輸入做成和bert適配的格式就行,而在bert后面接上全連接、CNN等簡(jiǎn)單模型進(jìn)行訓(xùn)練,就能夠使訓(xùn)練得到一個(gè)比較好的效果。
GPT 和 BERT 都采用Transformer,Transformer 是encoder-decoder 結(jié)構(gòu),GPT 的單向語(yǔ)言模型采用 decoder 部分,decoder 的部分見(jiàn)到的都是不完整的句子;BERT 的雙向語(yǔ)言模型則采用 encoder 部分,采用了完整句子。他倆最主要的區(qū)別在于BERT是雙向語(yǔ)言模型,更適合文本分類等任務(wù),GPT是單向語(yǔ)言模型,更適合生成式任務(wù)。
1)低層網(wǎng)絡(luò)捕捉了短語(yǔ)級(jí)別的結(jié)構(gòu)信息
2)表層信息特征在底層網(wǎng)絡(luò)(3,4),句法信息特征在中間層網(wǎng)絡(luò)(6~9),語(yǔ)義信息特征在高層網(wǎng)絡(luò)。(9~12)
3)主謂一致表現(xiàn)在中間層網(wǎng)絡(luò)(8,9)
1)ROBERTA
•靜態(tài)mask->動(dòng)態(tài)mask:在bert中每一個(gè)epoch被mask的是相同的詞,而ROBERTA在每一個(gè)epoch結(jié)束,重新隨機(jī)15%的詞,使不同的詞被mask。
•去除句對(duì)NSP任務(wù),輸入連續(xù)多個(gè)句子:在bert中最長(zhǎng)是512個(gè)token,輸入單句或者句對(duì)不容易把512個(gè)token占滿,ROBERTA輸入更多句子占滿512個(gè)坑位。
•訓(xùn)練使用更多數(shù)據(jù) 更大batch size 更長(zhǎng)時(shí)間
2)ALBERT
•減少參數(shù):詞表 V 到隱層 H 的中間,插入一個(gè)小維度 E,即一個(gè)VxH的embedding變成兩個(gè)VxE, ExH的兩個(gè)fc。
•共享所有層的參數(shù):Attention 和 FFN,在bert中每一層的Attention 和 FFN的參數(shù)是不一樣的。
•SOP 替換 NSP:負(fù)樣本換成了同一篇文章中的兩個(gè)逆序的句子,bert中是A-->B和A-->隨機(jī),ALBERT中是A-->B,B-->A。
•BERT對(duì)MASK 15% 的詞來(lái)預(yù)測(cè)。ALBERT 預(yù)測(cè)的是 n-gram 片段,包含更完整的語(yǔ)義信息。
•訓(xùn)練數(shù)據(jù)長(zhǎng)度:90%取512,BERT90% 128
•對(duì)應(yīng)BERT large:H:1024 ->4096 L:24->12 窄而深->寬而淺
三、硬盤(pán)GPT分區(qū)與MBR分區(qū)的有什么區(qū)別?
MBR的局限性
MBR的意思是“主引導(dǎo)記錄”,最早在1983年在IBM PC DOS
2.0中提出。
之所以叫“主引導(dǎo)記錄”,是因?yàn)樗谴嬖谟隍?qū)動(dòng)器開(kāi)始部分的一個(gè)特殊的啟動(dòng)扇區(qū)。這個(gè)扇區(qū)包含了已安裝的操作系統(tǒng)的啟動(dòng)加載器和驅(qū)動(dòng)器的邏輯分區(qū)信息。所謂啟動(dòng)加載器,是一小段代碼,用于加載驅(qū)動(dòng)器上其他分區(qū)上更大的加載器。如果你安裝了Windows,Windows啟動(dòng)加載器的初始信息就放在這個(gè)區(qū)域里——如果MBR的信息被覆蓋導(dǎo)致Windows不能啟動(dòng),你就需要使用Windows的MBR修復(fù)功能來(lái)使其恢復(fù)正常。如果你安裝了Linux,則位于MBR里的通常會(huì)是GRUB加載器。
MBR支持最大2TB磁盤(pán),它無(wú)法處理大于2TB容量的磁盤(pán)。MBR還只支持最多4個(gè)主分區(qū)——如果你想要更多分區(qū),你需要?jiǎng)?chuàng)建所謂“擴(kuò)展分區(qū)”,并在其中創(chuàng)建邏輯分區(qū)。
MBR已經(jīng)成為磁盤(pán)分區(qū)和啟動(dòng)的工業(yè)標(biāo)準(zhǔn)。
GPT的優(yōu)勢(shì)
GPT意為GUID分區(qū)表。(GUID意為全局唯一標(biāo)識(shí)符)。這是一個(gè)正逐漸取代MBR的新標(biāo)準(zhǔn)。它和UEFI相輔相成——UEFI用于取代老舊的BIOS,而GPT則取代老舊的MBR。之所以叫作“GUID分區(qū)表”,是因?yàn)槟愕尿?qū)動(dòng)器上的每個(gè)分區(qū)都有一個(gè)全局唯一的標(biāo)識(shí)符(globally
unique
identifier,GUID)——這是一個(gè)隨機(jī)生成的字符串,可以保證為地球上的每一個(gè)GPT分區(qū)都分配完全唯一的標(biāo)識(shí)符。
這個(gè)標(biāo)準(zhǔn)沒(méi)有MBR的那些限制。磁盤(pán)驅(qū)動(dòng)器容量可以大得多,大到操作系統(tǒng)和文件系統(tǒng)都沒(méi)法支持。它同時(shí)還支持幾乎無(wú)限個(gè)分區(qū)數(shù)量,限制只在于操作系統(tǒng)——Windows支持最多128個(gè)GPT分區(qū),而且你還不需要?jiǎng)?chuàng)建擴(kuò)展分區(qū)。
在MBR磁盤(pán)上,分區(qū)和啟動(dòng)信息是保存在一起的。如果這部分?jǐn)?shù)據(jù)被覆蓋或破壞,事情就麻煩了。相對(duì)的,GPT在整個(gè)磁盤(pán)上保存多個(gè)這部分信息的副本,因此它更為健壯,并可以恢復(fù)被破壞的這部分信息。GPT還為這些信息保存了循環(huán)冗余校驗(yàn)碼(CRC)以保證其完整和正確——如果數(shù)據(jù)被破壞,GPT會(huì)發(fā)覺(jué)這些破壞,并從磁盤(pán)上的其他地方進(jìn)行恢復(fù)。而MBR則對(duì)這些問(wèn)題無(wú)能為力——只有在問(wèn)題出現(xiàn)后,你才會(huì)發(fā)現(xiàn)計(jì)算機(jī)無(wú)法啟動(dòng),或者磁盤(pán)分區(qū)都不翼而飛了。
兼容性
使用GPT的驅(qū)動(dòng)器會(huì)包含一個(gè)“保護(hù)性MBR”。這種MBR會(huì)認(rèn)為GPT驅(qū)動(dòng)器有一個(gè)占據(jù)了整個(gè)磁盤(pán)的分區(qū)。如果你使用老實(shí)的MBR磁盤(pán)工具對(duì)GPT磁盤(pán)進(jìn)行管理,你只會(huì)看見(jiàn)一個(gè)占據(jù)整個(gè)磁盤(pán)的分區(qū)。這種保護(hù)性MBR保證老式磁盤(pán)工具不會(huì)把GPT磁盤(pán)當(dāng)作沒(méi)有分區(qū)的空磁盤(pán)處理而用MBR覆蓋掉本來(lái)存在的GPT信息。
在基于UEFI的計(jì)算機(jī)系統(tǒng)上,所有64位版本的Windows
8.1、8、7和Vista,以及其對(duì)應(yīng)的服務(wù)器版本,都只能從GPT分區(qū)啟動(dòng)。所有版本的Windows
8.1、8、7和Vista都可以讀取和使用GPT分區(qū)。
其他現(xiàn)代操作系統(tǒng)也同樣支持GPT。Linux內(nèi)建了GPT支持。蘋(píng)果公司基于Intel芯片的MAC電腦也不再使用自家的APT(Apple
Partition Table),轉(zhuǎn)而使用GPT。
我們推薦你使用GPT對(duì)磁盤(pán)進(jìn)行分區(qū)。它更先進(jìn),更健壯,所有計(jì)算機(jī)系統(tǒng)都在向其轉(zhuǎn)移。如果你需要保持對(duì)舊系統(tǒng)的兼容性——比如在使用傳統(tǒng)BIOS的計(jì)算機(jī)上啟動(dòng)Windows,你需要使用MBR。
四、BERT:深度雙向預(yù)訓(xùn)練語(yǔ)言模型
論文標(biāo)題:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
論文鏈接: https://arxiv.org/abs/1810.04805
BERT(Bidirectional Encoder Representations from Transformers)通過(guò)預(yù)訓(xùn)練來(lái)學(xué)習(xí)無(wú)標(biāo)注數(shù)據(jù)中的深度雙向表示,預(yù)訓(xùn)練結(jié)束后通過(guò)添加一個(gè)額外的輸出層進(jìn)行微調(diào),最終在多個(gè)NLP任務(wù)上實(shí)現(xiàn)了SOTA。
預(yù)訓(xùn)練語(yǔ)言模型在實(shí)踐中證明對(duì)提高很多自然語(yǔ)言處理任務(wù)有效,其中包括句子層級(jí)的任務(wù),比如自然語(yǔ)言推斷(natural language inference)和復(fù)述(paraphrasing),還有token層級(jí)的任務(wù),比如命名實(shí)體識(shí)別(named entity recognition)和問(wèn)答(question answering)。
在下游任務(wù)中應(yīng)用預(yù)訓(xùn)練語(yǔ)言模型表示的方法有兩種:feature-based的方法和fine-tuning的方法。舉例來(lái)說(shuō),ELMo這種預(yù)訓(xùn)練語(yǔ)言模型使用feature-based的方法,通過(guò)將ELMo的預(yù)訓(xùn)練的表示作為額外的特征輸入到特定于任務(wù)的模型中去;GPT使用fine-tuning的方法,通過(guò)引入少量的特定于任務(wù)的參數(shù),在下游任務(wù)中訓(xùn)練時(shí)所有的預(yù)訓(xùn)練參數(shù)。
截止BERT之前的預(yù)訓(xùn)練語(yǔ)言模型都是單向的(unidirectional),包括GPT和ELMo,這樣的方法對(duì)句子層級(jí)的任務(wù)不是最優(yōu)的,而且對(duì)于token層級(jí)的任務(wù)比如問(wèn)答非常有害。BERT使用masked language model(MLM)的方法來(lái)預(yù)訓(xùn)練,這種方法能夠訓(xùn)練一個(gè)雙向的(directional)語(yǔ)言模型。除了masked language model的預(yù)訓(xùn)練的方法,BERT還使用了next sentence prediction的預(yù)訓(xùn)練方法。
BERT的使用分為兩個(gè)階段:預(yù)訓(xùn)練(pre-training)和微調(diào)(fine-tuning)。預(yù)訓(xùn)練階段模型通過(guò)兩種不同的預(yù)訓(xùn)練任務(wù)來(lái)訓(xùn)練無(wú)標(biāo)注數(shù)據(jù)。微調(diào)階段模型使用預(yù)訓(xùn)練參數(shù)初始化,然后使用下游任務(wù)(downstream task)的標(biāo)注數(shù)據(jù)來(lái)微調(diào)參數(shù)。
BERT的一個(gè)顯著特點(diǎn)是它在不同的任務(wù)上有統(tǒng)一的架構(gòu),使用時(shí)只需要在BERT后面接上下游任務(wù)的結(jié)構(gòu)即可使用。
BERT的模型架構(gòu)是一個(gè)多層雙向的Transformer的encoder。我們標(biāo)記模型的層數(shù)(每一層是一個(gè)Tranformer的block)為 ,模型的hidden size為 ,self-attention head的數(shù)量為 。兩個(gè)比較通用的BERT架構(gòu)為 和 。
對(duì)比GPT,BERT使用了雙向self-attention架構(gòu),而GPT使用的是受限的self-attention, 即限制每個(gè)token只能attend到其左邊的token。
BERT的輸入表示能夠是一個(gè)句子或者是一個(gè)句子對(duì),這是為了讓BERT能夠應(yīng)對(duì)各種不同的下游任務(wù)。BERT的輸入是一個(gè)序列,該序列包含一個(gè)句子的token或者兩個(gè)句子結(jié)合在一起的token。
具體地,我們會(huì)將輸入的自然語(yǔ)言句子通過(guò) WordPiece embeddings 來(lái)轉(zhuǎn)化為token序列。這個(gè)token序列的開(kāi)頭要加上 [CLS] 這個(gè)特殊的token,最終輸出的 [CLS] 這個(gè)token的embedding可以看做句子的embedding,可以使用這個(gè)embedding來(lái)做分類任務(wù)。
由于句子對(duì)被pack到了一起,因此我們需要在token序列中區(qū)分它們,具體需要兩種方式:
①在token序列中兩個(gè)句子的token之間添加 [SEP] 這樣一個(gè)特殊的token;
②我們?yōu)槊總€(gè)token添加一個(gè)用來(lái)學(xué)習(xí)的embedding來(lái)區(qū)分token屬于句子A還是句子B,這個(gè)embedding叫做segment embedding。
具體地,BERT的輸入由三部分相加組成:token embeddings、segment embeddings和position embeddings。如下圖所示:
BERT使用兩個(gè)無(wú)監(jiān)督的任務(wù)進(jìn)行預(yù)訓(xùn)練,分別是Masked LM和Next Sentence Prediction(NSP)。如下圖所示,我們定義輸入的embedding為 ,BERT最終輸出的 [CLS] 的embedding為 ,最終輸出的第 個(gè)token的embedding為 。
我們有理由相信一個(gè)深度雙向模型比left-to-right模型和left-to-right和right-to-left簡(jiǎn)單連接的模型的效果更加強(qiáng)大。不幸的是,標(biāo)準(zhǔn)的條件語(yǔ)言模型只能夠夠left-to-right或者right-to-left地訓(xùn)練,這是因?yàn)殡p向條件會(huì)使每個(gè)token能夠間接地“看到自己”,并且模型能夠在多層上下文中簡(jiǎn)單地預(yù)測(cè)目標(biāo)詞。
為了能夠雙向地訓(xùn)練語(yǔ)言模型,BERT的做法是簡(jiǎn)單地隨機(jī)mask掉一定比例的輸入token(這些token被替換成 [MASK] 這個(gè)特殊token),然后預(yù)測(cè)這些被遮蓋掉的token,這種方法就是Masked LM(MLM),相當(dāng)于完形填空任務(wù)(cloze task)。被mask掉的詞將會(huì)被輸入到一個(gè)softmax分類器中,分類器輸出的維度對(duì)應(yīng)詞典的大小。在預(yù)訓(xùn)練時(shí)通常為每個(gè)序列mask掉15%的token。與降噪自編碼器(denoising auto-encoders)相比,我們只預(yù)測(cè)被mask掉的token,并不重建整個(gè)輸入。
這種方法允許我們預(yù)訓(xùn)練一個(gè)雙向的語(yǔ)言模型,但是有一個(gè)缺點(diǎn)就是造成了預(yù)訓(xùn)練和微調(diào)之間的mismatch,這是因?yàn)?[MASK] 這個(gè)token不會(huì)在微調(diào)時(shí)出現(xiàn)。為了緩解這一點(diǎn),我們采取以下做法:在生成訓(xùn)練數(shù)據(jù)時(shí)我們隨機(jī)選擇15%的token進(jìn)行替換,被選中的token有80%的幾率被替換成 [MASK] ,10%的幾率被替換成另一個(gè)隨機(jī)的token,10%的幾率該token不被改變。然后 將使用交叉熵?fù)p失來(lái)預(yù)測(cè)原來(lái)的token。
一些重要的NLP任務(wù)如Question Answering (QA)或者Natural Language Inference (NLI)需要理解句子之間的關(guān)系,而這種關(guān)系通常不會(huì)被語(yǔ)言模型直接捕捉到。為了使得模型能夠理解句子之間的關(guān)系,我們訓(xùn)練了一個(gè)二值的Next Sentence Prediction任務(wù),其訓(xùn)練數(shù)據(jù)可以從任何單語(yǔ)語(yǔ)料庫(kù)中生成。具體的做法是:當(dāng)選擇句子A和句子B作為訓(xùn)練數(shù)據(jù)時(shí),句子B有50%的幾率的確是句子A的下一句(標(biāo)簽是 IsNext ),50%的幾率是從語(yǔ)料庫(kù)中隨機(jī)選擇的句子(標(biāo)簽是 NotNext )。 [CLS] 對(duì)應(yīng)的最后一個(gè)隱層輸出向量被用來(lái)訓(xùn)練NSP任務(wù),這個(gè)embedding就相當(dāng)于sentence embedding。雖然這個(gè)預(yù)訓(xùn)練任務(wù)很簡(jiǎn)單,但是事實(shí)上在微調(diào)時(shí)其在QA和NLI任務(wù)上表現(xiàn)出了很好的效果。在前人的工作中,只有sentence embedding被遷移到下游任務(wù)中,而B(niǎo)ERT會(huì)遷移所有的參數(shù)來(lái)初始化下游任務(wù)模型。
Transformer的self-attention機(jī)制允許BERT建模多種下游任務(wù)。對(duì)于包含句子對(duì)的任務(wù),通常的做法是先獨(dú)立地對(duì)句子對(duì)中的句子進(jìn)行編碼,然后再應(yīng)用雙向交叉注意(bidirectional cross attention)。而B(niǎo)ERT使用self-attention機(jī)制統(tǒng)一了這兩個(gè)過(guò)程,這是因?yàn)閷?duì)拼接起來(lái)的句子對(duì)進(jìn)行self-attention有效地包含了兩個(gè)句子之間的雙向交叉注意(bidirectional cross attention)。
對(duì)于每個(gè)任務(wù)來(lái)說(shuō),我們只需要將任務(wù)特定的輸入輸出插入到BERT中然后端到端地微調(diào)即可。舉例子來(lái)說(shuō),BERT的預(yù)訓(xùn)練輸入句子A和句子B在微調(diào)時(shí)可以類比為:
①paraphrasing任務(wù)中的句子對(duì);
②entailment任務(wù)中的hypothesis-premise對(duì);
③question answering任務(wù)中的question-passage對(duì);
④text classification或者sequence tagging任務(wù)中的text-∅對(duì)(也就是只輸入一個(gè)text,不必一定需要兩個(gè)句子)。
對(duì)于BERT的輸出,對(duì)于一些token-level的任務(wù),BERT的token表示將被輸入到一個(gè)輸出層,比如sequence tagging或者question answering任務(wù);對(duì)于entailment或者sentiment analysis這樣的任務(wù),可以將 [CLS] 對(duì)應(yīng)的表示輸入到一個(gè)輸出層。
我們使用 [CLS] 這個(gè)token的最后一層的隱層向量 作為聚合的表示,可以認(rèn)為是sentence embedding。在微調(diào)時(shí)只引入一個(gè)新的權(quán)重 ,這里的 代表標(biāo)簽的數(shù)量,然后計(jì)算標(biāo)準(zhǔn)分類損失 。下圖展示了BERT在GLUE上的效果:
在這個(gè)數(shù)據(jù)集上,我們將question和passage拼接起來(lái)作為一個(gè)輸入序列(中間是 [SEP] )。在微調(diào)時(shí)引入一個(gè)start向量 和一個(gè)end向量 ,計(jì)算 和 的點(diǎn)積然后通過(guò) 函數(shù)作為word 是答案的span起始位置的概率: 。答案的終止位置也做上述類似處理。從 到 的候選區(qū)間的得分記作 ,我們挑選 的最大得分區(qū)間作為預(yù)測(cè)的結(jié)果。下圖展示了BERT在SQuAD v1.1上的效果:
SQuAD v2.0有的question在提供的passage中沒(méi)有答案存在。在微調(diào)時(shí)我們?cè)O(shè)置沒(méi)有答案的問(wèn)題的span的起始和結(jié)束位置都是 [CLS] 這個(gè)token,也就是start和end的可能性空間包含進(jìn)了 [CLS] 的位置。在預(yù)測(cè)時(shí),我們比較沒(méi)有答案的span得分 和最優(yōu)的有答案得分 。當(dāng) 時(shí),我們預(yù)測(cè)這是一個(gè)有答案的問(wèn)題,這里的 用來(lái)在dev set上選擇最優(yōu)的 。下圖展示了BERT在SQuAD v2.0上的效果:
微調(diào)時(shí)我們?yōu)锽ERT構(gòu)建4個(gè)輸入序列,每一個(gè)是所給的句子(句子A)和一個(gè)可能的延續(xù)(句子B)。然后引入一個(gè)向量,該向量和每一個(gè)輸入對(duì)應(yīng)的 [CLS] 的embedding的點(diǎn)積再通過(guò)一個(gè) 層來(lái)得到每個(gè)選擇的得分。下圖展示了BERT在SWAG上的效果:
以上就是關(guān)于gpt和bert區(qū)別相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
chatGPT翻譯語(yǔ)音(chat online翻譯)
新農(nóng)村景觀設(shè)計(jì)特點(diǎn)有(新農(nóng)村景觀設(shè)計(jì)特點(diǎn)有哪些方面)
小組隊(duì)標(biāo)logo簡(jiǎn)筆畫(huà)