GPT1論文精讀

Abstract

自然語(yǔ)言理解包括各種不同的下游任務(wù)。盡管大型未標(biāo)記的文本語(yǔ)料庫(kù)很豐富,但用于學(xué)習(xí)這些特定任務(wù)的標(biāo)號(hào)數(shù)據(jù)很少,這使得訓(xùn)練分辨(判別)模型比較難。
作者的解決方法就是:通過在未標(biāo)號(hào)的文本語(yǔ)料庫(kù)進(jìn)行語(yǔ)言模型,然后在有標(biāo)號(hào)的數(shù)據(jù)上對(duì)每個(gè)特定任務(wù)進(jìn)行分辨性微調(diào)。
和以前的方法相比,在微調(diào)的時(shí)候,構(gòu)造跟任務(wù)相關(guān)的輸入,從而使得我們只需要很少地改動(dòng)模型架構(gòu)就行了。

1 Introduction

怎樣利用好無監(jiān)督的文本,即未標(biāo)號(hào)的數(shù)據(jù)。以無監(jiān)督的方式學(xué)習(xí)良好的表示也可以顯著提高性能,當(dāng)時(shí)最成功的模型還是word embedding。

然而,從未標(biāo)記的文本中利用更多的單詞級(jí)信息有兩個(gè)困難。

  • 在文本表示中用什么類型的優(yōu)化目標(biāo)函數(shù)是最有效的
  • 怎樣把學(xué)習(xí)到的文本表示傳遞到下游子任務(wù)上

探索使用半監(jiān)督的方式,使用無監(jiān)督的預(yù)訓(xùn)練和有監(jiān)督微調(diào)組合來完成語(yǔ)言理解任務(wù)。
采用兩階段的訓(xùn)練流程:

  • 首先,我們對(duì)未標(biāo)號(hào)的數(shù)據(jù)使用語(yǔ)言建模目標(biāo)來學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型的初始參數(shù)。
  • 隨后,我們使用相應(yīng)的有標(biāo)號(hào)的數(shù)據(jù)監(jiān)督微調(diào)將這些參數(shù)調(diào)整為目標(biāo)任務(wù)。

作者在本文使用Transformer架構(gòu),與RNN等相比,這個(gè)模型具有更結(jié)構(gòu)化的記憶來處理文本中的長(zhǎng)期依賴關(guān)系,從而在不同任務(wù)之間實(shí)現(xiàn)強(qiáng)大的遷移性能。在遷移階段,使用任務(wù)相關(guān)的輸入表示,將結(jié)構(gòu)化文本輸入處理為單個(gè)連續(xù)的token序列。

評(píng)估了我們對(duì)四種語(yǔ)言理解任務(wù)的方法——自然語(yǔ)言推理、問答、語(yǔ)義相似性和文本分類,并展示了結(jié)果。

2 Related Work

2.1 Semi-supervised learning for NLP

在沒有標(biāo)號(hào)的數(shù)據(jù)上進(jìn)行無監(jiān)督訓(xùn)練

2.2 Unsupervised pre-training

在有標(biāo)號(hào)的數(shù)據(jù)上進(jìn)行有監(jiān)督的微調(diào)

2.3 Auxiliary training objectives

怎樣使用多個(gè)目標(biāo)函數(shù)

3 Framework

gpt的模型框架取自原生的transformer的decoder模型,但是由于沒有encoder的存在,和transformerdecoder的內(nèi)容還是有一些不同的,少了一個(gè)multi-head attention層。


gpt架構(gòu)

其架構(gòu)主要是4層

  • masked attention
  • layernorm
  • MLP
  • layernorm
    從模型展示的的層數(shù)如下


    GPT1代碼展示層數(shù)

第一階段是在大型文本語(yǔ)料庫(kù)上學(xué)習(xí)高容量語(yǔ)言模型。接下來是微調(diào)階段,我們將模型調(diào)整為具有標(biāo)記數(shù)據(jù)的判別任務(wù)。

3.1 Unsupervised pre-training

