-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
transformer decoder的構(gòu)造
預(yù)訓(xùn)練的時候做語言模型的訓(xùn)練
GPT2用更多更深的block
BERT是做NLU,generation做不了
GPT天生就是語言模型,非常適合做generation的任務(wù),在bert里能做的在gpt里也可以做
gpt2模型的下載
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于gpt2模型的下載的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、bigquant怎么調(diào)用gpt
BigQuant 是一個基于 Python 的量化交易平臺,可以通過編寫 Python 代碼來進(jìn)行量化交易策略的研究和實(shí)現(xiàn)。如果想在 BigQuant 中調(diào)用 GPT 模型,您可以按照以下步驟操作:
1. 在 BigQuant 平臺上新建一個項(xiàng)目,并將 GPT 模型的代碼和訓(xùn)練好的模型文件上傳到項(xiàng)目的目錄中。
2. 在代碼中導(dǎo)入 GPT 模型,并調(diào)用模型進(jìn)行預(yù)測。例如:
```python
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('./model/') # './model/' 是你上傳到 BigQuant 項(xiàng)目中的 GPT 模型文件所在的路徑
# 要生成的文本前綴
text = '今天天氣怎么樣'
# 預(yù)測生成概率最高的詞,并將結(jié)果輸出到控制臺
input_ids = torch.tensor(tokenizer.encode(text)).unsqueeze(0)
with torch.no_grad():
outputs = model(input_ids, labels=input_ids)
loss, logits = outputs[:2]
pred = tokenizer.decode(logits[0].argmax(dim=-1).numpy())
print(pred)
```
在代碼中,我們首先導(dǎo)入了 GPT 模型所需的庫 torch 和 transformers(GPT2Tokenizer 和 GPT2LMHeadModel)。然后,我們使用 GPT2Tokenizer.from_pretrained 函數(shù)和 GPT2LMHeadModel.from_pretrained 函數(shù)分別加載了 GPT 模型的預(yù)訓(xùn)練權(quán)重和訓(xùn)練好的模型。接下來,我們定義了要生成文本的前綴,并使用模型進(jìn)行預(yù)測。預(yù)測過程中,我們使用 torch.no_grad() 上下文管理器來避免計(jì)算梯度,以提高計(jì)算效率。最后,我們將預(yù)測的文本輸出到控制臺中。
請注意,由于 GPT 模型的計(jì)算要求較高,可能需要在 BigQuant 平臺上分布式計(jì)算才能獲得更好的效果。
二、GPT的auto-regressive語言模型架構(gòu)在信息表示方面有什么架構(gòu)上的缺陷?具體如何改進(jìn)?
1) GPT
在Bert 之后,OpenAI 的 GPT-2 就是其中之一。它在文本生成上有著驚艷的表現(xiàn),其生成的文本在上下文連貫性和情感表達(dá)上都超過了人們對目前階段語言模型的預(yù)期。僅從模型架構(gòu)而言,GPT-2 并沒有特別新穎的架構(gòu),它和 transformer 的 Decoder 類似。相比較于GPT-1,GPT -2 使用了更大的預(yù)料,更大和更深的模型。
從transformer的decoder里移除了decoder對encoder的attention部分。也就是消除掉了seq2seq的過程。
GPT是一個語言模型,每一個時刻只能看見當(dāng)前時刻前面時刻的信息,是一個auto regressive的過程。
GPT2,hidden state的大小有變化,根據(jù)層數(shù)的多少有small,medum,large,extra large的劃分。
GPT的訓(xùn)練過程是交叉式的預(yù)測下一個單詞,測試的時候是輸入一個句子生成另外一個句子。
GPT的預(yù)訓(xùn)練就是訓(xùn)練一個語言模型。而bert的預(yù)訓(xùn)練是masked language model和nsp的任務(wù)。
GPT由多個decocer block組成,每一個decoder block由masked self-attention和feed forward neural network組成。
一個timestamp的hidden state經(jīng)過線性層轉(zhuǎn)換為vocab size大小的embedding, 然后經(jīng)過softmax,算出每個詞匯的概率,找出其中概率最大的詞作為預(yù)測輸出,然后下一個時刻的詞作為真實(shí)輸出,計(jì)算兩者的cross entropy來訓(xùn)練模型。
每一個timestamp后面的位置都mask掉,設(shè)置一個負(fù)無群大的值,做softmax的時候,該位置的值就為0。
2)總結(jié)
除了GPT-2 ,GPT-3依舊延續(xù)自己的單向語言模型訓(xùn)練方式,只不過把模型尺寸增大到了1750億,并且使用45TB數(shù)據(jù)進(jìn)行訓(xùn)練
三、BERT預(yù)訓(xùn)練模型
n-gram語言模型:根據(jù)前面n個詞預(yù)測當(dāng)前詞,它的缺點(diǎn)是,一般只能取1-2,n越大計(jì)算成本越高,這就使得它關(guān)注的信息是非常局限的。
預(yù)訓(xùn)練語言模型:wordvec\glove\fasttext。wordvec是根據(jù)周圍詞預(yù)測當(dāng)前詞或當(dāng)前詞預(yù)測周圍詞,相比于n-gram,它關(guān)注了下文,但它仍然是關(guān)注局部信息。glove通過構(gòu)建詞頻共現(xiàn)矩陣來訓(xùn)練詞向量,將全局信息融入到詞向量中。fasttext仍然是局部的,只是他分詞是基于subword,對于oov詞相對友好。三者共同的缺點(diǎn)是,無法解決一詞多義問題。
高級語言模型:elmo\GPT,elmo采用1層靜態(tài)向量+2層單向LSTM提取特征,并且能夠解決一詞多義,elmo是一個雙向語言模型,但實(shí)際上是兩個單向語言模型(方向相反)的拼接,這種融合特征的能力比 BERT 一體化融合特征方式弱。GPT采用Transformer的decoder單元提取特征,同樣也可以解決一詞多義問題,但GPT是單向的。所以,對上下文信息的融合,二者能力還不夠。
bert是雙向語言模型,句子沒有shift_mask操作,所以是完整的上下文環(huán)境,證實(shí)了雙向語言模型對文本特征表示的重要性。bert同時證實(shí)了預(yù)訓(xùn)練模型能夠簡化很多繁重任務(wù)的網(wǎng)絡(luò)結(jié)構(gòu),在11個nlp任務(wù)上都有顯著提升。
bert采用Transformer的encoder單元提取特征,encoder中包含幾個重要的機(jī)制:self-attention、muti-head attention、position encoding。
bert分為bert_base和bert_large大小兩個模型,bert_base采用了12個encoder單元,768維隱藏層,12個attention。bert_base采用了24個encoder單元,1024維隱藏層,16個attention。
input:單句或句對組合,有[cls]作為句子開頭的標(biāo)記,[sep]作為句子分隔和結(jié)束的標(biāo)記。
token embedding:對于英文采用WordPiece embeddings,也就是一個單詞會被拆成詞根詞綴的,比如圖中的playing被拆成了play和ing兩個token;對于中文,就是單子拆分。
segment embedding:相鄰句子采用不同的標(biāo)志分隔,形如111111111100000011111100000。
position embedding:在transformer中,單詞之間是沒有先后順序的,而語言本身是有序的,所以采用采用正余弦函數(shù)來計(jì)算每個單詞的先后順序,這種方式有點(diǎn)勉強(qiáng),算是折中方式。
前面講到elmo也是雙向語言模型,它是采用bi-LSTM來提取特征,如下:
比如一句話:‘北京是中國的首都’,在LSTM中從左往右,預(yù)測‘中國’的時候只能看到‘北京’,從右往左,預(yù)測‘中國’的時候只能看到‘首都’,然后將兩個lstm的輸出做拼接來達(dá)到上下文信息融合的目的。其實(shí)是沒有完全做到雙向,只是以結(jié)構(gòu)的改變來接近雙向語言模型。真正的雙向是預(yù)測‘中國’的時候,需要同時看到‘北京’和‘首都’。由此,mask LM產(chǎn)生了。
mask LM的原理是將‘中國’遮蓋住,同時用‘北京’和‘首都’來預(yù)測‘中國’?!本汀锥肌?lián)系起來語言模型很容易聯(lián)想到就是‘中國’啦。這個思想和wordvec的CBOW模型如出一轍,就是用周圍詞預(yù)測當(dāng)前詞,只是這個思想放在厲害的transformer中,便能大顯其能。
BERT的mask方式:在選擇mask的15%的詞當(dāng)中,80%情況下使用mask掉這個詞,10%情況下采用一個任意詞替換,剩余10%情況下保持原詞匯不變。這樣mask的優(yōu)點(diǎn)是什么?
1)被隨機(jī)選擇15%的詞當(dāng)中以10%的概率用任意詞替換去預(yù)測正確的詞,相當(dāng)于文本糾錯任務(wù),為BERT模型賦予了一定的文本糾錯能力;
2)被隨機(jī)選擇15%的詞當(dāng)中以10%的概率保持不變,緩解了finetune時候與預(yù)訓(xùn)練時候輸入不匹配的問題(預(yù)訓(xùn)練時候輸入句子當(dāng)中有mask,而finetune時候輸入是完整無缺的句子,即為輸入不匹配問題)。
在Mask LM任務(wù)中,模型學(xué)到了詞與詞之間的關(guān)系,而NSP任務(wù)是要模型學(xué)到句子與句子之間的關(guān)系,比如問答、推理等。它將訓(xùn)練語料分為兩類,一是將50%語料構(gòu)建成正常語序的句子對,比如A-B句子對,B就是A的實(shí)際下一個句子,并做標(biāo)記為isnext;二是將50%語料構(gòu)建成非正常語序句子對,B是來自語料庫的隨機(jī)句子,并做標(biāo)記為notnext。然后通過對句子對的關(guān)系做分類,預(yù)測B到底是不是A句子的下一個句子,使模型具有句子級別的識別能力。
微調(diào)的目的在于我們的任務(wù)與bert預(yù)訓(xùn)練任務(wù)是不一致的,但是bert是非常好的語言模型,他具備提取詞法和句法的強(qiáng)大能力。將bert嵌入到我們的網(wǎng)絡(luò)結(jié)構(gòu)中,能夠簡化在語言模型方面的復(fù)雜結(jié)構(gòu)。只需要將輸入做成和bert適配的格式就行,而在bert后面接上全連接、CNN等簡單模型進(jìn)行訓(xùn)練,就能夠使訓(xùn)練得到一個比較好的效果。
GPT 和 BERT 都采用Transformer,Transformer 是encoder-decoder 結(jié)構(gòu),GPT 的單向語言模型采用 decoder 部分,decoder 的部分見到的都是不完整的句子;BERT 的雙向語言模型則采用 encoder 部分,采用了完整句子。他倆最主要的區(qū)別在于BERT是雙向語言模型,更適合文本分類等任務(wù),GPT是單向語言模型,更適合生成式任務(wù)。
1)低層網(wǎng)絡(luò)捕捉了短語級別的結(jié)構(gòu)信息
2)表層信息特征在底層網(wǎng)絡(luò)(3,4),句法信息特征在中間層網(wǎng)絡(luò)(6~9),語義信息特征在高層網(wǎng)絡(luò)。(9~12)
3)主謂一致表現(xiàn)在中間層網(wǎng)絡(luò)(8,9)
1)ROBERTA
•靜態(tài)mask->動態(tài)mask:在bert中每一個epoch被mask的是相同的詞,而ROBERTA在每一個epoch結(jié)束,重新隨機(jī)15%的詞,使不同的詞被mask。
•去除句對NSP任務(wù),輸入連續(xù)多個句子:在bert中最長是512個token,輸入單句或者句對不容易把512個token占滿,ROBERTA輸入更多句子占滿512個坑位。
•訓(xùn)練使用更多數(shù)據(jù) 更大batch size 更長時間
2)ALBERT
•減少參數(shù):詞表 V 到隱層 H 的中間,插入一個小維度 E,即一個VxH的embedding變成兩個VxE, ExH的兩個fc。
•共享所有層的參數(shù):Attention 和 FFN,在bert中每一層的Attention 和 FFN的參數(shù)是不一樣的。
•SOP 替換 NSP:負(fù)樣本換成了同一篇文章中的兩個逆序的句子,bert中是A-->B和A-->隨機(jī),ALBERT中是A-->B,B-->A。
•BERT對MASK 15% 的詞來預(yù)測。ALBERT 預(yù)測的是 n-gram 片段,包含更完整的語義信息。
•訓(xùn)練數(shù)據(jù)長度:90%取512,BERT90% 128
•對應(yīng)BERT large:H:1024 ->4096 L:24->12 窄而深->寬而淺
四、chatgpt訓(xùn)練了多少次
以內(nèi)
GPT-2被訓(xùn)練了數(shù)千次,每次訓(xùn)練都會改善模型的性能。GPT-2最初是由OpenAI開發(fā)的,他們使用了超過40億個英語語料庫來訓(xùn)練它,這使得GPT-2的準(zhǔn)確性比其他機(jī)器學(xué)習(xí)模型更高。隨著更多的訓(xùn)練,GPT-2變得更加準(zhǔn)確和強(qiáng)大,并且可以用于多種應(yīng)用,包括聊天機(jī)器人、自動問答系統(tǒng)、文本生成和自然語言理解等。
以上就是關(guān)于gpt2模型的下載相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
openai和chatGPT什么關(guān)系(openai和chatGPT什么關(guān)系)
蓬萊區(qū)海邊景觀設(shè)計(jì)(蓬萊區(qū)海邊景觀設(shè)計(jì)圖)
市場營銷和業(yè)務(wù)員的區(qū)別(市場營銷和業(yè)務(wù)員的區(qū)別和聯(lián)系)