深入对比:GPT模型与Transformer的异同分析

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内容进行对比


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,具体的操作如下所示。



可以看到,经过Mask和Softmax之后,当GPT根据单词A预测单词B时,只能使用单词A的信息,根据[A,B]预测单词C时只能利用单词A,B的信息,这样就能防止信息泄漏。

下图是GPT整体模型图,其中包含了12个Decoder。


GPT训练过程

GPT训练过程分为两个部分:无监督预训练语言模型和有监督的下游任务

预训练语言模型

3.1 预训练语言模型

给定句子U=[u1,u2,…un],GPT训练语言模型需要最大化下面的似然函数


可以看到GPT是一个单向的模型,GPT的输入用h0表示,h0的计算公式如下。


其中

W

P

W_{P}

W

P

是单词的position Embedding,

W

e

W_{e}

W

e

是单词的word embedding。用voc表示词汇表的大小,pos表示最长句子的长度,dim表示Embedding的维度,则

W

p

W_{p}

W

p

是一个pos
*dim的矩阵,

W

e

W_{e}

W

e

是一个voc*
dim的矩阵。

得到输入

h

0

h_{0}

h

0

之后,需要将

h

0

h_{0}

h

0

依次传入GPT的所有Transformer Decoder里,最终得到

h

t

h_{t}

h

t


3.2 下游任务fine-tuning

GPT经过预训来之后,会针对具体的下游任务对模型进行微调,微调的过程采用的是有监督学习,训练样本包括单词序列

[

x

1

,

x

2…

x

m

]

[x1,x2…xm]

[

x

1

,

x

2

.

.

.

x

m

]

和类标y。GPT微调的过程中根据单词序列[x1,x2,…xm]预测类标y。

w

y

w_{y}

w

y

表示预测输出的参数,微调时候需要最大化以下函数


GPT在微调的时候也考虑预训练的损失函数,所以最终需要优化的函数为:


4.GPT总结

GPT预训练时利用上文预测下一个单词,BERT是根据上下文预测单词,因此在很多NLU任务上,GPT效果都比BERT要差。但是GPT更加适合用于文本生成的任务,因为文本生成通常都是基于当前已有的信息,生成下一个信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值