GPT1、GPT2…
GPT-1:无监督学习 GPT-1原理介绍 预训练模型(无监督) fine-tuning(有监督) 小结
GPT-2:多任务学习 GPT-2的改进 模型参数 为什么GPT-2能够适应多任务?
GPT-3:海量参数 Abstract Introduction
GPT-1:无监督学习
GPT-1原理介绍
GPT模型主要包含两个阶段,第一个阶段,先利用大量未标注的语料预训练一个语言模型,接着,在第二个阶段对预训练好的语言模型进行微改,将其迁移到各种有监督的NLP任务,并对参数进行fine-tuning。
预训练模型(无监督)
给定一个没有标注的大语料,记每一个序列为 u = u 1 , . . . , u n u = {u_1, …, u_n}u=u1,…,un,GPT通过最大化以下似然函数来训练语言模型:
L 1 ( U ) = ∑ i log P ( u i ∣ u i − k , … , u i − 1 ; Θ ) L_{1}(\mathcal{U})=\sum_{i} \log P\left(u_{i} \mid u_{i-k}, \ldots, u_{i-1} ; \Theta\right)L1(U)=i∑logP(ui∣ui−k,…,ui−1;Θ)
其中,k 表示上下文窗口的大小,这里计算每个单词的预测概率时,只考虑左侧窗口大小的词汇信息(单向Transformer),在GPT中,作者基于一个12层的Transformer decoder作为语言模型的结构,并将decoder的中间那层线性变换删除,其结构和计算过程如下
GPT用的结构和Transformer的encoder、decoder都不一样,encoder是两个线性层,但是没有masked,decoder是三个线性层,有masked。
其中,U = u − k , . . . , u − 1 U={u_{-k}}, … , u_{-1}U=u−k,...,u−1 表示左侧窗口的词汇向量,n表示Transformer的层数,W e W_eWe 表示词向量矩阵,W p W_pWp表示position embedding矩阵,在GPT中,作者对position embedding矩阵进行随机初始化,让模型自己学习,而不是采用正弦余弦函数进行计算。(原Transformer用的三角函数)
从GPT的计算公式来看,其实跟Transformer基本是一样的,只是对每个时间步,都只考虑左侧窗口大小的上下文信息。
由于使用了Masked Self-Attention,所以每个位置的词都不会“看见”后面的词,也就是预测的时候是看不见“答案”的,即避免了see themselves 的问题,保证了模型的合理性,这也是为什么OpenAI采用了单向Transformer的原因。
fine-tuning(有监督)
当语言模型训练结束后,就可以将其迁移到具体的NLP任务中,假设将其迁移到一个文本分类任务中,记此时的数据集为 C ,对于每一个样本,其输入为 x 1 , . . . , x m x^1, …, x^mx1,...,xm,输出为 y yy。对于每一个输入,经过预训练后的语言模型后,可以直接选取最后一层Transformer最后一个时间步的输出向量 h l m h_l^mhlm,然后在其后面接一层全连接层,即可得到最后的预测标签概率:
P ( y ∣ x 1 , . . . , x m ) = s o f t m a x ( h l m W y ) P(y | x^1, …, x^m) = softmax(h_l^m W_y)P(y∣x1,...,xm)=softmax(hlmWy)
其中,W y W_yWy为引入的全来凝结层的参数矩阵。因此,可以得到在分类任务中的目标函数:
L 2 ( C ) = ∑ x , y l o g P ( y ∣ x 1 , . . . , x m ) L_2(C) = \sum_{x,y} logP(y | x^1, …, x^m)L2(C)=x,y∑logP(y∣x1,...,xm)
在具体的NLP任务中,作者在fine-tuning时也把语言模型的目标引入到目标函数中,作为辅助函数,作者发现这样操作可以提高模型的通用能力,并且加速模型手来你,其形式如下:
L 3 ( C ) = L 2 ( C ) + λ ∗ L 1 ( C ) L_3(C) = L_2(C) + λ * L_1(C)L3(C)=L2(C)+λ∗L1(C)
其中 λ一般取0.5。
可以发现,在fine-tuning阶段,此时新增的参数只有最后一层全连接层的参数 W y W_yWy,这比ELMo算法要容易得多。
不过,上面这个例子知识对与文本分类任务,如果是对于其他任务,比如文本蕴涵、问答、文本相似度等,那么GPT该如何进行微调呢?
-
文本蕴涵:对于文本蕴涵任务(文本间的推理关系,问题-答案),作者用一个$负号将文本和假设进行拼接,并在拼接后的文本前后加入开始符 start 和结束符 end,然后将拼接后的文本直接传入预训练的语言模型,在模型再接一层线性变换和softmax即可。
-
文本相似度:对于文本相似度任务,由于相似度不需要考虑两个句子的顺序关系,因此,为了反映这一点,作者将两个句子分别与另一个句子进行拼接,中间用“$”进行隔开,并且前后还是加上起始和结束符,然后分别将拼接后的两个长句子传入Transformer,最后分别得到两个句子的向量表示 h l m h_l^mhlm,将这两个向量进行元素相加,然后再接如线性层和softmax层。
-
问答和尝试推理:对于问答和尝试推理任务,首先将本经信息与问题进行拼接,然后再将拼接后的文本一次与每个答案进行拼接,最后依次传入Transformer模型,最后接一层线性层得到每个输入的预测值。
具体的方法可以查看下图,可以发现,对这些任务的微调主要是:
-
增加线性层的参数
-
增加起始符、结束符和分隔符三种特殊符号的向量参数

