机文章

gpt⑵GPT:GPT系列:GPT⑴详解 这都可以

 

互联网已经成为了我们生活中没有可或缺的1部分,它带来了许多惊喜和改变。今天,让我们聚焦在互联网领域最近发生的1些令人激动的事件上,共同探索这个充满无限可能的天下

由于众所周知的原因,没有没有复习1下GPT系列的论文以此为记录,先从GPT1开始,后面GPT2、GPT3都会有,其它得生成式的大模型也会陆续更新1. 概述NLP包含很多类型的任务,包括文本分类、文本匹配等。

现在支流的做法是通过人工标注数据,针对某个具体场景训练1个模型,这也使得这种方法在缺标注数据的场景下很难奏效在这些场景下,往往会有很多未标注数据可以利用起来,在无标注的情况下也能较好的完成相应的任务,甚至比监督学习的效果更好。

之前的词向量的训练就是1个很好的例子,像word2vec这种基本就是在无标注的情况下训练得到的,曾经也是被广泛使用的利用无标注文本进行学习仍存在两个待解决的问题:1.目前尚没有清楚哪种类型的优化目标在学习文本表征方面最有效。

当下有很多研究在没有同的任务顶用没有同的优化目标而达到最优;2.如何将学习到的文本表征用于下流任务也没有明确现有的方法1般是针对下流任务更改模型结构等;本文提出1种半监督的方法GPT,用于自然语言理解任务,GPT的整体流程结合了无监督的预训练和有监督的微调。

目标旨在学习到1种通用的表征能够以极小的代价用于各种下流任务本质上GPT1是基于Transformer的Decoder(变体)开发的二. GPT1训练过程整体上分为两步:1)在大规模文本数据上学习到1个高容量的语言模型;2)在标注数据长进行微调;。

这两步训练步骤和BERT系列模型类似,也说明GPT1这个时期在生成时模型解决任务的流程上和BERT是1致的1. 无监督预训练给定1个无监督token序列U=u1,u2,...,un\mathcal{U}={u_1,u_2,...,u_n}。

,用1个标准的语言模型目标去极大化这个似然函数:L1(U)=∑ilogP(ui|ui−k,...,ui−1;θ)L_1(\mathcal{U})=\sum_{i}logP(u_i|u_{i-k},...,u_{i};\theta) \\

其中k是高低文滑窗的大小,θ\theta为神经网络模型的参数,用SGD去更新参数GPT1所谓的神经网络模型其实就是multi-layer transformer decoder,1种对transformer的改进(原始的Transformer Decoder相比,因为只用到decoder,没用到encoder,所以把decoder中encoder相关的Encoder-Decoder Attention层删除了,只保留了Masked Multi-Head Attention 层和Feed Forward层)。

将输入高低文token输入进multi-head self-attention,然后再接1层position-wise feedforward去输出1个token的分布:h0=UWe+Wph_0 = UW_e + W_p \\

hl=transformerblock(hl−1),∀i∈[1,n]h_l = transformer_block(h_{l}),\forall i \in [1,n] \\P(u)=softmax

(hnWeT)P(u) = softmax(h_nW_e^T) \\其中,U=(u−k,...,u−1)U=(u_{-k},...,u_{})是高低文token对应的embedding向量,n是decoder的层数,

WeW_e是token embedding矩阵,WpW_p是position embedding矩阵Decoder的修改(相较于Transformer decoder):1.Transformer Decoder:Masked multi-head self-attention + encoder-decoder multi-head self-attention +feed forward。

2.GPT Decoder:Masked multi-head self-attention+ feed forward2.监督微调设标注数据为C\mathcal{C},每个样本的输入为1个token序列:

x1,x2,...,xmx^1, x^2,...,x^m,对应的标签为y将token序列输入到预训练模型中,获取最后1个transformer decoder的输出hlmh_l^m,然后将hlmh_lm。

输入到参数为WyW_y的线性输出层去预测y:P(y|x1,...,xm)=softmax(hlmWy)P(y|x^1,...,x^m)=softmax(h_l^m W_y) \\接下来就是极大化以下目标函数:

L2(C)=∑(x,y)logP(y|x1,...,xm)L_2(\mathcal{C})=\sum_{(x,y)}logP(y|x^1,...,x^m) \\GPT的实验中发现,加入语言模型学习目标作为辅助任务,也就是损失函数中加入

L1(u)L_1(\mathcal{u})能带来两点好处:1.提升监督模型的泛化能力;2.加快收敛;因此,最终的优化目标如下:L3(C)=L2(C)+λL1(C)L_3(\mathcal{C}) = L_2(\mathcal{C})+\lambda L_1(\mathcal{C}) \\

