GPT,GPT-2,GPT-3 论文精读【论文精读】

一、发展历史

file

gpt 1 论文

file

Improving Language Understanding by Generative Pre-Training

一作作者:
file

1.1 模型提出

GPT:Generative Pre-Training

在自然语言中,大量的未标记文本语料库非常丰富,但用于学习特定任务的标记数据却非常缺乏,这使得有区别训练的模型难以充分发挥作用。

作者通过在不同的非标记文本语料库上对语言模型进行生成式预训练(Generative Pre-Training ),然后对每个特定的任务进行有区别的微调(discriminative fine-tuning ),可以在这些任务上获得很大的收获。

与以前的方法相比,在微调期间利用任务感知的输入转换来实现有效的迁移,同时只需要对模型体系结构进行最小的更改。

1.2 监督学习/非监督学习

本文的工作属于自然语言的半监督学习。

半监督学习=非监督学习+监督学习

非监督预训练是半监督学习的一种特殊情况,其目标是找到一个良好的初始化点,而不是修改监督学习目标。

使用语言建模目标对神经网络进行预训练,然后在监督下对其进行目标任务的微调。

通俗理解:预训练模型是非监督学习,不需要标签,微调任务是监督学习,需要具体的标签。

1.3 模型框架

本文用的是 TransformerDecoder框架。

为什么选用该框架?

虽然预训练有助于捕获一些语言信息,但 LSTM 模型限制了他们在短期内的预测能力。相反,Transformer 的选择使我们能够捕获更长远的语言结构,同时在其他不同的任务中泛化性能更好。

预训练模型的使用

  • 直接作为模型使用,例如对于分类任务,在其后添加 softmax 层即可;
  • 作为特征模型使用,将预训练模型的输出作为下游任务的特征
  • 在下游监督学习中,将预训练模型的损失函数作为下游任务的辅助目标

学习目标

这种针对NLP任务的半监督学习(无监督的预训练和有监督的微调)有以下三个组成部分:

1) 非监督语言建模(预训练):对于无监督学习,使用标准语言模型目标。
file

2) 监督微调:这部分旨在给定特征或标记 x1,…,xn 下最大化观察标签 y 的可能性。
file

C 是由训练示例组成的标记数据集。
作者为监督微调添加了一个辅助学习目标,以获得更好的泛化和更快的收敛。修改后的训练目标如下:
file

监督微调是通过在transformer模型中添加线性和softmax 层来获得下游任务的任务标签来实现的。

3) 特定任务的输入转换

对于某些任务,比如文本分类,可以直接调整模型。

某些其他任务,如具有结构化输入的问题回答或文本语义,具有有序的句子对或文档、问题和答案的三元组。由于预训练模型是在连续的文本序列上训练的,需要一些修改来将它应用到这些任务中。

转换方法:traversal-style approach

在该方法中,将结构化的输入转换为预训练模型可以处理的有序序列。这些输入转换允许避免跨任务对体系结构进行广泛的更改。

下面对这些输入转换进行了简要描述,所有的转换包括添加随机初始化的开始和结束标记 (\,\)。

文本语义:将前提 (p) 和假设 (h)的分词序列连接,用($)作为两者的分隔符。

相似性:对于该任务,比较的两个句子没有内在的顺序。为了反映这一点,修改输入序列以包含两种可能的句子排序(中间有一个分隔符),并分别处理它们以产生两个序列表示 hml,它们在被输入线性输出层之前按元素对齐想加。

问答和常识推理:对于这些任务,会得到一个上下文文档 z 、一个问题 q和一组可能的答案 {ak} 。将文档上下文和问题与每个可能的答案连接起来,并在两者之间添加分隔以获得 [z;q;$;ak] 。每个序列都用我们的模型独立处理,然后通过softmax层进行归一化,以产生可能答案的输出分布。

file

知乎|GPT-1/GPT-2/GPT-3简介

2 GPT-2

论文:https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
代码:https://github.com/openai/gpt-2

2.1 模型提出

NLP是概率语言模型,对于GPT-1采用的概率条件模型为 p(output|input) 。

GPT-2旨在使用相同的无监督模型学习多个任务,需要将学习目标修改为 p(output|input; task)。这种修改被称为任务条件作用(Task Conditioning),期望模型对不同任务的相同输入产生不同的输出。

此外,GPT-2采用了 Zero Shot,即在下游任务中不进行任何训练或微调。下游不提供任何示例,模型根据给定的指令理解任务。

GPT-2 的输入格式希望模型能够理解任务的本质并提供答案,而不是像GPT-1那样进行微调,重新排列序列。这样做是为了模拟Zero Shot任务转移行为。

例如,在英语到法语的翻译任务中,给模型一个英语句子,后面跟着单词French和提示符 (=) 。该模型应理解这是一个翻译任务,并给出英语句子的法语对应词,如下图所示。
file

3 GPT-3

论文:https://arxiv.org/abs/2005.14165
代码:https://github.com/openai/gpt-3

相比之前的GPT,GPT-3的显著特点是参数很多,是一个巨型模型,如下图所示:
file

GPT-1和 BERT都需要对下游任务进行微调,为此作者猜想,是否可以完全舍去微调,直接使用预训练模型进行预测,为此作者提出了三种训练策略:


相关文章:
YouTube|GPT,GPT-2,GPT-3 论文精读【论文精读】
知乎|GPT-1/GPT-2/GPT-3简介
GPT-1论文:Improving Language Understanding by Generative Pre-Training
拥有自己的ChatGPT太遥远?不如现搭一个中文闲聊GPT-2模型
简单实现 BERT
The Journey of Open AI GPT models

为者常成,行者常至