網(wǎng)站地圖怎么做XMLaso優(yōu)化前景
一、背景信息:
GPT是2018 年 6 月由OpenAI 提出的預(yù)訓(xùn)練語(yǔ)言模型。
GPT可以應(yīng)用于復(fù)雜的NLP任務(wù)中,例如文章生成,代碼生成,機(jī)器翻譯,問(wèn)答對(duì)話(huà)等。
GPT也采用兩階段的訓(xùn)練過(guò)程,第一階段是無(wú)監(jiān)督的方式來(lái)預(yù)訓(xùn)練生成式的語(yǔ)言模型,第二階段根據(jù)特定任務(wù)進(jìn)行微調(diào)。
GPT的網(wǎng)絡(luò)架構(gòu)使用的是多層Transformer Decoder改的結(jié)構(gòu)。
二、整體結(jié)構(gòu):
GPT 使用Transformer的 Decoder 結(jié)構(gòu),并進(jìn)行了一些改動(dòng),GPT 中的Decoder只保留了原Decoder中的第一個(gè)Attention模塊Mask Multi-Head Attention。

GPT堆疊了12個(gè)Transformer的Decoder
模塊作為解碼器,然后通過(guò)全連接得到輸出的概率分布。
GPT中采用的是單向的語(yǔ)言模型
,即通過(guò)上文預(yù)測(cè)當(dāng)前的詞,而Decoder中的Masked Multi Self-Attention可以起到遮掩待預(yù)測(cè)的下文內(nèi)容的效果。