小结
-
GPT其实跟ELMO非常相似,只是把语言模型直接迁移到具体的NLP任务中,因此,更容易进行迁移学习。
-
不过GPT主要还是针对文本分类和标注性任务,如果对于生成任务,比如机器翻译等,则其结构也没法进行很好的迁移。
https://zhuanlan.zhihu.com/p/69290203
GPT原理介绍
Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. 2018.
GPT-2:多任务学习
GPT-2继续沿用了原来在GPT中使用的单向 Transformer 模型,而这篇文章的目的就是尽可能利用单向Transformer的优势,做一些BERT使用的双向Transformer所做不到的事。那就是通过上文生成下文文本。
GPT-2的改进
**1. 去掉了fine-tuning层:**不再针对不同任务分别进行微调建模,而是不定义这个模型应该做什么任务,模型会自动识别出来需要做什么任务,是很通用的设计。
**2. 增加数据集:**GPT-2手机了更加广泛,数量更多的语料组成数据集。该数据集包含800万个网页,大小为40G。这些数据是经过过滤后得到的高质量文本。
**3. 增加网络参数:**GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量达到了15亿。(5倍于BERT的参数量)
**4. 调整Transformer:**将layer normalization放到每个sub-block之前,并在最后一个self-attention后再增加一个layer normalization。
-
此外,GPT-2将词汇表数量增加到50257个;最大的上下文大小从GPT-1的512提升到了1024 tokens;batch-size增加到512.
模型参数
-
同样使用了使用字节对编码构建字典,字典的大小:50257
-
滑动窗口大小:1024
-
batch-size:512
-
Layer Normalization移动到了每一块的输入部分,在每个self-attention之后额外添加了一个Layer Normalization
-
将残差层的初始化值用 1 ( N ) \frac{1}{\sqrt(N)}(N)1进行缩放,其中N是残差层的个数
GPT-2训练了4组不同的层数和词向量的长度的模型,见表:
| 参数量 | 层数 | 词向量长度 |
|---|---|---|
| 117M(GPT-1) | 12 | 768 |
| 345M | 124 | 1024 |
| 762M | 36 | 1280 |
| 1542M | 48 | 1600 |
效果如下:
可以看出随着模型的增大,模型的效果是不断提升的。模型仍欠拟合,后续还会加大数据量,做大做强。
为什么GPT-2能够适应多任务?
在训练的时候,采用了多任务的方式,不单单只在一个任务上进行学习,而是多个,每一个任务都要保证其损失函数能收敛,不同任务是共享主题Transformer参数的,进一步提升模型的泛化能力,因此在即使没有fine-tuning的情况下,依旧有非常不错的表现。
在fine-tuning有监督任务阶段,GPT-2根据给定输入与任务来做出相应的输出,那么模型就可以表示成下面这个样子:
p ( o u t p u t ∣ i n p u t , t a s k ) p(output | input, task)p(output∣input,task)
例如可以直接输入:(“自然语言处理”, 中文翻译)来得到我们需要的结果(“Nature Language Processing”),因此提出的模型可以将机器翻译,自然语言推理,语义分析,关系提取等10类任务统一建模为一个分类任务,而不误再为每一个子任务单独设计一个模型。
当我们说GPT2是基于Transformer Decoder的时候,我们在说什么?
Transformer结构及其应用详解–GPT、BERT、MT-DNN、GPT-2
GPT-3:海量参数
Abstract
-
提出问题:最近的许多研究都表明pre-train模型搭配下游任务fine-tune在许多情况下效果显著,但是微调过程需要大量的样本。这一框架不符合人类的习惯,人类只需要少量的示例或说明便能适应一个新的NLP下游任务。
-
主要贡献:本文证明了通过增大参数量就能让语言模型显著提高下游任务在Few-shot(仅给定任务说明和少量示例)设置下的性能,即证明了大规模语言模型使用元学习策略的可能和fine-tuning策略的非必要性
-
具体贡献:
-
训练了包含175billion参数(以往非稀疏语言模型的10倍大小)的GPT3自回归语言模型,并在多个数据集上测试没有fine-tune过程的性能表现。
-
虽然GPT3在文本翻译、问答系统、完型填空、新词使用和代数运算等任务表现不错,但在阅读理解和推理任务数据集上的表现仍有待提高。
-
由于GPT-3的训练依赖于大量的网页语料,所以模型在部分测试数据集上可能出现方法论级别的data containation问题。
-
GPT3能够编写出人类难以区分的新闻文章,本文讨论了该能力的社会影响力。
Introduction
-
提出问题:许多基于RNN或Transformer结构的语言模型通过“pre-train + fine-tune”过程在阅读理解、问答系统等任务中有不俗的性能。然而本文认为上述架构最大的问题在于必须拥有大量的下游任务fine-tune样本才能取得很好的性能。因此,本文基于下述原因认为移除fine-tune是必要的:
-
每一个新的任务都需要大量的标记数据不利于语言模型的应用的。
-
提升模型表征能力的同时降低数据分布的复杂度是不合理的。比如,大模型并不能在样本外推预测时具有好效果,这说明fine-tune导致模型的泛化性降低了。
-
人类在接触一个下游语言任务时不需要大量的样本,只需要一句对新任务的描述或者几个案例。人类这种无缝融合和切换多个任务的能力是我们当前自然语言技术所欠缺的。
-
模型移除fine-tune有2个解决方案:
-
meta-learning(如图1.1):模型在训练阶段具备了一系列模式识别的能力和方法,并通过在预测过程中利用这些能力和方法以快速适应一个下游任务。最近的一些研究尝试通过称为in-context learning的方法来实现上述过程,然而效果距离期待的相差甚远。
-
Large scale transformers:Transformer语言模型参数的每一次增大都会让文本理解能力和其他的NLP下游任务的性能得到提升。此外,有研究指出描述许多下游任务性能的log损失能让模型的性能和参数之间服从一个平滑趋势。考虑到in-context learning会将学习到的知识和方法存在模型的参数中,本文假设:模型的情境学习能力也会随着参数规模的增长而增长。
情境学习(in-context learning):在被给定的几个任务示例或一个任务说明的情况下,模型应该能通过简单预测以补全任务中其他的实例。即,情境学习要求预训练模型要对任务本身进行理解。情境学习三种分类的定义和示例如下:
-
few-shot learning
-
定义:允许输入数条反例和一则任务说明
-
示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,再见->goodbye,购买->purchase,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。
-
-
one-shot learning
-
定义:只允许输入一条范例和一则任务说明
-
示例:向模型输入“这个任务要求将中文翻译为英文。你好->hello,销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。
-
-
zero-shot learning
-
定义:不允许输入任何范例,只允许输入一则任务说明
-
示例:向模型输入“这个任务要求将中文翻译为英文。销售->”,然后要求模型预测下一个输出应该是什么,正确答案应为“sell”。
-
-
本文研究内容:本文训练了一个拥有175billion参数的自回归语言模型(GPT-3),并利用两组NLP数据集和一些全新的数据集评估了模型的情境学习能力和快速适应新任务能力。对于每一个任务,作者都测试了模型“few-shotlearning”,“one-shot learning”和“zero-shot learning”三种条件的性能。虽然GPT-3也支持fine-tune过程,但本文并未测试。
具体GPT-3论文内容看参考文献1,写得非常好,不想再复制粘贴了,直接去原链接[1]看。
GPT-1,GPT-2和GPT-3发展历程及核心思想,GTP-4展望
前言 Generative Pre-trained Transformer(GPT)系列是由OpenAI提出的非常强大的预训练语言模型,这一系列的模型可以在非常复杂的NLP任务中取得非常惊艳的效果,例如文章生成,代码生成,机器翻译,Q&A等,而完成这些任务并不需要有监督学习进行模型微调。而对于一个新的任务,GPT仅仅需要非常少的数据便可以理解这个任务的需求并达到接近或者超过state-of-the-art的方法。 当然,如此强大的功能并不是一个简单的模型能搞定的,GPT模型的训练需要超大的训练语
GPT系列解读–GPT1
GPT-1采用了Transformer架构,并使用了大规模的无监督预训练方法,能够生成连贯的自然语言文本。具体来说,GPT-1使用了一个基于Transformer解码器的自回归语言模型(auto-regressive language model),通过最大化文本序列的概率,预测下一个单词。其中,GPT-1在单个英文句子的语言模型任务上表现最好,达到了0.99的困惑度(perplexity),超过了之前的SOTA模型。GPT-1的成功为基于预训练的自然语言处理模型的发展提供了新的思路和方法。
GPT-1和GPT-2的发展_gpt1_hyzhyzhyz12345的博客
1、预训练(无监督样本) gpt1.0的语言模型是auto regressive language model,由序列的上文推断下文。gpt1.0处理非监督序列文本(?1,?2,…,??),采用最大似然估计方法来训练,其损失函数为L1(X),不断通过SGD策略调整神经网络的…
GPT系列:GPT1 -> 2 -> 3 -> InstructGPT ->ChatGPT_gpt 系列_zhurui…
在没有见过数据的zero-shot任务中,GPT-1的模型要比基于LSTM的模型稳定,且随着训练次数的增加,GPT-1的性能也逐渐提升,表明GPT-1有非常强的泛化能力,能够用到和有监督任务无关的其它NLP任务中。GPT-1证明了transformer对学习词向量的…
通俗易懂的GPT原理简介
综上所述,GPT是自然语言处理领域中最强大的模型之一,它的出色表现已经使得它在各种应用场景中得到了广泛的应用。GPT1、GPT2、GPT3、InstructGPT
GPT1、GPT2、GPT3、InstructGPT
GPT-1面试题_onlyfansnft.art的博客
GPT-1 是一种用于自然语言处理的机器学习模型,它是基于 Transformer 架构的。它是 OpenAI 在 2018 年发布的第一个 GPT 模型,有 1.17 亿个参数,比之前的语言模型有了显著的提升。GPT-1 的一个优点是它能够根据给定的提示或…

