transformer原理

Transformer注意力架构原理

输入层

embedding词嵌入向量

将文本中词汇的数字表示转变为向量表示,在这样的高维空间捕捉词汇间的关系

语义相近的词语对应的向量位置也更相近

每个词先通过词典转换成tokenId,在把tokenId转化为一个512纬的向量

位置编码

将每个词的位置向量(通过位置编码矩阵算出)增加到文本嵌入层输出向量中,这样输入层的向量就有了位置的信息

编码层

注意力层

注意力流程

Q通过K,V挖掘到KV中更重要的权重,把Q生成一个新的V

通过Q通过K在张量层面获取注意力(占比),在把占比乘以V就获得了新的张量作为获得注意力的张量

Q和K主要是为了获得占比

注意力机制公式

QKt是矩阵Q乘矩阵K的转置

处以√dk解决梯度消失的问题

softmax是计算出通过矩阵运算后的Q对于K的占比

最后乘以V是通过比例和值的乘运算获得最终的结果

自注意力

自注意机制的Q=K=V,通过转置计算,每个词都和其他所有词进行了计算

他的优点还在于,可以直接跨越一句话中不同距离的词,远距离学习到序列的只是依赖和语序结构

多头注意力机制

将句子词向量切分成多个部分每个部分分别进行注意力处理,最后再拼接到一起

多头可以在更细致的层面上提取不同的head的特征,提取特征的效果更好

规范化层norm

它是所有深层网络模型都需要的标准网络层

随着网络层数的增加,通过多层的计算后参数可能开始出现过大或过小的情况,这样可能会导致学习过程出现异常,模型可能收敛非常的慢. 因此都会在一定层数后接规范化层进行数值的规范化,使其特征数值在合理范围内

子层连接结构(残差连接)add

残差连接是2015年提出的论文解决神经网络深度过大导致的问题

神经网络模型在深度到达一定程度后,会造成梯度消失、梯度爆炸等问题

将浅层的输出和深层的输出求和,作为下一阶段的输入

通过残差连接这样一个简单的处理,成功将上百层的模型得以收敛,从而在分类任务中达到了更高的精度,在2016年resnet的改进中,模型的深度达到了1000层

Add & Norm

Add表示残差连接,Norm表示规范化层

对于每一个EncoderBlock,两个子层后面都有Add & Norm

对于每一个DecoderBlock,三个子层后后面都有Add & Norm

残差连接可以让信息传递的更深,增强了模型的拟合能力

规范化层,可以让模型减少参数过大过小的问题,防止模型收敛慢的问题

前馈全连接层Feed Forward

在Transformer中前馈全连接层就是具有两层线性层的全连接网络

考虑注意力机制可能对复杂过程的拟合程度不够, 通过增加两层网络来增强模型的能力

前馈全连接层由两个线性变化组成,中间有一个Relu激活函数

原始论文中的前馈全链接层输入和输出的纬度都是512,层内连接纬度是2048,均采用4倍的关系

前馈全链接层作用:单纯的多头注意力机制不足以提取到理想的特征,因此增加全链接层来提升网络的能力

编码器

Encoder部分是6个一模一样的Encoder Block层层堆叠在一起(网络串行)

解码层

第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接

多头自注意力层:需要做掩码,来遮掩未来的信息,提升模型的能力

对于生成类模型就是一个字一个字的崩出来,不能提前给模型透露未来的信息,如果透露了,他预测的能力会下降

第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接

多头注意力层:Q来自于Decoder端,KV来源于Encoder端

为什么要让原始文本(编码器输入)作为K V,翻译文本作为Q呢

训练过程中,要让目标文本在原始文本中提取到更重要的信息

预测过程中,更是要让生成文本在原始文本中提取到更重要的信息

谁更重要,谁信息量更大,谁就要在K V(通常K V是一样的)

这样设计的目的是为了让Decoder端的token能够给予Encoder端对应的token更多的关注

第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接

输出层

全连接线性层+softmax激活函数获得最终的结果

Transformer相比于传统RNN的优势

Transformer能够利用分布式GPU进行并行训练,提升模型训练效率

Encoder并行化

Embedding层(输入)、前馈全链接层、规范化残差连接层,都可以进行并行化

从Embedding层到注意力层之间因为存在依赖关系,这两个阶段无法并行

在注意力层因为采用了矩阵运算,可以一次性计算所有主力张量的计算,数学上也是一种并行化的体现

Encoder在训练和预测阶段都可以实现并行化

Decoder并行化

Embedding层(输入)、前馈全链接层、规范化残差连接层,都可以进行并行化

在注意力层因为采用了矩阵运算,可以一次性计算所有主力张量的计算,数学上也是一种并行化的体现

Decoder在训练阶段可以并行化阶段

Decoder在预测阶段不可并行化阶段

在分析预测更长的文本时, 捕捉间隔较长的语义关联效果更好

基于注意力的机制设计本身就能跨越较长文本,提取长文本特征,并通过注意力权重提现到embedding中