GPT系列

内容纲要

材料

  1. GPT-1论文
  2. GPT-2论文
  3. GPT-3论文
  4. Codex: Evaluating Large Language Models Trained on Code
  5. InstuctGPT论文 Training language models to follow instructions with human feedback
  6. ChatGPT博客

GPT-1 Improving Language Understanding by Generative Pre-Training

  1. GPT-1的出发点是希望能够将CNN上成功使用的预训练模型+微调能够在NLP中实现。
  2. 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

  1. 使用人工标注数据
  2. 使用新增的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.

发表评论