对Transformer的深入理解和思考(Train and inference process)

本文详细探讨了Transformer模型在处理文本依赖性与并行计算方面的优势,重点关注Encoder的自注意力机制和Decoder的训练与推理过程,以及如何通过多头和自回归实现高效文本处理。
摘要由CSDN通过智能技术生成

思想是卷着的绣毯,语言是铺开的绣毯。

本文主要侧重于对transformer整体训练和推理过程的理解和深入思考。

Transformer厉害之处总结下来就是两点:第一点在于它可以处理文本中长距离的依赖关系(不管两个单词相距有多远),在RNN中,不论是encoder还是decoder,都存在一个短期记忆,当输入序列过长的时候就会出现遗忘现象,而transformer就完全解决了这个问题;第二点在于它可以并行计算,主要体现在encoder的训练和推理过程以及decoder的训练过程中(注意decoder的推理过程无法体现并行)。

对于Encoder(训练过程和推理过程一致):

首先input sequence经过embedding之后,每一个token用一个dim维的向量表示(词嵌入是单射且同构的),然后加入positional encoding,使每一个token有自己独有的位置信息,然后进入encoder堆栈,在每一个encoder中,首先是做一个多头自注意力运算,这里的自注意力计算我们可以把它理解为每个token按照它和其它token的相关度(包括自己)加权求和,最终生成一个具有上下文依赖的抽象表示向量,对于“多头”,我们可以理解为从不同的子空间并行计算该序列的自注意力,每一个“头”,关注的点不一样,从而更好地理解复杂数据内部的结构和特征,之后将每一个头concat形成一个新的特征矩阵,该特征矩阵之后经过一个可训练的方阵进行特征融合,之后经过一个MLP头进行特征提取,输出的是对input sequence重新编码过的一个特征矩阵,并作为decoder中cross-attention中的K,V向量。

对于Decoder:

Train process:

比如输入的句子是"I love you",首先,经过和encoder一样的embedding层、Positional Encoder层,接下来我们看下图:

输入是加入了一个shifted right,也就是<start>标记,进入掩码自注意力层,生成一个全新的向量,该向量作为Q查询矩阵和encoder中的编码K、V做一个cross-attention计算,最后经过一个MLP头和softmax归一化处理,变成一个vocal维的向量,从而teacher forcing(每次预测下一个词不需要)地并行预测下一个词的概率,然后交给损失函数,从而进行梯度的反向传递。

Inference process:

自回归方式,串行输出(在此不多赘述)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值