本文首發(fā)于我的個人博客 Sui Xin's Blog
原文:https://suixinblog.cn/2019/09/gpt.html
作者:Sui Xin
GPT(Generative Pre-Training)是一個典型的兩階段式模型:無監(jiān)督預(yù)訓(xùn)練+監(jiān)督下游任務(wù)微調(diào)。而在 NLP 任務(wù)中励两,上游的無監(jiān)督預(yù)訓(xùn)練任務(wù)多半采用語言模型來實現(xiàn)挫掏,下游的監(jiān)督任務(wù)直接對上游的模型進行簡單改造即可使用续挟。
GPT 為了能夠有效的抓取文本中的語義信息叹阔,使用了單向的 Transformer Decoder 模塊構(gòu)建標準的語言模型截酷,再使用預(yù)訓(xùn)練得到的網(wǎng)絡(luò)架構(gòu)與參數(shù)進行下游監(jiān)督任務(wù)的微調(diào)蔓同,取得了不錯的效果饶辙。
論文:Improving Language Understanding by Generative Pre-Training
模型架構(gòu)
無監(jiān)督預(yù)訓(xùn)練語言模型
對于語料 ,GPT 構(gòu)建標準的語言模型:
文章中使用 Transformer Decoder 模塊加上前饋神經(jīng)網(wǎng)絡(luò)斑粱,最后使用 softmax 輸出目標詞的分布:
注:(不確定部分)實驗中,語言模型中的 Transformer Decoder 模塊不同于標準的 Transformer 模型则北,而是使用了 Transformer 的另一個版本:GENERATING WIKIPEDIA BY SUMMARIZING LONG SEQUENCES矿微。其中,使用了名為 Local attention 和 Memory-compressed attention 的模塊尚揣。
下游監(jiān)督任務(wù)微調(diào)
對于通過第一階段的預(yù)訓(xùn)練得到的語言模型涌矢,對于特定的任務(wù)進行 fine-tuning。
對于一個監(jiān)督數(shù)據(jù)集 快骗,其中的數(shù)據(jù)為一個序列
和一個標簽
娜庇。將序列輸入預(yù)訓(xùn)練模型后得到輸出向量為
,接著使用一個線性層來預(yù)測標簽:
需極大化的似然函數(shù)為:
另外方篮,作者發(fā)現(xiàn)思灌,使用語言模型來輔助監(jiān)督學(xué)習(xí)的任務(wù)進行微調(diào),有兩個好處:
- 提升監(jiān)督模型的泛化性恭取;
- 加速收斂泰偿。
所以,最終下游使用的監(jiān)督模型目標函數(shù)為:
不同類型下游任務(wù)的輸入變換
GPT 使用兩階段式模型的另外一個好處是蜈垮,作者期望通過第一階段的預(yù)訓(xùn)練語言模型耗跛,學(xué)習(xí)到盡可能多的自然語言信息,且對于大多數(shù)下游任務(wù)攒发,只需要簡單的修改輸入而不需要修改模型架構(gòu)即可完成微調(diào)调塌。對于 NLP 中的幾種主流任務(wù),GPT 分別做了如下的變換策略:
其他
模型還包括一些細節(jié):
- Adam 優(yōu)化器的學(xué)習(xí)率使用了退火策略惠猿;
- 使用了 bytepair encoding(BPE)羔砾;
- 使用了 Gaussian Error Linear Unit(GELU) 激活函數(shù);
- Position embedding 通過學(xué)習(xí)得來,而不是標準 Transformer 的正弦函數(shù)姜凄。
模型特點
優(yōu)點
- 特征抽取器使用了強大的 Transformer政溃,能夠捕捉到更長的記憶信息,且較傳統(tǒng)的 RNN 更易于并行化态秧;
- 方便的兩階段式模型董虱。
缺點
- 標準的 LM 只對單向進行建模,不符合真實場景申鱼,建模能力受到限制愤诱。
GPT-2
論文:Language Models are Unsupervised Multitask Learners
GPT-2 是 GPT 的直接升級版,效果驚人捐友。相比之下淫半,GPT-2 有如下幾點改進:
- 構(gòu)建了一個更加龐大的數(shù)據(jù)集 WebText,其涵蓋的領(lǐng)域比較廣泛匣砖,共有 8 百萬文檔撮慨,40 GB;
- 使用了更加龐大的網(wǎng)絡(luò)架構(gòu):最大 48 層 Transformer脆粥,1542M 參數(shù)砌溺,1600 維;
- GPT-2 提出這樣訓(xùn)練得到的模型变隔,能夠在 zero-shot 情形下也有不錯的表現(xiàn)规伐,從而證明了語言模型預(yù)訓(xùn)練的意義。
參考
GPT 官方網(wǎng)址:https://openai.com/blog/language-unsupervised/
GPT 官方 GitHub:https://github.com/openai/finetune-transformer-lm
GPT-2 官方網(wǎng)址:https://openai.com/blog/better-language-models/
GPT-2 官方 GitHub:https://github.com/openai/gpt-2