給定無監(jiān)督語(yǔ)料庫(kù)tokenU = \{u_1, . . . , u_n\},我們使用標(biāo)準(zhǔn)語(yǔ)言建模目標(biāo)函數(shù)來最大化以下似然估計(jì):
L_1(U) = \sum_ilog P(u_i|u_{i?k}, . . . , u{i?1}; Θ)
其中 k 是上下文窗口的大小,條件概率 P 使用參數(shù)為 Θ 的神經(jīng)網(wǎng)絡(luò)進(jìn)行建模。這些參數(shù)是使用隨機(jī)梯度下降訓(xùn)練的。給定k和Θ,目標(biāo)函數(shù)是每個(gè)i的概率相乘,由于這里是取對(duì)數(shù),就變成了相加,從0一直到最后。即L1為第一個(gè)目標(biāo)函數(shù)。
從神經(jīng)網(wǎng)絡(luò)的角度來看,k就是輸入序列的長(zhǎng)度,k越大,網(wǎng)絡(luò)看到的文本越長(zhǎng),模型越復(fù)雜。

本文使用的是Transformer的Decoder,因?yàn)橹荒芸吹角懊娴男畔ⅲ鴈ncoder會(huì)看到所有的信息包括前面和后面的,所以gpt只能使用decoder來進(jìn)行訓(xùn)練
h_0 = UW_e + W_p\\ h_l = transformer_block(h_l?1)?i ∈ [1, n]\\ P(u) = softmax(h_nW^T_e)
U = (u_{?k}, . . . , u{?1})是token的上下文向量,n 是層數(shù)(transformer塊的個(gè)數(shù)),We是token的嵌入矩陣,Wp 是位置嵌入矩陣。公式解釋為:上下文向量對(duì)應(yīng)的embedding加上位置向量矩陣得到h0,hl代表對(duì)h0經(jīng)過n個(gè)transformer塊,最后一層的h_n 和We的轉(zhuǎn)置進(jìn)行相乘,再進(jìn)行softmax得到概率分布。

3.2 Supervised fine-tuning

在使用公式 1 中的目標(biāo)函數(shù)訓(xùn)練模型后,我們將上面模型的參數(shù)調(diào)整為監(jiān)督目標(biāo)任務(wù)。我們假設(shè)一個(gè)標(biāo)號(hào)數(shù)據(jù)集 C,其中每個(gè)實(shí)例由一系列輸入tokens組成,x_1,...,x_m以及一個(gè)標(biāo)簽 y。輸入通過我們的預(yù)訓(xùn)練模型以獲得最終 transformer 塊的 h^m_l ,即最后一層最后一個(gè)token對(duì)應(yīng)的向量表示,然后將其輸入到帶有參數(shù) Wy 的附加線性輸出層中以預(yù)測(cè) y:
P(y|x^1, . . . , x^m) = softmax(h^m_l W_y)
這為我們提供了以下最大化目標(biāo)函數(shù):
L2(C) = \sum_{(x,y)}log P(y|x^1, . . . , x^m)
在上面所有帶標(biāo)號(hào)的序列對(duì),把x1到xm輸入進(jìn)去,計(jì)算真實(shí)標(biāo)號(hào)的概率,最大化這個(gè)概率。

并且額外發(fā)現(xiàn):把L1目標(biāo)函數(shù)加入和L2一起作為目標(biāo)函數(shù)微調(diào),有助提升模型的泛化性能,并且能加速收斂
L_3(C) = L_2(C) + λ ? L_1(C)
λ是可以調(diào)的超參數(shù)。
總的來說,我們?cè)谖⒄{(diào)期間唯一需要的額外參數(shù)是 Wy 和分隔符token的embedding。

3.3 Task-specific input transformations

根據(jù)任務(wù)將輸入進(jìn)行轉(zhuǎn)換

注意圖中雖然寫的start、extract、delim,但是在實(shí)際上是不能這么加這些單詞的,因?yàn)檫@些詞可能在文本中出現(xiàn),這三個(gè)token必須是特殊token,不能和模型詞表里的詞一樣,否則模型就會(huì)混淆了。

  1. 分類任務(wù)
    在需要分類的文本前面和后面加上start 和 extract兩個(gè)特殊token,然后放入transformer,獲得最后一層的extract對(duì)應(yīng)的向量表示,接入線性層做線性變換,最后進(jìn)行softmax得到相應(yīng)的概率分布。訓(xùn)練的
  2. 蘊(yùn)含
    任務(wù)解釋是,給定一個(gè)前提,再給你一個(gè)假設(shè),問你前面的前提是否蘊(yùn)含后面的假設(shè)。可以是支持這個(gè)假設(shè)、不支持這個(gè)假設(shè)以及無關(guān)中立,是一個(gè)三分類的問題。
    簡(jiǎn)單來說就是給你兩段文本做一個(gè)三分類問題。跟前面的分類問題也是相似的一個(gè)操作方式。
  3. 相似
    對(duì)于相似性任務(wù),被比較的兩個(gè)句子沒有固有的順序,即A相似于B,B也相似于A。因此在這里構(gòu)造了兩個(gè)序列,并獨(dú)立處理每個(gè)序列以產(chǎn)生兩個(gè)序列表示 hm,這兩個(gè)序列最后的表示按元素相加,再進(jìn)入線性層,得到是相似還是不是相似的二分類問題。
  4. 問答和常識(shí)推理
    對(duì)于這些任務(wù),我們得到了一個(gè)上下文文檔 z、一個(gè)問題 q 和一組可能的答案集合{ak} 。我們將文檔上下文z和問題q與每個(gè)可能的答案連接起來,在兩者之間添加一個(gè)分隔符標(biāo)記以獲得 [z;q;$;ak]。構(gòu)造多個(gè)序列,這些序列中的每一個(gè)都使用我們的模型獨(dú)立處理,輸出大小為1,也就是每個(gè)序列算一個(gè)標(biāo)量。然后通過 softmax 層進(jìn)行歸一化,以產(chǎn)生可能答案的輸出分布。