李宏毅自然语言处理——GPT3简介
热门推荐
超级火的GPT3还不知道吗?
从GPT到chatGPT(一):GPT1
GPT1,出自于OpenAI的论文,是最早的将transformer以多层堆叠的方式构成语言模型的模型,其出现时间早于BERT,但二者有一个最大的区别在于BERT只用的是transformer的encoder层,而GPT1只用了transformer的decoder层。除此以外二者在目标函数等地方也有各自的方法,感兴趣的可以自行阅读对比,这里不再展开。我们通过单一任务不可知(task-agnostic)模型实现了一个强大的自然语言理解框架,主要包括生成性预训练和区分性微调两部分。
GPT/GP2/GPT3
GPT,GPT-2,GPT-3 论文精读【论文精读】_哔哩哔哩
笔记:李沐老师GPT系列讲解 – 知乎今天分享的是李沐大神讲解GPT系列论文的读书笔记。GPT可以简单理解为是transformer的解码器。 GPT,GPT-2,GPT-3 论文精读【论文精读】_哔哩哔哩_bi
最新最全GPT-3模型网络结构详细解析

最近,GPT3很火,现在有很多讲GPT-3的文章,比如讲解它可以做什么, 思考它的带来的影响, 可视化其工作方式。看了这些文章并不足以详细了解GPT-3模型,仍然需要认真研究相关论文和博客。 因此,本文主要目标:帮助其他人对GPT-3体系结构有一个尽可能详细的了解。 原始模型 首先,原始的Transformer和GPT模型的网络结构如下图所示: 上图详细描述了GPT-3网络结构基础,要深入学习其网络结构,仍需进一步深入研究。 输入与输出 在了解其他内容之前,我们需要知道:GP..
总结GPT1和GPT2
【NLP】预训练模型——GPT1
废话不多说,先把三篇论文链接放出来:GPT1:Improving Language Understanding by Generative Pre-Training、GPT2:Language Models are Unsupervised Multitask Learners、GPT3:Language Models are Few-Shot Learners。李沐老师也在B站上放了介绍GPT模型的视频:GPT,GPT-2,GPT-3 论文精读【论文精读】.首先我们理一下Transformer出现后一些语
gpt2-chinese-cluecorpussmall
包括模型,配置文件等预训练相关的文件
这就是GPT 的画车水平
ChatGPT 大家都比较熟悉了,这次笔者让它的同门师兄弟 Dall-E 来为大家画车。 ChatGPT 和 Dall-E 同属 OpenAI,且都来自于 GPT 架构,OpenAI 旗下还有个重磅产品叫 CLIP,有兴趣的小伙伴可以去了解了解,因为涉及到很专业的内容,就不过多赘述了。 除此之外,
keras-gpt-2:加载GPT-2检查点并生成文本
凯拉斯GPT-2 [| ] 加载预训练的权重并使用预测。
保存之前阶段训练的参数,在上述结构的基础上,去掉softmax层,然后加上一层全连接层与特定任务的softmax,然后用有标签的数据集训练,在这期间,半监督学习的参数可以选择处于冻结状态,然后只更新新的全连接层参数。GPT-1主要针对的是生成型NLP任务,如文本生成、机器翻译、对话系统等。GPT-2在初代的模型架构上变得更大了,参数量达到了1.5B,数据集改为百万级别的WebText,Bert当时最大的参数数量为0.34B,但是作者发现模型架构与数据集都扩大的情况下,与同时期的Bert的优势并不大。