系列文章目錄
【論文精讀】Transformer:Attention Is All You Need
【論文精讀】BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding
論文地址:
- GPT:Improving Language Understanding by Generative Pre-Training
- GPT-2:Language Models are Unsupervised Multitask Learners
- GPT-3:Language Models are Few-Shot Learners
一、前言
- 2017/06 Transformer
- 2018/06 GPT
- GPT的核心技術(shù)是把Transformer的解碼器拿出來,在沒有標號的大量的文本數(shù)據(jù)集上訓(xùn)練一個語言模型來獲得一個預(yù)訓(xùn)練模型,然后在子任務(wù)上進行微調(diào)得到每一個任務(wù)所需要的分類器。
- 2018/10 BERT
- BERT的思想是把Transformer的編碼器拿出來,收集了一個更大的數(shù)據(jù)集用于做預(yù)訓(xùn)練。
- BERT提到了兩個模型:BERT-Base和BERT-Large,BERT-Base的模型大小與GPT一致,結(jié)果顯示Bert的性能要好于GPT。BERT-Large比BERT-Base更大,因此性能也更優(yōu)。
- 2019/02 GPT-2
- 收集了一個更大的數(shù)據(jù)集,訓(xùn)練了一個比BERT-Large更大的模型,繼續(xù)GPT的路線,使用Transformer的解碼器,發(fā)掘語言模型的能力,并且發(fā)現(xiàn)非常適合做zero-shot任務(wù),但是模型性能不夠驚艷。
- 2020/05 GPT-3
- 數(shù)據(jù)和模型相較于GPT-2大了一百倍,模型性能也得到提升。
GPT系列的模型更復(fù)雜,要求更高,很難復(fù)現(xiàn);transformer解決機器翻譯,一個序列到另外一個序列;Bert想把計算機視覺成熟的先訓(xùn)練一個預(yù)訓(xùn)練的模型然后再做微調(diào)出子任務(wù)的方法搬到NLP上做好,提升技術(shù)的效果。在同樣模型大小,比如是一個億級別模型大小時候,Bert的性能要好于GPT。所以后來的文章更愿意用bert文章,因為更容易找到足夠的機器把模型跑起來。
二、GPT
(一)文章概覽
GPT:使用通用的預(yù)訓(xùn)練來提升語言的理解能力(Improving Language Understanding by Generative Pre-Training)
研究背景: 自然語言理解包括各種不同的任務(wù),例如文本蘊涵、問題回答、語義相似性評估和文檔分類。盡管大型未標記文本語料庫非常豐富,但用于學(xué)習(xí)這些特定任務(wù)的標記數(shù)據(jù)卻很少,這使得經(jīng)過區(qū)分訓(xùn)練的模型難以充分執(zhí)行。
作者的方案: 在各種沒有標號的數(shù)據(jù)集(文本語料庫)上訓(xùn)練一個預(yù)訓(xùn)練語言模型,然后在有標號的數(shù)據(jù)集上針對每個特定任務(wù)訓(xùn)練微調(diào)模型。
使用未標記文本中單詞級信息的困難:
- 不知道使用哪種類型的優(yōu)化目標,可能有語言建模、機器翻譯和話語連貫性等等,但是沒有一個優(yōu)化目標在不同任務(wù)上都比較好;
- 不知道怎么樣把這些學(xué)習(xí)到的表示傳遞到下游任務(wù)去,因為nlp領(lǐng)域的子任務(wù)差異性還是挺大的。
相關(guān)工作:
- NLP 的半監(jiān)督學(xué)習(xí)
- 無監(jiān)督預(yù)訓(xùn)練
- 輔助訓(xùn)練目標(使用多個訓(xùn)練目標)
(二)模型細節(jié)
1、在沒有標號的數(shù)據(jù)集上進行預(yù)訓(xùn)練
給定一個無監(jiān)督的標記語料庫 U = { u 1 , . . . , u n } U = \{u_1,..., u_n\} U={u1?,...,un?}( u i u_i ui?表示每個詞, U U U表示沒有標號的整個文本,是有順序的),模型使用標準語言建模目標來最大化以下似然函數(shù):
- (每次拿k個連續(xù)的詞預(yù)測下一個詞出現(xiàn)的概率,模型記作 Θ \Theta Θ)
- Θ \Theta Θ是參數(shù)
-
k
k
k是超參數(shù),表示窗口大小
模型:Transformer的解碼器
Transformer的編碼器可以看到整個序列的所有元素,解碼器只能看到當(dāng)前元素及之前的元素。
U
=
(
u
?
k
,
.
.
.
,
u
?
1
)
U = (u_{-k},..., u_{-1})
U=(u?k?,...,u?1?)是token的上下文向量,
n
n
n是層數(shù),
W
e
W_e
We?是token的embedding矩陣,
W
p
W_p
Wp?是位置embedding矩陣。
與BERT的區(qū)別: BERT 用的不是標準的語言模型,而是一個帶掩碼的語言模型,在預(yù)測一個被 mask 的詞時,既能看到前面的,也能看到后面的,所以使用 Transformer encoder。但是使用編碼器還是解碼器不是GPT與BERT主要的區(qū)別,他們的主要區(qū)別在于目標函數(shù)的選取,預(yù)測未來比完形填空更難,GPT 的目標函數(shù)更難。
2、怎么做微調(diào)
微調(diào)任務(wù)里的數(shù)據(jù)集是有標號的:
- 假設(shè)一個標記數(shù)據(jù)集 C,其中每個實例由一系列輸入標記 x 1 , . . . , x m x_1,...,x_m x1?,...,xm?,以及標簽 y y y組成。
- 輸入通過我們預(yù)先訓(xùn)練的模型,來獲得最終 Transformer 塊的激活 h l m h^m_l hlm? ,然后將其輸入到帶有參數(shù) W y W_y Wy?的線性輸出層中以預(yù)測 y:
對應(yīng)的目標函數(shù)為:
將語言建模作為微調(diào)的輔助目標有助于(a)改進監(jiān)督模型的泛化,(b)加速收斂。因此,最終的目標為:
3、特定于任務(wù)的輸入轉(zhuǎn)換
將模型用于特定的任務(wù)(四個典型任務(wù)),其中 start,delim,extract 分別是 開始符,分隔符,抽取符,都是一些特殊的標記
- Classification(分類)
- 多分類
- 根據(jù)一段話或者一個文本得到對應(yīng)的標號
- 【開始符,文本,抽取符】
- Entailment(蘊涵)
- 三分類問題(支持,反對,不支持也不反對)
- 根據(jù)一段話,提出一個假設(shè),判斷這句話有沒有蘊含假設(shè)的內(nèi)容
- 【開始符,前提,分隔符,假設(shè),抽取符】
- Similarity(相似)
- 二分類問題
- 判斷兩段文字是不是相似。相似是對稱的(a和b相似,b和a也相似),但是實驗的時候會將文本設(shè)定先后順序,因此需要構(gòu)造兩個序列。
- 【開始符,文本1,分隔符,文本2,抽取符】【開始符,文本2,分隔符,文本1,抽取符】
- Multiple Choice(多選)
- 給n個答案,讓模型選擇認為正確的答案。
- 做法是,如果有n個答案,就構(gòu)造n個序列。每個序列都得到一個分數(shù),最后用 softmax 得到正確答案的置信度。
圖中的Transformer 就是第一部中訓(xùn)練好的模型,可以看到,做下游任務(wù)時都不需要改變模型結(jié)構(gòu)。
(三)實驗
訓(xùn)練數(shù)據(jù)集:BooksCorpus 數(shù)據(jù)集,包含7000篇沒有被發(fā)表的書
模型大?。?2 層 Transformer decoder,每一層的維度是 768
- Bert-base 用了 12 層 Transformer encoder,每一層維度也是 768。Bert-base 就是用于與GPT 來對比。
- Bert-large 用了 24層,每一層維度是 1024,大小是 Bert-base 三倍。可以做這么大是因為它用了更大的數(shù)據(jù)集(BooksCorpus 800M words + English Wikipedia 2500M words)。
三、GPT-2
(一)文章概覽
GPT-2:語言模型是無監(jiān)督的多任務(wù)學(xué)習(xí)器(Language Models are Unsupervised Multitask Learners)
- 數(shù)據(jù)集:WebText,有百萬級別的文本。
- 模型大?。鹤畲蟮?GPT-2 模型有 1.5B 參數(shù)。
研究背景:
主流任務(wù)都是在一個任務(wù)上收集一個數(shù)據(jù)集,然后來訓(xùn)練。這是因為,當(dāng)前模型的泛化性都不是很好。Bert和GPT提出后,主流是在大的數(shù)據(jù)集上進行預(yù)訓(xùn)練,然后對子任務(wù)再 fine-tune。這仍然有兩個問題:
- 在子任務(wù)上還是需要重新訓(xùn)練模型
- 需要針對子任務(wù)收集數(shù)據(jù)集
這導(dǎo)致,模型在擴展到新任務(wù)時開銷是比較大的。
作者的方案:
GPT-2 還是做語言模型,但是在擴展到下游任務(wù)時,會有 zero-shot 的設(shè)定,不需要再重新訓(xùn)練模型。因此訓(xùn)練好之后在任何任務(wù)上都能用。
zero-shot:在做到下游任務(wù)時,不需要下游任務(wù)的任何標注的信息,也不需要重新訓(xùn)練模型。
(二)GPT-2與GPT的不同之處
GPT中,在微調(diào)的時候引入了開始符,間隔符等特殊符號,這些是模型在預(yù)訓(xùn)練時候沒有見到過的(微調(diào)的時候會進行學(xué)習(xí))。但是GPT-2 做的是 zero-shot,模型在做下游任務(wù)時不能進行微調(diào),因此不能引入這些特殊符號,否則模型就會很困惑,輸入的形式應(yīng)該更像自然語言,和之前相似。
這就引入了 prompt(McCann et al 2018年提出),讓一些自然語言,來充當(dāng)一些符號的作用。
- 比如翻譯任務(wù),可以寫成一個序列:translate to french, english text, french text。這里又有明顯的起始,分隔,又是正常的自然語言
- 閱讀理解任務(wù),可以寫成:answer the question, document, question, answer 是同樣的道理
這個方法為什么行得通:
- 模型足夠強大,能夠理解提示符
- 在文本里面,這樣的話可能也很常見
(三)實驗
數(shù)據(jù): Common Crawl是一個網(wǎng)頁抓取項目,抓取網(wǎng)頁供大家下載。但是信噪比低,有些網(wǎng)頁可能就是垃圾網(wǎng)頁。使用了 Reddit(算是一些已經(jīng)過濾好的網(wǎng)頁),最后得到4500萬個鏈接,最終的數(shù)據(jù)集有800w文本,40GB。
一共設(shè)計了四個模型:
實驗效果: 在一些任務(wù)上還不錯,一些任務(wù)上差一些。但是隨著模型大小的增加,效果還在變好。
四、GPT-3
GPT-3:語言模型是Few-Shot學(xué)習(xí)器(Language Models are Few-Shot Learners)
- GPT:預(yù)訓(xùn)練之后在子任務(wù)上采取部分樣本進行微調(diào)
- GPT-2:子任務(wù)上不提供任何相關(guān)的樣本,直接使用預(yù)訓(xùn)練的模型在子任務(wù)上進行預(yù)測
- GPT-3:Few-Shot——子任務(wù)上提供少量樣本
(一)文章概覽
稀疏模型:權(quán)重可以有很多 0
- GPT-3的參數(shù)量有 175 billion(1750億),比以往的非稀疏語言模型大十幾倍。
- GPT-3在做子任務(wù)時不需要進行任何梯度更新或微調(diào)(模型很大如果還梯度更新計算難度會太大)
- 在所有的 NLP 任務(wù)上都取得了很好的成績,而且能生成一些新聞的文章(人類很難區(qū)分是不是機器寫的)
(二)方法
- Meta-Learning:訓(xùn)練一個很大的模型,泛化性還不錯
- in-context Learning:在后面的時候即使告訴我一些訓(xùn)練樣本,也不更新我的模型參數(shù)
1、普通的NLP模型如BERT和GPT-1:微調(diào)-預(yù)訓(xùn)練方法
對于普通的NLP模型如BERT和GPT-1,模型的使用方法是:
- 對成熟的NLP模型進行有監(jiān)督的預(yù)訓(xùn)練。
- 根據(jù)特定的下游任務(wù)(文本分類、問答等)對當(dāng)前NLP添加MLP。
- 根據(jù)特性下游任務(wù)的數(shù)據(jù)集對整個模型進行微調(diào)。
2、GPT3的方法: in-context Learning
GPT-3想要做的就是拿掉微調(diào)部分,直接解決下游任務(wù)。
類比人類做題過程,會看到題型說明,可能還會有一些有答案的例題,然后需要解出剩下的試題。GPT系列想要做的就是類似的事情。
- zero-shot零樣本學(xué)習(xí):不允許演示,并且僅向模型提供自然語言的指令;
- one-shot 單樣本學(xué)習(xí):只允許一個演示;
- few-shot 少樣本學(xué)習(xí)或情境學(xué)習(xí)(in-context learning):允許盡可能多的演示填充模型的上下文窗口(典型為10-100)。
(三)GPT-3模型和架構(gòu)
- GPT-2對GPT的變化:GPT2修改了GPT的初始化、預(yù)歸一化和可逆標記化
- GPT-3對GPT-2的變化:Sparse Transformer
訓(xùn)練了 8 種不同大小的模型,范圍從 1.25 億個參數(shù)到 1750 億個參數(shù)三個數(shù)量級,最后一個是我們稱為 GPT-3 的模型。
(四)數(shù)據(jù)集
作者在Common Crawl 數(shù)據(jù)集(包含近萬億個單詞)上采取了 3 個步驟來提高數(shù)據(jù)集的平均質(zhì)量:
- 根據(jù)與一系列高質(zhì)量參考語料庫的相似性下載并過濾 CommonCrawl 的版本;
- 在文檔級別執(zhí)行模糊重復(fù)數(shù)據(jù)刪除(lsh算法),在數(shù)據(jù)集內(nèi)部和數(shù)據(jù)集之間,以防止冗余并保持保留的驗證集的完整性,作為過度擬合的準確度量;
- 在訓(xùn)練組合中添加了已知的高質(zhì)量參考語料庫,以增強 CommonCrawl 并提高其多樣性。
最終的數(shù)據(jù)集如下:文章來源:http://www.zghlxwxcb.cn/news/detail-849142.html
參考:
GPT,GPT-2,GPT-3 論文精讀【論文精讀】
【論文閱讀】GPT系列論文詳解文章來源地址http://www.zghlxwxcb.cn/news/detail-849142.html
到了這里,關(guān)于【論文精讀】 GPT,GPT-2,GPT-3:大力出奇跡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!