4 Experiment

4.1 Setup

Unsupervised pre-training
dataset:BooksCorpus dataset for training the language model,包含來自各種類型的 7,000 本獨(dú)特的未出版書籍。

Model specifications
12層的 decoder-only transformer with masked self-attention heads
(768 dimensional states and 12 heads)
對(duì)于位置前饋網(wǎng)絡(luò)(MLP),我們使用了 3072 維內(nèi)部狀態(tài)(768 * 4),dk = 64(768/12 = 64)
(ps:原生的transformer是512維,dff = 2048,head是8個(gè),dk = 512/8 = 64)

  • 優(yōu)化器:Adam
  • 學(xué)習(xí)率
    學(xué)習(xí)率設(shè)置: 最大是2.5e-4.
    學(xué)習(xí)率設(shè)置策略:線性升溫余弦退火策略。前2000步從0線性升溫到2.5e-4,后面使用余弦函數(shù)退火到0,讓學(xué)習(xí)率隨時(shí)間按余弦曲線平滑衰減。
為什么需要學(xué)習(xí)率調(diào)度?
固定學(xué)習(xí)率的訓(xùn)練存在明顯缺陷:
 - 初始學(xué)習(xí)率過大會(huì)導(dǎo)致模型震蕩,難以收斂;
 - 后期學(xué)習(xí)率過小會(huì)導(dǎo)致收斂速度緩慢,甚至陷入局部最優(yōu)。
學(xué)習(xí)率調(diào)度的核心思想是:在訓(xùn)練過程中動(dòng)態(tài)調(diào)整學(xué)習(xí)率—— 前期用較大的學(xué)習(xí)率快速探索參數(shù)空間,后期用較小的學(xué)習(xí)率精細(xì)優(yōu)化。

余弦退火公式為:
η _t= η_{min} + \frac12(η_{max}-η_{min}) (1+cos(\frac{T_t}{T_{max}}π))
其中:η t是第t步的學(xué)習(xí)率,η{min}最小學(xué)習(xí)率(通常是0),η{max}最大學(xué)習(xí)率,一般都是手動(dòng)設(shè)置的,T_t當(dāng)前步數(shù),T{max}單個(gè)周期總步數(shù)。
整個(gè)學(xué)習(xí)率線性升溫和余弦退火在gpt1的公式如下
lrate =\begin{cases} t * 1.25e-7 & 0<=t<=2000 \\ \frac12(2.5e-4) (1+cos(\frac{t-2000}{T-2000}π)) & 2000 < t <= T \\ \end{cases}

  • 分詞器:使用的是byte pair encoding (BPE)
    GPT從基本字符進(jìn)行了40000次的合并,詞表的大小40478,具體BPE的算法可以查看本人的nlp-分詞器的講解[http://www.itdecent.cn/p/4d1664feb21c?v=1754576931275]。
  • dropout :dropouts with a rate of 0.1
  • L2 regularization:w = 0.01
  • activation function:Gaussian Error Linear Unit (GELU)
  • positional embedding:learned position embeddings

Fine-tuning details
dropout to the classifier with a rate of 0.1
learning rate of 6.25e-5 and a batchsize of 32.
3 epochs
linear learning rate decay schedule with warmup over 0.2% of training.
λ = 0.5, 微調(diào)的目標(biāo)函數(shù)是L2 + λL1

4.2 Supervised fine-tuning

介紹了在幾個(gè)任務(wù)上的實(shí)驗(yàn)結(jié)果

5 Analysis

最后編輯于
?著作權(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)容