GPT1-GPT3


簡介

​ GPT(Generative Pre-trained Transformer)系列是由OpenAI提出的非常強大的預訓練語言模型,這一系列的模型可以在生成式任務中取得非常好的效果,對於一個新的任務,GTP只需要很少的數據便可以理解任務的需求並達到或接近state-of-the-art的方法。

​ GPT訓練需要超大的訓練語料以及堆疊的transformer,123系列具體情況如下:

模型 發布時間 參數量 預訓練數據量
GPT-1 2018年6月 1.17億 約5GB
GPT-2 2019年2月 15億 40G
GPT-3 2020年5月 1750億 45TB

​ GPT的三個模型幾乎都是相同架構, 只是有非常非常少量的改動. 但一代比一代更大, 也更燒錢. 所以我對GPT系列的特點就是: 鈔能力, 大就完事了. 其影響力和花費的成本是成正比的.

GPT-1(通過生成式預訓練提高語言理解

​ 傳統的NLP模型往往使用大量的數據對有監督模型進行訓練,這種任務存在兩個明顯的缺點:

  • 需要大量的標注數據,高質量的數據往往很難獲得;

  • 一個任務訓練的模型很難泛化到其他任務中,這個模型只能叫“領域專家”而不是真正的理解NLP。

GPT-1先通過無標簽數據學習一個生成式的語言模型,然后再根據特定任務進行微調。任務包括

  • 自然語言推理(NLI):判斷兩個句子是否包含關系,矛盾關系,中立關系;

  • 問答和常識推理:類似多選題,輸入文章,問題以及若干候選答案,輸出為每個答案的概率;

  • 語義相似度:判斷兩個句子語義上是否相關;

  • 分類:判斷輸入文本是指定的那個類別。

數據集

GPT-1使用的數據集BooksCorpus,包含7000本沒有發布的書籍。使用原因由兩點:

  • 有助於未見過的數據集上訓練語言模型,該數據不太可能在下游任務的測試集中找到;
  • 數據集擁有長的合理的上下文依賴關系,使得模型學習更長的依賴關系。

網絡結構

​ 使用12層僅解碼器帶有掩碼自注意力的transormer,掩碼的使用使模型看不見未來的信息,得到模型泛化能力更強。

實現細節

  • 使用字節對編碼(BPE:byte pair encoding),共有4000個字節對;
  • 詞編碼長度為768;
  • 位置編碼也需要學習;
  • 12層transformer,每個transformer塊有12個頭;
  • 位置編碼的長度是3072;
  • Attention,殘差,Dropout等機制用來進行正則化,drop比例為0.1;
  • 激活函數GLUE;
  • 訓練的batchsize為64,學習率為\(\color{blue}{2.5e^{-4}}\),序列長度為512,序列epoch為100。

訓練

GPT-1的訓練分為無監督訓練和有監督微調,詳細過程如下:

無監督預訓練

GPT-1的無監督預訓練是基於語言模型進行訓練的,給定一個無標簽的序列\(\color{blue}{U={u_1,...,u_n}}\),語言模型的優化目標是最大化似然函數:

\[\color{blue}{L_1(U)=\sum_xlogP(u_i|u_{i-k},...,u_{i-1};\theta)-------(1)} \]

其中\(\color{blue}{k}\)是滑動窗口的大小,\(\color{blue}{P}\)是條件概率,\(\color{blue}{\theta}\)是模型參數,這些參數使用SGD進行優化。在GPT-1中,使用12個transformer塊的結構作為解碼器,每個transformer塊是一個多頭注意力機制,然后通過全連接得到輸出的概率分布。

L988z9.jpg

\[\color{blue}{h_0=UW_e+W_p---------------(2)}\\ \color{blue}{h_l=transformer_block(h_{l-1})\forall i\in[1,n])-----(3)}\\ \color{blue}{P(u)=softmax(h_nW_e^T)------------(4)} \]

​ 其中 \(\color{blue}{U=(u_{-k},\dots,u_{-1})}\)是當前時間片的上下文token,\(\color{blue}{n}\)是層數,\(\color{blue}{w_e}\)是詞嵌入矩陣,\(\color{blue}{W_p}\)是位置嵌入矩陣。

有監督微調

​ 當得到無監督預訓練模型之后,我們將它的值應用到有監督任務中,對於一個有標簽的數據集\(\color{blue}{C}\),每個實例有\(\color{blue}{m}\)個輸入token:\(\color{blue}{x^1,...,x^m}\),它對應的標簽\(\color{blue}{y}\)組成。首先將這些token輸入到訓練好的預訓練模型中,得到最終的特征向量\(\color{blue}{h_l^m}\)。然后再通過一個全連接層得到預測結果\(\color{blue}{y}\)

\[\color{blue}{P(y|x^1, ..., x^m)=softmax(h_l^mW_y)--------(5)} \]

其中\(\color{blue}{W_y}\)為全連接層的參數。有監督的目標則是最大化公式(5)的值:

\[\color{blue}{L_2(X)=\sum_{x,y}logP(y|x^1,...,x^m)----------(6)} \]

作者並沒有直接使用\(\color{blue}{L_2}\),而是向其中加入了\(\color{blue}{L_1}\),並通過\(\color{blue}{\lambda}\)調節權重,一般采用0.5,公式(7)如下:

\[\color{blue}{L_3(C)=L_2(C)+\lambda L_1(C) -----------(7)} \]

相關任務輸入變化

