GPT系列论文

目录

GPT

无监督预训练

有监督微调

 如何将模型应用于下游任务?

试验结果 

 GPT-2

摘要

Introduction

Approach

数据集&模型

 试验结果

GPT-3

核心点

名词解释

few-shot做法图示 

数据集


GPT

由无监督预训练+有监督微调组成

  • 无监督预训练

GPT系列论文_第1张图片

  • 有监督微调

GPT系列论文_第2张图片

  •  如何将模型应用于下游任务?

做法是在Transformer输出层后增加线性层

GPT系列论文_第3张图片

  • 试验结果 

GPT系列论文_第4张图片

 GPT-2

论文:Language Models are Unsupervised Multitask Learners

注:标题里的多任务学习是指模型同时在NLP中的多个任务上进行学习

  • 摘要

用了 WebText,有百万级别的文本,最大的 GPT-2 模型有 1.5B 参数。

本文的主要卖点是 zero-shot。

  • Introduction

之前主流任务都是在一个任务上收集一个数据集,然后来训练。这是因为,当前模型的泛化性都不是很好。Bert和GPT提出后,主流是在大的数据集上进行预训练,然后对子任务再 fine-tune。这仍然有两个问题:

  • 在子任务上还是需要重新训练模型
  • 需要针对子任务收集数据集,这导致,模型在扩展到新任务时开销是比较大的。

GPT-2 还是做语言模型,但是在扩展到下游任务时,会有 zero-shot 的设定,不需要再重新训练模型

  • Approach

        GPT中,在微调的时候引入了开始符,间隔符等特殊符号,这些是模型在预训练时候没有见到过的(微调的时候会进行学习)。现在 GPT-2 要做的是 zero-shot,模型在做下游任务时不能进行微调,因此不能引入这些特殊符号,否则模型就会很困惑,输入的形式应该更像自然语言,和之前相似。

        这就引入了 prompt(McCann et al 2018年提出),用一些自然语言来充当一些符号的作用。

  • 比如翻译任务,可以写成一个序列:translate to french, english text, french text。这里既有明显的起始,分隔,又是正常的自然语言
  • 比如阅读理解任务,可以写成:answer the question, document, question, answer 。是同样的道理

为什么可以工作(可能):

  • 模型足够强大,能够理解提示符
  • 在文本里面,这样的话可能也很常见
  • 数据集&模型

数据:Common Crawl是一个网页抓取项目,抓取网页供大家下载。但是信噪比低,有些网页可能就是垃圾网页。因此最终使用了 Reddit(算是一些已经过滤好的网页),最后得到4500万个链接,最终的数据集有800w文本,40GB。

因为数据量很大了,因此可以设计更大的模型。一共设计了 4 个。

  •  试验结果

和别的zero-shot方法比,性能是提升的

在NLP的一些任务上还不错,一些任务上差一些。但是随着模型大小的增加,性能还是呈上升的趋势。

GPT-3

论文:Language Models are Few-shot Leaners

  • 核心点

  • 采用few-shot
  • 尽管few-shot会给少量带标签的样本,但GPT-3在预训练之后,不做任何的梯度更新or微调
  • 名词解释

  • meta-learning,元学习:作者取名不是很精确,作者大致意思是训练一个很大的模型,并且泛化性能还不错
  • in-context learning,上下文学习:在推理的时候,即使给一些带标注的样本,也不对模型权重进行更新或者微调。
  • few-shot做法图示 

图中的箭头叫做prompt(提示),告诉模型接下来该你输出了

GPT系列论文_第5张图片

  • 数据集

Common Crawl数据集量很大,但是大部分文章质量都比较低,因此需要进行处理

1.训练一个二分类模型(逻辑回归),redit数据集作为正例,Crawl数据集作为负例。训练好分类器之后对Common Crawl数据集做预测,如果预测偏正例的话就保留,如果预测偏负例的话就过滤掉。

2.去重,采用lsh算法判断两篇文章(两个集合)的相似性,去除相似度高的

3.增加已知的高质量数据集,比如BERT,GPT, GPT-2采用的所有数据集

GPT系列论文_第6张图片

 可以看到,虽然Common Crawl数据集tokens非常多,但在训练过程中的采用只占60%,即训练时不是平等对待每一个数据集的

InstructGPT

论文:Training language models to follow instructions with human feedback, 2022.03

训练主要是两大核心技术点

1. Instruct Tuning(指令微调)

2. 基于人工反馈的强化学习(Reinforcement learning from Human Feedback, RLHF)

ChatGPT

只有blog,没有官方论文,官方说和InstructGPT是兄弟模型

  • 训练

基本上分成三大步骤(具体是四步)

GPT系列论文_第7张图片

 预训练的一个大作用:

在多种语言上做预训练后,只要教某一种语言的某一个任务,大模型会自动学习其他语言的相同任务

四个详细步骤

GPT系列论文_第8张图片

1.预训练,学习文字接龙

GPT系列论文_第9张图片

         在推理时候,每一次输出是不同的,因此GPT的直接输出是概率分布,然后从概率分布中进行采样,概率大的词更容易被采样到,但每次并不是取概率最大的词作为输出

2. 人类老师引导文字接龙的方向

        不需要穷举,即不需要标注太多的符合人类理解的语句,每种问题提供一些正确范例就行了,因为在第一阶段预训练大模型其实也已经部分学习到这些了。

GPT系列论文_第10张图片

 3. 模仿人类老师的喜好

        ChrtGPT 的API之前已经公开,openAI收集了很多人类问题,因为ChatGPT是具有随机性的,因此同一个问题会输出多种答案,然后雇佣人类对每个问题的不同答案进行评分(人类老师不需要提供正确答案,只需要评分)

        接下来训练一个教师模型,来自动对每个问题的每个答案进行评分,从而让教师模型模仿人类的偏好

GPT系列论文_第11张图片

 4. 用强化学习RL向模仿老师学习

        将问题和chatGPT的回答一起输入到教师模型中,将教师模型输出的分数作为强化学习中的reward,调整chatGPT的参数,从而使得教师模型得到最大的reward。

GPT系列论文_第12张图片

GPT系列论文_第13张图片

 模型大小与训练集总结

模型 发布日期 模型参数大小 训练集大小
GPT 2018. 117M (0.117B) 1GB
GPT-2 2019 1.5B (1542M) 40GB
GPT-3 2020 175B 570GB
InstructGPT 2022.03
ChatPT 2022
GPT-4

你可能感兴趣的:(人工智能,自然语言处理)