- 文献阅读:Improving Language Understanding by Generative Pre-Training
- 1. 文章简介
- 2. 模型介绍
- 3. 实验考察
- 1. 训练数据
- 2. 实验结果
- 3. 消解实验
- 4. 总结 & 思考
- 文献链接:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf
1. 文章简介
这篇文章是OpenAI在18年发表的一篇古早文章了,在这篇文章里面,OpenAI第一次提出了GPT模型。
因此,这篇文章放到如今,其实已经完全没有新东西了,里面的东西基本也早就被用烂了,除了OpenAI自己在此基础上引申出的GPT2,GPT3,InstructGPT以及传闻中即将放出的GPT4之外,Google也放出过大规模的LM像是PaLM之类的。到如今,做NLP相关工作的,不知道这篇文章的大概反而是少数了吧,就算没完整地读过,估摸着也知道这文章具体是做了啥的。
但是现在既然工作中涉及到了GPT相关的内容,就打算趁此机会回来把整个GPT系列的模型完整的整理一下。
2. 模型介绍
模型方面,其实就是一个Transformer Decoder模型,不过说Decoder也有点不太对,毕竟相较于原版的Transformer Decoder,这里没有cross attention layer,算是一个单向的transformer encoder吧,具体结构以及数据构造方式可以参考下图:
这一版本的GPT模型走的还是相对较为传统的预训练 + finetune的范式,或者说,在当时,印象中这是最早的一批开始走自监督模型预训练的工作之一了。
3. 实验考察
1. 训练数据
首先,我们来看一下模型训练所使用的数据集。
在预训练的部分,模型使用BooksCorpus数据,而在finetune阶段,文中使用了如下数据集进行了考察:
2. 实验结果
下面,我们来看一下GPT模型在上述各类任务当中的效果:
- NLI任务
- QA任务
- Sentence Similarity
- 分类任务
得到结果如下:
可以看到:
- GPT在几乎全部的任务当中都获得了SOTA的结果。
3. 消解实验
除了上述基础实验之外,文中还做了一些进阶考察,具体包括:
- 考察了层数对模型效果的影响;
- 比较了Transformer与LSTM的效果;
- 考察了预训练模型在zero-shot下的效果;
具体如下两图所示:
可以看到:
- 随着层数的增加,模型效果确实是持续提升的;
- Transformer模型(Fig2中右图实线)的效果是显著由于LSTM模型(Fig2中右图虚线)的;
- GPT预训练模型如果不经过finetune事实上也是可以呈现出不错的结果的。
4. 总结 & 思考
综上,这篇文章提出了GPT模型,主要就是提出了自回归模型的预训练模型范式,并且发现:
- 基于Transformer的预训练LM的效果是优于LSTM的,且效果可以随着层数和参数量的增大而持续提升;
- 预训练后得到的LLM即使不经过finetune,其效果也是可以的。
基于这两点,后续OpenAI发布的GPT2,GPT3乃至传闻中即将发布的GPT4,基本上都是在上述基础上不断地优化,因此虽然这篇古早到现在已经没啥值得一提的新东西了,但是意义上来说真心是开创性的牛逼工作了……