3.特定任务的输入调整针对文本分类之类的任务,可以按照上述步骤进行微调但是类似于问答、文本蕴含之类的以有序的句子对作为输入的任务,就需要根据这些特定的任务做1些修改论文针对没有同的任务提出了没有同的修改,将输入数据进行规范化以满足模型要求。

具体对应的结构可以看Figure 1.

3. 实验1. 设置无监督预训练: 数据集1为BooksCorpus dataset,包含了超过7000本多领域的书该数据集包含很多长的连续的文本,也使得模型能够学习到长距离的信息数据2是Word Benchmark,和ElMo的数据集1样,但在句子层面进行了打乱。

模型细节: 结构上,GPT是12层的decoder-only transformer with masked self-attention heads优化器用的是Adam最大学习率是2.5e,基于余弦schedule变化的。

编码使用的是bytepair encoding(BPE).微调细节 对于大多数任务,学习率是6.25e,batch size是32. λ\lambda是0.5.2. 数据集Table 1表明了评估模型的各个任务,及对应的使用的数据集。

3.实验结果Table 2是在自然语言推理NLI任务上的表现,可以看出除了在RTE这个数据集以为,其它数据集都能达到sota当然这个结果已经比较早了,GPT1毕竟是18年的模型,对比的模型现在看来也没有是很先进的。

Table 3是在问答和常识推理任务的表现,均达到最优,也说明的GPT1对long-range contexts的学习很没有错。

Table4是关于语义相似和分类任务的评估

4. 结果分析1)层数的影响:Figure 2左图展现了随着层数的增加,效果的增加说明预训练的每1层都对下流任务带来没有同的信息2)Zero-shot的表现:Figure 2右边展示的没有用微调,而直接用预训练用于各种任务的结果,虚线是LSTM,实线是Transformer。

比较直接的说明了,就预训练而言,Transformer的迁移能力比LSTM好3)消融实验:Table 5是做的1些消融实验次要3个方面,1.第1个是针对以语言模型学习目标作为辅助任务来进行训练是否有提升,结果是在QQP和NLI数据集上有帮助,其它的则无,说明针对大规模数据集而言,针对小规模数据集则无提升。

2.针对Transformer和LSTM的对比,除了MRPC以外,Transformer均更优优势3.针对预训练带来的提升进行的实验,结果现实如果没有预训练,则所有任务表现均下落

四. GPT特点1.优点特征抽取器使用了强大的 Transformer,能够捕捉到更长的记忆信息,且较传统的 RNN 更易于并行化;transformer的并行化可以参考 https://zhuanlan.zhihu.com/p/36

85925512.缺点GPT 最大的问题就是传统的语言模型是单向的;五. GPT ELMo,BERT的区别5.1 GPT ELMo 的区别模型架构没有同:ELMo 是浅层的双向 RNN;GPT 是多层的 Transformer decoder。

针对下流任务的处理没有同:ELMo 将词嵌入添加到特定任务中,作为附加功能;GPT 则针对所有任务微调相同的基本模型5.2 GPT BERT 的区别预训练:GPT 预训练的方式和传统的语言模型1样,通过上文,预测下1个单词;BERT会同时利用高低文的信息。

模型效果: GPT 因为采用了传统语言模型所以更加适合用于自然语言生成类的任务 (NLG),因为这些任务通常是根据当前信息生成下1刻的信息而 BERT 更适合用于自然语言理解任务 (NLU)(当然这是之前的说法,现在chatgpt出来以后哪个更适合NLU任务还真没有1定)。

模型结构: 模型结构:GPT 采用了 Transformer 的 Decoder,而 BERT 采用了 Transformer 的 EncoderGPT 使用 Decoder 中的 Mask Multi-Head Attention 结构。

六. 简单总结GPT是基于Transformer decoder的变体构成的模型,针对各种任务的思路仍然是pretrain+fintune,在当时和Bert的思路1样,都是比较先进的思路只没有过从现在chatgpt的生成式处理思路来看,其实差距还是挺大的,虽然名字都是gpt...。

finetune的思路带来的问题就是针对某1种任务就以某1种结构和相应场景的数据去做,并没有是通用的这个在GPT后面会改进,关于GPT应该这两天会复习下论文,也相应地写1篇文章再

本文转载于万像专栏:https://www.wanxiangsucai.com/read/

为您推荐

gpt⑵GPT:GPT系列:GPT⑴详解 这都可以

gpt⑵GPT:GPT系列:GPT⑴详解 这都可以

由于众所周知的原因,不得不复习一下GPT系列的论文。以此为记录,先从GPT1开始,后面GPT2、GPT3都会有,其它得生成...

2023-08-26 栏目:互联网+

当前非电脑浏览器正常宽度,请使用移动设备访问本站!