GPT模型与Transformer进行对比

发布于:2023-05-01 ⋅ 阅读:(598) ⋅ 点赞:(0)

gpt2与gpt的模型结构差别不大,但是采用了更大的数据集进行实验。
gpt采用的训练方法分为两步,第一步利用没有标签的文本数据集训练语言模型,第二步是根据具体的下游任务,例如QA,文本分类等对模型进行微调。
预训练:和传统的语言模型一样通过上文预测下一个单词
例如给定一个句子[u1,u2,…un],GPT在预测单词ui的时候只会利用[u1,u2,…u(i-1)]的信息,而BERT会利用[u1,u2,…,u(i-1),u(i+1),…un]的信息
不同模型的区别模型效果:GPT因为采用了传统语言模型所以更加适合用于自然语言生成类的任务(NLG),因为这些任务是根据当前信息生成下一刻的信息,而BERT更是和用于自然语言理解任务(NLU)。
模型结构:GPT采用了Transformer的Decoder,而BERT采用了Transformer中的Encoder。GPT使用Decoder中的Mask Multi-Head Attention结构,在使用[u1,u2,…u(i-1)]预测单词ui的时候,会将ui之后的单词Mask掉。
2.原装的Transformer Decoder和GPT Decoder内容进行对比
原装的Transformer Decoder和GPT Decoder对比GPT使用句子序列预测下一个单词,因此要采用Mask Multi-Head Attention对单词的下文遮挡,防止信息泄漏。例如给定一个句子包含4个单词[A,B,C,D],GPT需要利用A预测B,利用[A,B]预测C,利用[A,B,C]预测D,而预测B的时候,需要将[B,C,D]Mask起来。
Mask是在Self-Attention进行Softmax之前进行的,具体做法是将Mask的位置用一个无穷小的数替换-inf,然后再softmax,具体的操作如下所示。
Softmax之前需要MaskGPT Softmax之后原先的-inf变为0可以看到,经过Mask和Softmax之后,当GPT根据单词A预测单词B时,只能使用单词A的信息,根据[A,B]预测单词C时只能利用单词A,B的信息,这样就能防止信息泄漏。
下图是GPT整体模型图,其中包含了12个Decoder。
GPT中12个Decoder的结构GPT训练过程
GPT训练过程分为两个部分:无监督预训练语言模型和有监督的下游任务
预训练语言模型
3.1 预训练语言模型
给定句子U=[u1,u2,…un],GPT训练语言模型需要最大化下面的似然函数
最大化似然函数内容可以看到GPT是一个单向的模型,GPT的输入用h0表示,h0的计算公式如下。
h0的计算公式其中 W P W_{P} WP是单词的position Embedding, W e W_{e} We是单词的word embedding。用voc表示词汇表的大小,pos表示最长句子的长度,dim表示Embedding的维度,则 W p W_{p} Wp是一个posdim的矩阵, W e W_{e} We是一个vocdim的矩阵。
得到输入 h 0 h_{0} h0之后,需要将 h 0 h_{0} h0依次传入GPT的所有Transformer Decoder里,最终得到 h t h_{t} ht
得到ht的对应内容3.2 下游任务fine-tuning
GPT经过预训来之后,会针对具体的下游任务对模型进行微调,微调的过程采用的是有监督学习,训练样本包括单词序列 [ x 1 , x 2... x m ] [x1,x2...xm] [x1,x2...xm]和类标y。GPT微调的过程中根据单词序列[x1,x2,…xm]预测类标y。
微调的函数内容 w y w_{y} wy表示预测输出的参数,微调时候需要最大化以下函数
微调时需要最大化的函数GPT在微调的时候也考虑预训练的损失函数,所以最终需要优化的函数为:
需要优化的函数内容4.GPT总结
GPT预训练时利用上文预测下一个单词,BERT是根据上下文预测单词,因此在很多NLU任务上,GPT效果都比BERT要差。但是GPT更加适合用于文本生成的任务,因为文本生成通常都是基于当前已有的信息,生成下一个信息。

本文含有隐藏内容,请 开通VIP 后查看