课程连接:GPT,GPT-2,GPT-3 论文精读【论文精读】
本文混合课程内容及自己的思考,若有理解有误的地方请指正,谢谢!
开篇介绍
- GPT-3有很多应用,比如github copilota,可以根据注释来生成代码
- 论文时间轴
GPT论文解读
Improving Language Understanding by Generative Pre-Training, OpenAI
摘要
- GPT是把计算机视觉成熟的预训练的方法应用到NLP上
- 利用无标注的数据进行预训练
- 只需要改变输入就可以实现不同的下游任务
引言
-
用无标注数据的难点:不知道用什么优化目标函数(通常来说目标函数是跟子任务相关的);如何把学到的文本表示有效的传递到下游子任务;
-
提出半监督的方法,先用无标签数据预训练一个语言模型,然后用有标签数据微调;现在我们叫自监督学习,包括bert也是;
-
为什么利用Transformer而不是RNN,因为Transformer在迁移学习时学到的特征更加稳健,作者认为可能是Transformer里有更结构化的记忆所以能够处理更长的文本信息,从而可以更好抽取出句子层面和段落层面的语义信息;其次迁移时使用的是和任务相关的输入的表示。
模型
无监督预训练
- 使用标准的语言模型目标函数,根据前n个词(不包括n)预测第n个词
- 模型采用Transformer的解码器
有监督微调
- 根据完整序列x预测标签y
- 目标函数:无监督预训练的目标函数+ 有监督的目标函数
特定任务的输入表示
- 根据任务构造不容的输入和最后的线性层,中间预训练好的Transformer结构不变
实验
- 使用BookCorpus数据集训练,包括7000篇未发表的书
- 模型使用12层Transformer解码器,每层维度768
与BERT对比
- BERT base使用12层,768维度,12头,110M,1.1亿
- BERT large使用24层,1024维度,16头,340M,3.4亿
- BERT模型复杂度比GPT大三倍,因为BERT的数据集差不多是GPT的4倍:BooksCorpus + English Wikipedia
- BERT在各个任务上效果比GPT好
GPT-2论文解读
Language Models are Unsupervised Multitask Learners, OpenAI
摘要
- 在一个新数据集WebText上训练,是百万级别的;
- 提出GPT-2,参数量1.5B,15亿;
- 提到zero-shot;
引言
- 之前工作大多是一个任务利用一个数据集;多任务学习在NLP中使用较少;目前最好方式还是预训练+微调。
- 语言模型可以在zero-shot设定下实现下游任务,即不需要用有标签的数据再微调训练。
- 为了实现zero-shot,下游任务的输入就不能像GPT那样在构造输入时加入开始、中间和结束的特殊字符,这些是模型在预训练时没有见过的,而是应该和预训练模型看到的文本一样,更像一个自然语言。
- 例如机器翻译和阅读理解,可以把输入构造成,翻译prompt+英语+法语;或问答prompt+文档+问题+答案,可以把前面不同的prompt当做是特殊分割符。
- 数据是从Reddit中爬取出来的优质文档,共800万个文档,40GB。
实验
模型越大,效果越好
所以考虑用更多的数据,做更大的模型,于是GPT-3应运而生。
GPT-3论文解读
Language Models are Few-Shot Learners, OpenAI
GPT-2虽然提出zero-shot,比bert有新意,但是有效性方面不佳。GPT-3考虑Few-Shot,用少量文本提升有效性。
摘要
- 提出GPT-3,参数量1750亿;
- GPT-3比非稀疏模型参数量大10倍(稀疏模型是指很多权重是0,是稀疏的)。
- 做子任务时不需要计算梯度,因为参数量很大参数很难调。
引言
mera-learning,在不同多样性的段落中能够学习到大量的任务,训练一个泛化性能好的预训练模型;
in-context learning,段落内数据的上下文之间是相关的,有训练样本但不更新预训练模型的权重。
评估方法:few-shot learning(10-100个小样本);one-shot learning(1个样本);zero-shot(0个样本);
其中few-shot效果最佳。
模型
- Fine-tuning:预训练 + 训练样本计算loss更新梯度,然后预测。会更新模型参数
- Zero-shot:预训练 + task description + prompt,直接预测。不更新模型参数
- One-shot:预训练 + task description + example + prompt,预测。不更新模型参数
- Few-shot:预训练 + task description + examples + prompt,预测。不更新模型参数
GPT-3模型和GPT-2一样,GPT-2和GPT-1区别是初始化改变了,使用pre-normalization,以及可反转的词元。GPT-3应用了Sparse Transformer中的结构。提出了8种大小的模型。
数据
- 爬取一部分低质量的Common Crawl作为负例,高质量的Reddit作为正例,用逻辑回归做二分类,判断质量好坏。接下来用分类器对所有Common Crawl进行预测,过滤掉负类的数据,留下正类的数据;
- 去重,利用LSH算法,用于判断两个集合的相似度,经常用于信息检索;
- 加入之前gpt,gpt-2,bert中使用的高质量的数据
局限性
- 生成长文本依旧困难,比如写小说,可能还是会重复;
- 语言模型只能看到前面的信息;
- 语言模型只是根据前面的词均匀预测下一个词,而不知道前面哪个词权重大;
- 只有文本信息,缺乏多模态;
- 样本有效性不够;
- 模型是从头开始学习到了知识,还是只是记住了一些相似任务,这一点不明确;
- 可解释性弱,模型是怎么决策的,其中哪些权重起到决定作用?
负面影响
可能会生成假新闻;可能有一定的性别、地区及种族歧视
总结
GPT-3大力出奇迹!!!
更多推荐