GPT

GPT(Generative Pre-Training)出自2018年論文《Improving Language Understanding by Generative Pre-Training》。在原論文中提出了半監(jiān)督學(xué)習(xí)方法,即結(jié)合了無監(jiān)督的預(yù)訓(xùn)練和有監(jiān)督的fine-tuning。第一階段在未標(biāo)記數(shù)據(jù)集上訓(xùn)練語言模型來學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的初始參數(shù);第二階段使用響應(yīng)任務(wù)中的標(biāo)記數(shù)據(jù)將參數(shù)微調(diào)以適應(yīng)當(dāng)前任務(wù)。

下面我們先來看看GPT的語言模型的無監(jiān)督預(yù)訓(xùn)練,其結(jié)構(gòu)長(zhǎng)這樣:

1.png

上面我們提到,GPT在語言模型這塊采用的是無監(jiān)督預(yù)訓(xùn)練。具體的,對(duì)于無標(biāo)簽文本U = \{u_1, ..., u_n\},極大化下面似然函數(shù):
L_{1}(\mathcal{U})=\sum_{i} \log P\left(u_{i} | u_{i-k}, \ldots, u_{i-1} ; \Theta\right)
其中k是上下文窗口的大小。

語言模型中使用多層Transformer decoder,輸入為詞嵌入以及單詞的位置信息,再對(duì)transformer_block的輸出向量做softmax,output為詞的概念分布:
\begin{aligned} h_{0} &=U W_{e}+W_{p} \\ h_{l} &=\text { transformer }_{-} \text {block }\left(h_{l-1}\right) \forall i \in[1, n] \\ P(u) &=\operatorname{softmax}\left(h_{n} W_{e}^{T}\right) \end{aligned}
其中U=\left(u_{-k}, \dots, u_{-1}\right)是單詞的上下文向量(這里只有上文),W_e是詞嵌入向量,W_p是位置編碼向量。

說完無監(jiān)督預(yù)訓(xùn)練,我們接著說說有監(jiān)督fine-tuning。

假設(shè)一個(gè)有標(biāo)簽的數(shù)據(jù)集,每一條數(shù)據(jù)為一個(gè)單詞序列x_1,...,x_m,及相應(yīng)的標(biāo)簽y,通過前面預(yù)訓(xùn)練的模型得到輸出h_l^m,再經(jīng)過線性輸出層來預(yù)測(cè)標(biāo)簽yP\left(y | x^{1}, \ldots, x^{m}\right)=\operatorname{softmax}\left(h_{l}^{m} W_{y}\right);

損失函數(shù):L_{2}(\mathcal{C})=\sum_{(x, y)} \log P\left(y | x^{1}, \ldots, x^{m}\right)

最后將前面兩階段的目標(biāo)函數(shù)通過超參數(shù)\lambda相加訓(xùn)練整個(gè)模型:L_{3}(\mathcal{C})=L_{2}(\mathcal{C})+\lambda * L_{1}(\mathcal{C})。

關(guān)于如何改造下游NLP任務(wù),原論文給了一張圖:

2.png
  • 分類:基本不用怎么變,加上一個(gè)起始符和終止符即可;

  • 句子關(guān)系判斷:兩個(gè)句子中間再加個(gè)分隔符即可;

  • 文本相似性判斷:把兩個(gè)句子順序顛倒下做出兩個(gè)輸入即可,這是為了告訴模型句子順序不重要;

  • 多項(xiàng)選擇:做多路輸入,每一路把文章和答案選項(xiàng)拼接作為輸入即可。

GPT的效果:

3.png
4.png

GPT整體效果還是不錯(cuò)的,在12個(gè)任務(wù)里,9個(gè)達(dá)到了最好的效果。

前面我們介紹過ELMo,現(xiàn)在來看GPT其實(shí)和前者很類似。主要的不同點(diǎn)是:

  • 特征提取器:ELMo用的是LSTM;GPT用的是Transformer,目前時(shí)間節(jié)點(diǎn)最厲害的特征提取器 (有點(diǎn)健忘的童鞋可以看看上一篇關(guān)于Transformer的介紹);

  • 語言模型:ELMo采用雙向語言模型,利用單詞的上下文來預(yù)測(cè);GPT采用單向語言模型,只用單詞上文部分做預(yù)測(cè),拋棄了下文部分。

    現(xiàn)在看來(參考Bert),GPT這個(gè)單向語言模型是個(gè)糟糕的選擇,丟掉了很多信息。單向語言模型限制了GPT在很多任務(wù)場(chǎng)景的效果。比如閱讀理解,需要同時(shí)根據(jù)上文和下文來做決策。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容