GPT 處理不同任務(wù)時(shí)的輸入變換
GPT模型由輸入嵌入層
、多層Transformer Decoder
以及輸出層
這三個(gè)部分組成。
其中
1、輸入嵌入層: 將輸入的文本序列轉(zhuǎn)換為詞向量、位置向量并將二者相加得到輸入向量。
2、多層Transformer Decode: 其中每一層由以殘差和的方式做LayerNorm的掩碼多頭自注意力機(jī)層與以殘差和的方式做LayerNorm的雙層前饋神經(jīng)網(wǎng)絡(luò)組成。
X o u t p u t = X o u p u t ? o r i ? X M a s k X = L a y d e r N o r m ( X o u t p u t + M a s k M u l t i H e a d A t t e n t i o n ( X o u p u t ) ) X = F e e d F o r w o r d ( X ) = m a x ( 0 , X W 1 + b 1 ) W 2 + b 2 \begin{matrix} \\X_{output}=X_{ouput-ori }\otimes X_{Mask} \\X = LayderNorm(X_{output} + MaskMultiHeadAttention(X_{ouput})) \\X = FeedForword(X) = max(0, XW_{1} + b_{1})W_{2} + b_{2}\begin{matrix}\end{matrix} \end{matrix} Xoutput?=Xouput?ori??XMask?X=LayderNorm(Xoutput?+MaskMultiHeadAttention(Xouput?))X=FeedForword(X)=max(0,XW1?+b1?)W2?+b2??
3、輸出層: GPT模型的輸出層通常為一個(gè)全連接層,將多層解碼器的輸出轉(zhuǎn)換為對(duì)應(yīng)的單詞概率分布。
- 分類(lèi)任務(wù)(Classification):將起始和終止token加入到原始序列兩端,輸入transformer中得到特征向量,最后經(jīng)過(guò)一個(gè)全連接得到預(yù)測(cè)的概率分布。
- 自然語(yǔ)言推理(Entailment):將前提(premise)和假設(shè)(hypothesis)通過(guò)分隔符(Delimiter)隔開(kāi),兩端加上起始和終止token。再依次通過(guò)Transformer多層Decoder和全連接得到預(yù)測(cè)結(jié)果。
- 語(yǔ)義相似度(Similarity):輸入的兩個(gè)句子,正向和反向各拼接一次,然后分別輸入給Transformer多層Decoder,得到的特征向量拼接后再送給全連接得到預(yù)測(cè)結(jié)果;
- 多項(xiàng)選擇(MutipleChoice):將n個(gè)選項(xiàng)的問(wèn)題抽象化為n個(gè)二分類(lèi)問(wèn)題,即每個(gè)選項(xiàng)分別和內(nèi)容進(jìn)行拼接,然后各送入Transformer多層Decode和全連接中,最后選擇置信度最高的作為預(yù)測(cè)結(jié)果。
三、GPT訓(xùn)練
GPT的訓(xùn)練包含無(wú)監(jiān)督預(yù)訓(xùn)練
和有監(jiān)督fine-tune
兩個(gè)階段。
GPT的無(wú)監(jiān)督預(yù)訓(xùn)練:
假設(shè)未標(biāo)注的詞匯集合為 U = { u 1 , u 2 , . . . u n } U = \left \{ {{u_{1},u_{2},...u_{n}}}\right \} U={u1?,u2?,...un?},GPT模型的優(yōu)化目標(biāo)是對(duì)參數(shù)進(jìn)行最大似然估計(jì):
L 1 ( U ) = ∑ i l o g P ( u i ∣ u 1 , . . . , u k ? 1 ; Θ ) L_{1}(U) = \sum_{i}^{} log P(u_{i}|u_{1},...,u_{k-1};\Theta ) L1?(U)=i∑?logP(ui?∣u1?,...,uk?1?;Θ)
其中,k是滑動(dòng)窗口的大小, P 為條件概率, Θ \Theta Θ為條件概率的參數(shù), 參數(shù)更新采用隨機(jī)梯度下降(SGD)方法。
下面是整個(gè)過(guò)程的公式示例:
{ h 0 = U W e + W p h l = T r a n s f o r m e r D e c o d e r B l o c k ( h l ? q ) P ( u ) = s o f t m a x ( h n W e T ) \left\{\begin{matrix}h_{0} = UW_{e} + W{p} \\h_{l} = TransformerDecoderBlock(h_{l-q}) \\P(u) = softmax(h_{n}W_{e}^{T} ) \end{matrix}\right. ? ? ??h0?=UWe?+Wphl?=TransformerDecoderBlock(hl?q?)P(u)=softmax(hn?WeT?)?
輸入嵌入層:
W e W_{e} We?是token的詞向量Embedding矩陣, W p W_{p} Wp?是位置編碼的Embedding矩陣,二者求和得到輸入向量矩陣 h 0 h_{0} h0?多層Transformer Decode:
TransformerDecoderBlock指多層Decoder模塊輸出層:
通過(guò)Softmax函數(shù)將輸出的詞向量轉(zhuǎn)換為對(duì)應(yīng)的單詞概率分布
GPT的有監(jiān)督fine-tune:
預(yù)訓(xùn)練后,需要針對(duì)特定任務(wù)進(jìn)行有監(jiān)督Fine-Tuning。
這里以一個(gè)文本分類(lèi)任務(wù)舉例,展示GPT在某一任務(wù)有監(jiān)督微調(diào)的過(guò)程。
假設(shè)帶標(biāo)注的數(shù)據(jù)集C中的輸入序列X為 [ x 1 , . . . , x m ] [x^{1},..., x^{m}] [x1,...,xm];模型的輸出y是一個(gè)分類(lèi)標(biāo)簽; h l m h_{l}^{m} hlm?代表Decoder層最后的輸出; W y W_{y} Wy?代表輸出層的Softmax參數(shù)。 L 2 ( C ) L_{2}(C) L2?(C)是分類(lèi)任務(wù)的最大似然函數(shù), L 3 ( C ) L_{3}(C) L3?(C)是整體的最大似然函數(shù);GPT 在微調(diào)的時(shí)候需要同時(shí)考慮預(yù)訓(xùn)練的損失函數(shù),因此微調(diào)的訓(xùn)練目標(biāo)是最大化似然函數(shù) L 3 ( C ) L_{3}(C) L3?(C).
{ P ( y ∣ x 1 , . . . , x m ) = s o f t m a x ( h l m W y ) L 2 ( C ) = ∑ x , y l o g P ( y ∣ x 1 , . . . , x m ) L 3 ( C ) = L 2 ( C ) + λ × L 1 ( C ) \left\{\begin{matrix}P(y|x^{1},..., x^{m}) = softmax(h_{l}^{m}W_{y}) \\L_{2}(C) = \sum_{x,y}^{} log P(y|x^{1},..., x^{m}) \\L_{3}(C) = L_{2}(C) + \lambda \times L_{1}(C) \end{matrix}\right. ? ? ??P(y∣x1,...,xm)=softmax(hlm?Wy?)L2?(C)=∑x,y?logP(y∣x1,...,xm)L3?(C)=L2?(C)+λ×L1?(C)?
Reference
1.Attention Is All You Need
2.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
3.Improving Language Understanding by Generative Pre-Training