【NLP-14】GPT模型(Generative Pre-Training)


一句話簡介2018年發掘的自回歸模型,采用預訓練和下游微調方式處理NLP任務;解決動態語義問題,word embedding 送入單向transformer中。

一、GPT簡介

1.1 背景

目前大多數深度學習方法依靠大量的人工標注信息,這限制了在很多領域的應用。此外,即使在可獲得相當大的監督語料情況下,以無監督學習的方式學到的表示也可以提供顯着的性能提升。到目前為止,最引人注目的證據是廣泛使用預訓練詞嵌入來提高一系列NLP任務的性能。

1.2 簡介

GPT主要出論文《Improving Language Understanding by Generative Pre-Training》,GPT 是"Generative Pre-Training"的簡稱,從名字看其含義是指的生成式的預訓練。

GPT 采用兩階段過程,第一個階段是利用語言模型進行預訓練(無監督形式),第二階段通過 Fine-tuning 的模式解決下游任務(監督模式下)。

二、GPT模型概述

2.1 第一階段

上圖展示了 GPT 的預訓練過程,其實和 ELMO 是類似的,主要不同在於兩點:

  1. 特征抽取器不是用的 RNN,而是用的 Transformer,上面提到過它的特征抽取能力要強於 RNN,這個選擇很明顯是很明智的;
  2. ELMO使用上下文對單詞進行預測,而 GPT 則只采用 Context-before 這個單詞的上文來進行預測,而拋開了下文。

GPT 使用 Transformer 的 Decoder 結構,並對 Transformer Decoder 進行了一些改動,原本的 Decoder 包含了兩個 Multi-Head Attention 結構,GPT 只保留了 Mask Multi-Head Attention,如下圖所示。

2.2 第二階段

上面講的是 GPT 如何進行第一階段的預訓練,那么假設預訓練好了網絡模型,后面下游任務怎么用?它有自己的個性,和 ELMO 的方式大有不同。

上圖展示了 GPT 在第二階段如何使用。

  1. 對於不同的下游任務來說,本來你可以任意設計自己的網絡結構,現在不行了,你要 GPT 的網絡結構看齊,把任務的網絡結構改造成和 GPT 的網絡結構是一樣的。
  2. 在做下游任務的時候,利用第一步預訓練好的參數初始化 GPT 的網絡結構,這樣通過預訓練學到的語言學知識就被引入到你手頭的任務里來了,這是個非常好的事情。再次,你可以用手頭的任務去訓練這個網絡,對網絡參數進行 Fine-tuning,【類似圖像領域預訓練的過程】

那怎么改造才能靠近 GPT 的網絡結構呢?

GPT 論文給了一個改造施工圖如上:

  1. 對於分類問題,不用怎么動,加上一個起始和終結符號即可;
  2. 對於句子關系判斷問題,比如 Entailment,兩個句子中間再加個分隔符即可;
  3. 對文本相似性判斷問題,把兩個句子順序顛倒下做出兩個輸入即可,這是為了告訴模型句子順序不重要;
  4. 對於多項選擇問題,則多路輸入,每一路把文章和答案選項拼接作為輸入即可。從上圖可看出,這種改造還是很方便的,不同任務只需要在輸入部分施工即可。

2.3 效果

在GPT出來之時:效果是非常令人驚艷的,在 12 個任務里,9 個達到了最好的效果,有些任務性能提升非常明顯。

三、GPT模型解析

GPT 訓練過程分為兩個部分,無監督預訓練語言模型有監督的下游任務 fine-tuning

3.1 預訓練語言模型

給定句子 U=[u1, u2, ..., un],GPT 訓練語言模型時需要最大化下面的似然函數。

文章中使用的是多層Transformer的decoder的語言模型。這個多層的結構應用multi-headed self-attention在處理輸入的文本加上位置信息的前饋網絡,輸出是詞的概念分布。

h0 表示GPT 的輸入,Wp 是單詞位置的 Embedding,We 是單詞的 Embedding。得到輸入 h0 之后,需要將 h0 依次傳入 GPT 的所有 Transformer Decoder 里,最終得到 ht。最后送到softmax得到 ht 再預測下個單詞的概率。

用V表示詞匯表大小,L表示最長的句子長度,dim 表示 Embedding 維度,則 Wp 是一個 L×dim 的矩陣,We 是一個V×dim 的矩陣。

3.2 下游任務 fine-tuning

GPT 經過預訓練之后,會針對具體的下游任務對模型進行微調。微調的過程采用的是有監督學習,訓練樣本包括單詞序列 [x1, x2, ..., xm] 和 類標 y。GPT 微調的過程中根據單詞序列 [x1, x2, ..., xm] 預測類標 y。

Wy 表示預測輸出時的參數,微調時候需要最大化以下函數。

GPT 在微調的時候也考慮預訓練的損失函數,所以最終需要優化的函數為:

四、總結

GPT 預訓練時利用上文預測下一個單詞,ELMO和BERT (下一篇將介紹)是根據上下文預測單詞,因此在很多 NLP 任務上,GPT 的效果都比 BERT 要差。但是 GPT 更加適合用於文本生成的任務,因為文本生成通常都是基於當前已有的信息,生成下一個單詞。

優點

  1. RNN所捕捉到的信息較少,而Transformer可以捕捉到更長范圍的信息。
  2. 計算速度比循環神經網絡更快,易於並行化
  3. 實驗結果顯示Transformer的效果比ELMo和LSTM網絡更好

缺點

  1. 對於某些類型的任務需要對輸入數據的結構作調整
  2. 對比bert,沒有采取雙向形式,削弱了模型威力

參考文獻

1https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

2】從Word Embedding到Bert模型——自然語言處理預訓練技術發展史: https://www.jiqizhixin.com/articles/2018-12-10-8

【3】GPT2 https://www.sohu.com/a/336262203_129720 https://jalammar.github.io/illustrated-gpt2/

4】Pytorch代碼實現: huggingface/pytorch-openai-transformer-lm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM