GPT
Paper名為Improving Language Understanding by Generative Pre-Training,透過生成式預訓練模型來提高語言理解。
- GPT,將Transformer的Decoder拿出來,在大量沒有標註的文字資料上進行訓練,得到一個大的預訓練的語言模型。然後再用它在不同子任務上進行微調,最後得到每一個任務所要的分類器。
- BERT雖然大家更為熟知,但其實發布晚於GPT,是將Transformer的Encoder拿出來,收集了一個更大的資料集做訓練,取得了比GPT好很多的效果。BERT給了BERT-Base和BERT-Large兩個模型,BERT-Base的模型大小與GPT相當,效果更好,BERT-large模型更大資料效果也更好,下圖是BERT論文[1]中給出的一組對比資料。
我們知道,BERT中使用(1)扣取某個單詞,學習完形填空(2)判斷是否為下一句來學習句子的相關性,兩個任務來使用海量資料進行訓練。
在GPT中,訓練分為無監督的預訓練和有監督的微調,無監督的預訓練使用標準語言模型,給定前i-1個單詞,預測第i個單詞;有監督的微調使用標準交叉熵損失函式。
針對不同的任務,只需要按照下列方式將其輸入格式進行轉換,轉換為一個或多個token序列,然後送入Transformer模型,後接一個任務相關的線性層即可。
GPT-2
之前,大家傾向於為每個任務收集單獨的資料集(single task training on single domain datasets),OpenAI在這篇文章中使用了zero-shot的設定來解決下游任務。
We demonstrate language models can perform down-stream tasks in a zero-shot setting -- without any parameters or architecture modification.
GPT的時候,針對不同的任務構造不同的輸入序列進行微調,這裡直接使用自然語言的方式訓練網路並可以使用到不同的任務上去。
例如,對於一個機器翻譯任務的訓練樣本【translation training example】為:
translate to french, english text, french text
對於閱讀理解訓練樣本【reading comprehension training example】:
answer the question, document, question, answer
這種方法並不是作者首提的,但是作者將其用到了GPT的模型上,並取得了一個相對的效果【如果沒有GPT-3的驚豔效果,估計它也就是一個不怎麼被人所知的工作了】。
從GPT-2開始不再在子任務上做微調,直接使用預訓練模型進行預測,這個是很牛掰的。
GPT-3
GPT-3基於GPT-2繼續做,GPT-2有1.5Billion【15億】的引數量,GPT-3做到了175Billion【1750億】的引數量。
Specififically, we train GPT-3, an autoregressive language model with 175 billion parameters, 10x more than any previous non-sparse language model, and test its performance in the few-shot setting. For all tasks, GPT-3 is applied without any gradient updates or fine-tuning, with tasks and few-shot demonstrations specifified purely via text interaction with the model.
摘要中這裡詳述了,GPT-3引數量翻了10倍,同時推理的時候使用了few-shot。對於所有的子任務,都不進行梯度更新,而是純使用few-shot的形式改變輸入。
Finally, we find that GPT-3 can generate samples of news articles which human evaluators have diffificulty distinguishing from articles written by humans.
GPT-3取得了非常經驗的效果,已經能夠寫出人類無法分辨真假的假新聞。
這裡詳述一下zero-shot、one-shot、few-shot:
- zero-shot:推理時,輸入包含:任務描述 + 英文單詞 + prompt[=>]
- one-shot:推理時,輸入包含:任務描述 + 一個例子 + 英文單詞 + prompt[=>]
- few-shot:推理時,輸入包含:任務描述 + 多個例子 + 英文單詞 + prompt[=>]
Reference
[1] Devlin, Chang, Lee, and Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In ACL, 2019.
[2] Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. 2018. Improving language under standing with unsupervised learning. Technical report, OpenAI. [GPT]
[3] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. Language models are unsupervised multitask learners, 2019. [GPT-2]
[4] Brown, Tom B. et al. “Language Models are Few-Shot Learners.” ArXiv abs/2005.14165 (2020): n. pag. [GPT-3]
[5] 沐神 GPT,GPT-2,GPT-3 論文精讀【論文精讀】