沐神学习笔记:GPT,GPT-2,GPT-3

课程连接:GPT,GPT-2,GPT-3 论文精读【论文精读】

本文混合课程内容及自己的思考,若有理解有误的地方请指正,谢谢!

开篇介绍

  1. GPT-3有很多应用,比如github copilota,可以根据注释来生成代码
  2. 论文时间轴
    沐神学习笔记:GPT,GPT-2,GPT-3_第1张图片

GPT论文解读

Improving Language Understanding by Generative Pre-Training, OpenAI

摘要

  1. GPT是把计算机视觉成熟的预训练的方法应用到NLP上
  2. 利用无标注的数据进行预训练
  3. 只需要改变输入就可以实现不同的下游任务

引言

  1. 用无标注数据的难点:不知道用什么优化目标函数(通常来说目标函数是跟子任务相关的);如何把学到的文本表示有效的传递到下游子任务;

  2. 提出半监督的方法,先用无标签数据预训练一个语言模型,然后用有标签数据微调;现在我们叫自监督学习,包括bert也是;

  3. 为什么利用Transformer而不是RNN,因为Transformer在迁移学习时学到的特征更加稳健,作者认为可能是Transformer里有更结构化的记忆所以能够处理更长的文本信息,从而可以更好抽取出句子层面和段落层面的语义信息;其次迁移时使用的是和任务相关的输入的表示。

模型

无监督预训练

  1. 使用标准的语言模型目标函数,根据前n个词(不包括n)预测第n个词
  2. 模型采用Transformer的解码器

有监督微调

  1. 根据完整序列x预测标签y
  2. 目标函数:无监督预训练的目标函数+ 有监督的目标函数

特定任务的输入表示

  1. 根据任务构造不容的输入和最后的线性层,中间预训练好的Transformer结构不变

沐神学习笔记:GPT,GPT-2,GPT-3_第2张图片

实验

  1. 使用BookCorpus数据集训练,包括7000篇未发表的书
  2. 模型使用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

摘要

  1. 在一个新数据集WebText上训练,是百万级别的;
  2. 提出GPT-2,参数量1.5B,15亿;
  3. 提到zero-shot;

引言

  1. 之前工作大多是一个任务利用一个数据集;多任务学习在NLP中使用较少;目前最好方式还是预训练+微调。
  2. 语言模型可以在zero-shot设定下实现下游任务,即不需要用有标签的数据再微调训练。
  3. 为了实现zero-shot,下游任务的输入就不能像GPT那样在构造输入时加入开始、中间和结束的特殊字符,这些是模型在预训练时没有见过的,而是应该和预训练模型看到的文本一样,更像一个自然语言。
  4. 例如机器翻译和阅读理解,可以把输入构造成,翻译prompt+英语+法语;或问答prompt+文档+问题+答案,可以把前面不同的prompt当做是特殊分割符。
  5. 数据是从Reddit中爬取出来的优质文档,共800万个文档,40GB。

实验

模型越大,效果越好

所以考虑用更多的数据,做更大的模型,于是GPT-3应运而生。

GPT-3论文解读

Language Models are Few-Shot Learners, OpenAI

GPT-2虽然提出zero-shot,比bert有新意,但是有效性方面不佳。GPT-3考虑Few-Shot,用少量文本提升有效性。

摘要

  1. 提出GPT-3,参数量1750亿;
  2. GPT-3比非稀疏模型参数量大10倍(稀疏模型是指很多权重是0,是稀疏的)。
  3. 做子任务时不需要计算梯度,因为参数量很大参数很难调。

引言

mera-learning,在不同多样性的段落中能够学习到大量的任务,训练一个泛化性能好的预训练模型;

in-context learning,段落内数据的上下文之间是相关的,有训练样本但不更新预训练模型的权重。

评估方法:few-shot learning(10-100个小样本);one-shot learning(1个样本);zero-shot(0个样本);
其中few-shot效果最佳。

模型

  1. Fine-tuning:预训练 + 训练样本计算loss更新梯度,然后预测。会更新模型参数
  2. Zero-shot:预训练 + task description + prompt,直接预测。不更新模型参数
  3. One-shot:预训练 + task description + example + prompt,预测。不更新模型参数
  4. Few-shot:预训练 + task description + examples + prompt,预测。不更新模型参数

GPT-3模型和GPT-2一样,GPT-2和GPT-1区别是初始化改变了,使用pre-normalization,以及可反转的词元。GPT-3应用了Sparse Transformer中的结构。提出了8种大小的模型。

数据

  1. 爬取一部分低质量的Common Crawl作为负例,高质量的Reddit作为正例,用逻辑回归做二分类,判断质量好坏。接下来用分类器对所有Common Crawl进行预测,过滤掉负类的数据,留下正类的数据;
  2. 去重,利用LSH算法,用于判断两个集合的相似度,经常用于信息检索;
  3. 加入之前gpt,gpt-2,bert中使用的高质量的数据

局限性

  1. 生成长文本依旧困难,比如写小说,可能还是会重复;
  2. 语言模型只能看到前面的信息;
  3. 语言模型只是根据前面的词均匀预测下一个词,而不知道前面哪个词权重大;
  4. 只有文本信息,缺乏多模态;
  5. 样本有效性不够;
  6. 模型是从头开始学习到了知识,还是只是记住了一些相似任务,这一点不明确;
  7. 可解释性弱,模型是怎么决策的,其中哪些权重起到决定作用?

负面影响

可能会生成假新闻;可能有一定的性别、地区及种族歧视

总结

GPT-3大力出奇迹!!!

你可能感兴趣的:(文本生成,自然语言处理,nlp)