材料
- GPT-1论文
- GPT-2论文
- GPT-3论文
- Codex: Evaluating Large Language Models Trained on Code
- InstuctGPT论文 Training language models to follow instructions with human feedback
- ChatGPT博客
GPT-1 Improving Language Understanding by Generative Pre-Training
- GPT-1的出发点是希望能够将CNN上成功使用的预训练模型+微调能够在NLP中实现。
- GPT-1是在Transformer之后,BERT之前,应该是启发了BERT。
GPT-1和BERT
BERT换成了encoder,使用了更多的数据,这样也有机会训练了BERT-large。当时觉得这些都非常大了,现在回过头看还是太保守了。模型还是要大,数据还是要多,效果才好。
GPT-1选择了更难的目标函数
现在来看GPT-1之所以没有BERT做的更好,从模型本身来讲一般会认为是BERT能够看到双向的信息(BERT自己也这么说),而GPT因为选择了Transformer Decoder,在具体某个Token的时候只能看到前面Token的信息。好像也没有那么有道理,因为实际上拿的最后一个Token输出,已经包含了句子所有Token的信息。
GPT-1比BERT性能差很多的原因应该还是目标函数的选取上,GPT-1是来训练模型预测句子下一个词,而BERT是做完形填空,下一个词要比完形填空难很多,所以需要更多的数据和更大的模型。
GPT-1在解决更难的问题
另外GPT系列是语言模型,目标要解决的问题比BERT要复杂的多,BERT对过去很多任务做了非常大的提升,但是对于语言模型这种生成的任务是无能为力的,而这是GPT后来走的方向。
GPT-2 Language Models are Unsupervised Multitask Learners
BERT用更多数据和更大模型打败了GPT-1,GPT-2就用了更多的数据和更大的模型。训练后也没有明显的能打败BERT。
另外由于参数量太大,微调整个模型一般也很难接受,所以开始走Zeroshot路线。
最后Zeroshot的结果跟有监督的学习基本上还有很大的差距,可用性就不是很高。
数据要多
GPT-1用了一个书籍的文本,虽然质量很好,但是数量不多。
BERT加上了Wikipedia的文章,质量稍微下降,但是不多,数量大了三倍。
GPT-2从Reddit上爬取了质量相对高的数据集(WebText),质量进一步下降,数量又大大增加。
模型要大
GPT-1: 1.1M,12层 768维度
BERT: BERT-base和GPT-1一样,BERT-large 3.4M,大了三倍 24层,1024维度
GPT-2: 1.5B
GPT-3 Language Models are Few-Shot Learners
GPT-3模型有175B的参数,这个数字现在也排名靠前。
数据上用了在GPT-2的时候嫌弃的Common Crawl爬取的网页,对数据进行清理和去重。最后采样的也比较少。
实用性不强
虽然从研究上讲,目标是要做few-shot到zero-shot学习,也获得了很好的结果。
但是模型这么大,实际使用成本很高,远不如我直接标注样本训练一个更小的更适合解决问题的模型。
以假乱真的内容生成
但是GPT-3一个很重要的突破是,能够生成非常通顺的内容,人类很难分辨是机器生成还是人写的(本来也是在人类写的内容上学来的)。
但是举的例子是写新闻,我觉得这是一个很不好的例子,恰恰说明了GPT是在一本正经的胡说八道
Codex
InstructGPT
- 使用人工标注数据
- 使用新增的Instruct模型来使用人工标注的这部分数据
ChatGPT
主要是使用的Instruct GPT的方法
using the same methods as InstructGPT, but with slight differences in the data collection setup.
ChatGPT is fine-tuned from a model in the GPT-3.5 series, which finished training in early 2022.