NLP GPT模型和GPT2 0模型

2021-10-24 09:31:08 字數 3676 閱讀 7244

思想:先通過無標籤的文字去訓練生成語言模型,再根據具體的nlp任務(文字分類,qa等),來通過有標籤的資料對模型進行微調。

2.1 模型結構

模型使用了2023年提出的transformer結構,整體是多層單向transformer:

訓練資料:

8億詞的bookscorpus資料。

兩個階段的訓練:

(1)無監督的預訓練

對於無標籤的文字 u =, 最大化語言模型的極大似然函式:

這裡, k 是文字上下文視窗的大小。

也就是,利用 上文資訊,**目標單詞(下乙個單詞) u

iu_i

ui​。

模型使用隨機梯度下降法進行訓練。

**使用的是多層transformer的decoder的語言模型, input為詞嵌入以及單詞token的位置資訊,經過多頭自注意力操作,然後經過position-wise前向層,再對輸出向量做softmax, output為詞的概率分布:

(2) 有監督訓練階段

在預訓練網路最後一層的輸出 h

lh_l

hl​,經過乙個線性層,進行**標籤 y.

優化任務:

在有監督訓練階段,加入無標籤訓練階段的損失,可以:

(a)提高監督模型的泛化能力;

(b)加快收斂

2.2 下游任務的應用

分類任務

直接微調模型。

文字蘊含

將前提 p 和假設 h 文字進行拼接,中間用分割符號 $ 進行分割。

問題回答qa

將上下文文字 z ,問題 q ,每個候選答案拼接起來,得到序列:

【z; q; $; a

ka_k

ak​ 】, 再將序列輸入到預訓練模型. 所有含候選答案的序列的前向結果經過softmax層,得到所有候選答案的概率分布。

相似性

將兩個文字進行排列(2種可能)得到兩個序列,中間使用分割符號$ 區分,最後兩個序列的特徵向量進行逐元素相加,再輸入到線性層中。

2.3 實驗細節

模型設定

訓練乙個12層的transformer 解碼器,masked 自注意力頭機制有768維度, 12個attention heads。position-wise 前向網路有3072維。使用adam優化器,最大學習率 2.5e-4. 學習率線性經過2000步從 0 增加到最大,在減少到0,使用 cosine schedule. 512個tokens, batchsize 64, 100 epochs.

layer norm 採用 n(0,0.02)進行權重的初始化。 bytepair encoding (bpe) , 殘差, attention dropout比例是0.1 . 修正的l2 規範, w = 0.01。使用 gaussian error linear unit (gelu). 學習 位置編碼position embedding,原始**是固定的sinusoidal 位置編碼。 使用 ftfy 清洗原始的文字, spacy tokenizer 處理一些標點符號,空格。

微調階段:使用預訓練階段的超引數, 分類器使用0.1 的dropout, 使用 6.25e-5的學習率, batch size為32, 3個epochs. 線性學習率, 在0.2%進度的學習使用warm up。無監督損失權重lambda 0.5.

訓練資料

gpt2 使用了帶有任務資訊的資料, 使用了40gb的高質量語料進行訓練。

常見的學習乙個任務的框架是評估條件概率分布:

像bert的masked language model 就是對

進行建模。

但是一般乙個普通系統需要對多個任務進行執行,雖然輸入一樣,但是任務不同:

之前的訓練資料,一般是新聞文章,wikipedia, **等。gpt2使用了盡可能大的,收集盡可能多的領域和上下文任務的自然規範解釋。

資料**網路爬蟲。為了提高資料質量,只對人類策劃,過濾的網頁進行爬蟲,比如從reddit以及所有的出站鏈結。並且為了提取html的文字,使用了dragnet和news*****的內容提取器。移去了wikipedia的文字,主要這是公共的資料**,可能由於將訓練資料和測試評估任務結合而導致分析複雜化。

資料的輸入經過 byte pair encoding,bpe,位元組對編碼。這是一種字元和單詞級別之間的語言建模。有效地在字級輸入。

模型結構

和gpt 基本一樣。

transformer從常規的24層block加大到48層block。

可以看到48層transformer的參數量得到了15億,之前的gpt12層是1.1億。

bert base是1.1 億引數; bert large 是24層,3.4億。

主要的修改:

(1)layer norm 放到每個sub-block 之前, 而且增加了乙個額外的ln層在最終的attention block。

(2)殘差層的引數初始化根據網路深度調節,scale 1/n

1/\sqrt n

1/n​

, n是殘差層的數量。

(3) 擴大了字型檔大小到50257,

(4)輸入序列長度,從512到1024;

(5)使用更大的batch size 512。

模型效果

gpt2 只有預訓練的無監督訓練階段,

隨著模型引數的增加,模型的困惑度 perplexity是下降的趨勢,也就是模型仍然處於欠擬合的狀態。

總結

gpt 2.0 第二階段不再通過微調進行有監督做下游任務了。

至於gpt2.0為什麼在bert已經明確證明了雙向語言模型的效果更好的情況下依然堅持做單向語言模型,可能是因為gpt2.0主要做的是無監督的任務中用向後生成的方式來輸出的關係。

參考:improving language understanding by generative pre-training;

zhihu openai gpt演算法理解 ;

language models are unsupervised multitask learners;

如何評價openai gpt-2?

次世代角色模型製作 原畫設定和中模(一)

關於3d遊戲美術的製作,集合了多位3d模型師的經驗和見解,總結了乙份特別具有借鑑意義的文件。不管是對於剛入行的美術新人,還是已經積累一定行業經驗的美術師們,這份文件在某種程度上都具有一定的參考價值。以次時代角色模型製作為例,整個製作的流程分為 原畫設定階段 中模階段 高模階段 低模階段和貼圖。因為整...

什麼是CSS盒模型 IE盒模型和W3C盒模型

1.什麼是css盒模型 2.ie盒模型和w3c盒模型 3.css3屬性box sizing 4.關於盒模型的使用 在最初接觸css的時候,對於css盒模型的不了解,撞了很多次的南牆呀。盒模型是網頁布局的基礎,它制定了元素如何在頁面中顯示,如果足夠地掌握,那使用css布局那將會容易得多。1.什麼是cs...

OSI七層網路模型和Linux四層概念模型

第七層 應用層 資料 使用者介面,提供使用者程式 介面 第六層 表示層 資料 資料的表現形式,特定功能的實現,如資料加密。第五層 會話層 資料 允許不同機器上的使用者之間建立會話關係,如windows 第四層 傳輸層 段 實現網路不同主機上使用者程序之間的資料通訊,可靠 與不可靠的傳輸,傳輸層的錯誤...