GPT-1對不同的任務形式有不同的輸入形式,具體如下:

  • 分類任務:將起始和終止的token加入到原始序列兩端,輸入transformer中得到特征向量,最后經過一個全連接層得到預測的概率分布;
  • NLI任務:將前提和假設同通過分割符隔開,兩端加上起始和終止token,再一次通過transformer和全連接得到預測結果;
  • 語義相似度任務:輸入兩個句子,正向和反向各拼接一次,然后分別輸入給transformer,得到特征向量拼接后再送給全連接得到預測結果;
  • 問答和常識推斷:將\(\color{blue}{n}\)個選項的問題抽象化為\(\color{blue}{n}\)二分類問題,即每個選項分別和內容進行拼接,然后各送入transformer和全連接中,最后選擇置信度最高的作為預測結果。
    L98JMR.jpg

對比bert

  • GPT在預訓練時並沒有引入[CLS][SEP], Bert全程引入;
  • Bert是真正能夠捕捉所有層上下文信息的,受益於自注意力機制,將所有token距離直接縮短到1,GPT-1是單向捕捉信息;
  • input: GPT采用BPE, Bert用了Word Piece. GPT有位置編碼, Bert有位置編碼和段編碼.

\(\color{red}{Bert 詳見我另一篇blog}\)

GPT-2(語言模型式無監督的多任務學習

GPT-2的目標是為了訓練一個泛化能力更強的詞向量模型,它並沒有對GPT-1的網絡機構進行過多的結構創新和設計,只是使用了更大的數據集和更大的網絡參數。

數據集

GPT-2的文章取自於Reddit上高贊的文章,命名為WebText。數據集共有約800萬篇文章,累計體積約40G。為了避免和測試集的沖突,WebText移除了涉及Wikipedia的文章。

網絡結構

  • 同樣使用了字節對編碼構建字典,字典大小為50257;

  • 有48層,詞嵌入大小1600維;

  • 滑動窗口大小為1024;

  • batchsize 512;

  • Layer Normalization移動到了每一塊的輸入部分,在每個self-attention知后額外添加了一個Layer Normalization;

  • 將殘差層的初始化值用\(\color{blue}{1/\sqrt{N}}\),其中N是殘差層的個數。

    ​ GPT-2訓練了4組不同的層數和詞向量的長度的模型,具體值見表2。通過這4個模型的實驗結果我們可以看出隨着模型的增大,模型的效果是不斷提升的。

    參數量 層數 詞向量長度
    117M(GPT-1) 12 769
    345M 24 1024
    762M 36 1280
    1542M 48 1600

GPT-2小結

GPT-2的最大貢獻是驗證了通過海量數據和大量參數訓練出來的詞向量模型有遷移到其它類別任務中而不需要額外的訓練。但是很多實驗也表明,GPT-2的無監督學習的能力還有很大的提升空間,甚至在有些任務上的表現不比隨機的好。盡管在有些zero-shot的任務上的表現不錯,但是我們仍不清楚GPT-2的這種策略究竟能做成什么樣子。GPT-2表明隨着模型容量和數據量的增大,其潛能還有進一步開發的空間,基於這個思想,誕生了我們下面要介紹的GPT-3

GPT-3(語言模型少量學習

數據集

GPT-3共訓練了5個不同的語料,分別是低質量的Common Crawl,高質量的WebText2,Books1,Books2和Wikipedia,GPT-3根據數據集的不同的質量賦予了不同的權值,權值越高的在訓練的時候越容易抽樣到。

網絡結構

GPT-3沿用了GPT-2的結構,但是在網絡容量上做了很大的提升,具體如下:

  • GPT-3采用了96層的多頭transformer,頭的個數為96;
  • 詞向量的長度是12888 ;
  • 上下文划窗的窗口大小提升至2048個token;
  • 使用了alternating dense和locally banded sparse attention。

GPT-3 總結

本文討論了 GPT-3 模型的幾個弱點以及有待改進的領域。讓我們在這里總結一下。

  • 盡管 GPT-3 能夠生成高質量的文本,但有時它會在編寫長句子並一遍又一遍地重復文本序列時開始失去連貫性。此外,GPT-3在自然語言推理(確定一個句子是否暗示另一個句子)、填空、一些閱讀理解任務等任務上表現不佳。該論文引用GPT 模型的單向性作為可能的原因這些限制並建議以這種規模訓練雙向模型來克服這些問題;
  • 該論文指出的另一個限制是GPT-3的通用語言建模目標,它平等地權衡每個token,並且缺乏任務或面向目標的token預測的概念。為了解決這個問題,本文提出了諸如增強學習目標、使用強化學習來微調模型、添加其他模式等方法;
  • GPT-3的其他限制包括復雜且昂貴的模型推理,因為其結構繁重,語言的可解釋性和模型生成的結果較低,以及圍繞什么有助於模型實現其少量學習行為的不確定性;
  • 除了這些限制之外,GPT-3還存在濫用其類人文本生成能力進行網絡釣魚、垃圾郵件、傳播錯誤信息或執行其他欺詐活動的潛在風險。此外,GPT-3生成的文本具有其訓練所用語言的偏見。GPT-3生成的文章可能存在性別、種族、種族或宗教偏見。

巨人的肩膀

1、詞向量之GPT-1,GPT-2和GPT-3

2、The Journey of Open AI GPT models

3、ELMo, GPT, BERT


免責聲明!

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



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