前面我們介紹了elmo演算法的思想,通過在大量的語料上預訓練語言模型,然後再將預訓練好的模型遷移到具體的下游nlp任務,從而提高模型的能力。但是elmo預訓練的語言模型結構和下游的nlp任務的模型經常會不一致,因此,做遷移學習時經常沒法將兩者的模型直接進行融合,因此,本文將介紹openai在2023年提出來的乙個方法——gpt,該模型在預訓練語言模型的基礎上,只需要做一些微改即可直接遷移到各種nlp任務中,因此,其遷移能力更強。
gpt模型主要包含兩個階段,第乙個階段,先利用大量未標註的語料預訓練乙個語言模型,接著,在第二個階段對預訓練好的語言模型進行微改,將其遷移到各種有監督的nlp任務,並對引數進行fine-tuning。
給定乙個沒有標註的大語料,記每乙個序列為u
=\mathcal=\left\, \dots, u_\right\}
u=,gpt通過最大化以下似然函式來訓練語言模型:
l 1(
u)=∑
ilogp
(ui∣
ui−k
,…,u
i−1;
θ)l_(\mathcal)=\sum_ \log p\left(u_ | u_, \ldots, u_ ; \theta\right)
l1(u)
=i∑
logp(u
i∣u
i−k
,…,u
i−1
;θ)其中,k
kk表示上下文視窗的大小,這裡計算每個單詞的**概率時,只考慮左側視窗大小的詞彙資訊,在gpt中,作者採用的是乙個12層的transformer decoder作為語言模型的結構,其計算過程如下:
h 0=
uwe+
wphl
=transformer_block (h
l−1)
∀i∈[
1,n]
p(u)
=softmax(
hnwe
t)\begin h_ &=u w_+w_ \\ h_ &=\text \left(h_\right) \forall i \in[1, n] \\ p(u) &=\operatorname\left(h_ w_^\right) \end
h0hl
p(u)
=uw
e+w
p=transformer_block (h
l−1
)∀i∈
[1,n
]=so
ftma
x(hn
wet
)其中,u=(
u−k,
…,u−
1)u=\left(u_, \ldots, u_\right)
u=(u−k
,…,
u−1
)表示左側視窗的詞彙向量,n
nn表示transformer的層數,wew_
we表示詞向量矩陣,wpw_
wp表示position embedding矩陣,在gpt中,作者對position embedding矩陣進行隨機初始化,並讓模型自己學習,而不是採用正弦余弦函式進行計算。
從gpt的計算公式來看,其實跟transformer基本是一樣的,只是對每個時間步,都只考慮左側視窗大小的上下文資訊。
當語言模型訓練結束後,就可以將其遷移到具體的nlp任務中,假設將其遷移到乙個文字分類任務中,記此時的資料集為c
\mathcal
c,對於每乙個樣本,其輸入為x1,
…,xm
x^, \ldots, x^
x1,…,x
m,輸出為y
yy。對於每乙個輸入,經過預訓練後的語言模型後,可以直接選取最後一層transformer最後乙個時間步的輸出向量hlm
h_^hl
m,然後在其後面接一層全連線層,即可得到最後的**標籤概率:
p (y
∣x1,
…,xm
)=softmax(
hlmw
y)p\left(y | x^, \ldots, x^\right)=\operatorname\left(h_^ w_\right)
p(y∣x1
,…,x
m)=s
oftm
ax(h
lmw
y)其中,wyw_
wy為新引入的全連線層的引數矩陣。因此,可以得到在分類任務中的目標函式:
l 2(
c)=∑
(x,y
)logp
(y∣x
1,…,
xm)l_(\mathcal)=\sum_ \log p\left(y | x^, \ldots, x^\right)
l2(c)
=(x,
y)∑
logp(y
∣x1,
…,xm
)在具體的nlp任務中,作者在fine-tuning時也把語言模型的目標引入到目標函式中,作為輔助函式,作者發現這樣操作可以提高模型的通用能力,並且加速模型收斂,其形式如下:
l 3(
c)=l
2(c)
+λ∗l
1(c)
l_(\mathcal)=l_(\mathcal)+\lambda * l_(\mathcal)
l3(c)
=l2
(c)+
λ∗l1
(c)
其中,λ
\lambda
λ一般取0.5。
可以發現,在fine-tuning階段,此時新增的引數只有最後一層全連線層的引數wyw_
wy,這比elmo演算法要容易得多。
不過,上面這個例子只是對於文字分類任務,如果是對於其他任務,比如文字蘊涵、問答、文字相似度等,那麼gpt該如何進行微改呢?針對這幾種情況,作者提出了以下的修改方法:
具體的方法可以檢視下圖,可以發現,對這些任務的微改主要是新增線性層的引數以及起始符、結束符和分隔符三種特殊符號的向量引數。
最後總結一下:
MBR與GPT區別介紹
參考鏈結 主引導記錄 ibm提出 存在於磁碟驅動器開始部分的乙個特殊的啟動扇區。包含已安裝的作業系統系統資訊,並用一小段 來啟動系統。mbr分割槽最多支援2t磁碟。guid partition table,全域性唯一標識磁碟分割槽表,一種使用uefi啟動的磁碟組織方式。gpt沒有分割槽的概念,所有c...
MBR和GPT基本原理
mbr mbr結構圖mbr結構圖主引導扇區由三個部分組成 共占用512個位元組 第一部分mbr main boot record 主引導記錄區 位於整個硬碟的0磁軌0柱面1扇區。mbr只占用該扇區的前446個位元組 主引導程式 偏移位址0000h 0088h 它負責從活動分割槽中裝載,並執行系統引導...
GPT分割槽詳解
本文作者是一位開源理念的堅定支持者,所以本文雖然不是軟體,但是遵照開源的精神發布。本文作者十分願意與他人分享勞動成果,如果你對我的其他翻譯作品或者技術文章有興趣,可以在如下位置檢視現有的作品集 由於作者水平有限,因此不能保證作品內容準確無誤。如果你發現了作品中的錯誤 哪怕是錯別字也好 請來信指出,任...