Transformer中的细节

 

1.Cross self attention

1. 第一个就是这个地方,我们将编码器的输出看成key和value,然后将第一个多头注意力层输出的值看成query.其实这里可以看成Cross Attention,而不是self Attention。Cross Attention会用解码器生成的q来查询编码器生成的k和v。一起计算attention score之后,softmax之后,将编码器的向量v按权相加。
image
image
具体操作是这样的。
cross attention会用解码器生成q,然后Cross Attention会用解码器生成的q来查询编码器生成的k和v。一起计算attention score之后,softmax之后,将编码器的向量v按权相加。我们假设"never say never"通过编码器生成三个向量,接着解码器这边的5个向量,生成对应的q向量。然后编码器这边的三个向量会生成对应的k,v向量。
image
然后我们用解码器这个的q去查询编码器这边的k,也就是做一个内积的操作。得到attention score α,之后这些α再softmax得到对应的α。与对应的v相乘后相加。即可得到我们的输出y1
image
我们这里举的例子是用q1查询得到的y1,然后我们用q2查询会得到y2,用q3查询会得到y3.....用q5查询会得到y5
与传统的self attention一样,这里的cross attention也是输入多少矩阵输出多少矩阵。
image
之后再经过Add&Norm和,Feed Forward,Add&Norm。
image
之后再经过线性层进行输出。

2.共享权重

2. 再算self attention的时候Wk,Wq,Wv是共享权重的。
例如再算这里的时候x1,x2,x3,x4用的同一组参数Wk,Wq,Wv
image

3. Masked Self-Attention
解码器是自回归的,比如说一开始我们只知道<bos>的,然后后面的我们都不知道,都是一些随机的数。
image
接着解码器就会根据编码器的信息和我们仅有的<bos>的信息,经过一顿运算之后就能输出结果"永"。
image
然后这个预测出来的的信息会加入到编码器的输入中。然后解码器就可以结合编码器的信息和<bos>的信息,得到信息
image
之后再根据<bos>,,的信息预测出来
image
.....
最后由<bos>,,,,预测出来<eos>,就结束了。
然后这里就会用到Masked-Attention。我们再预测前面的时候需要将后面的给遮起来。
具体操作是这样的:我们将后面的权重设为负无穷。
image
image
image
比如说我们,再预测到了之后,之后的向量都是随机的数,然后我们进行masked self-attention之后,随机的数字对应的矩阵都是0.
image

3.self attention中维度分析

首先是x向量分别乘上Wq,Wk,Wv,生成q,k,v向量。这里我们以生成q2向量为例子。目标q2的维度是2,输入向量x的维度是3。那么我们就需要训练一个2×3的矩阵进行转换。
image
同样的x3乘上Wq会得到q3x4乘上Wq会得到q4x1乘上Wq会得到q1
image
例如这个例子:
image
和前面一样我们算出来Q,K,V
image

接下来每一个q都会和每一个v做内积计算计算attention score.
这里我们以q2为例子:q2k1内积得到a2,1
image
q2k2内积得到a2,2q2k3内积得到a2,3
q2k4内积得到a2,4.我们将k1进行转置,然后用q2左乘转置后的k1,就得到了a2,1。这里要做四次矩阵运算。为了提高并行性,我们将其整合成一次。
image
然后这个矩阵就是通过q2查询的每个元素的attention score。
同样的我们用q3乘以矩阵kT就得到了q3的全部attention score。
image
然后我们用全部的:
image
我们将a矩阵记为A。
image
之后对每一列的元素进行softmax之后:得到a向量。
image
image
最后我们将刚刚得到的a作为权值,和所有的v向量相乘相加。即可得到我们最终的输出y
image
例如我们y2的结果就是这样的:最后一行是换成矩阵乘法的方式。
image
我们将其符号化就是这样的:
image
同样的我们可以用这种方法得到y3,y4,y1:
image
image
我们把左右拼接好的y向量叫做矩阵Y,左右拼接好的v向量叫做矩阵V。
image
这就是attention的全部运算。

我们用一个例子总的回顾一下:
先通过x矩阵生成Q,K,V
image
然后用KT乘上Q得到attention score:A
image
之后对A进行softmax得到A
image
之后用A乘上矩阵V就得到了输出Y
image

4 Multi-head Attention

以及两个词之间的相关关系,可能并不止一种,因此,我们使用多个头(head)来对不同的相关性进行分析计算。

如下图所示,假如我们现在有两个头,那么我们需要对每个头分别进行学习,得到每个头中的Wqi,Wki,Wvi,然后再进行自注意力的计算。

在第一个头中,我们得到bi,1, 如下图所示:
image
在第二个头中,我们得到bi,2, 如下图所示:
image
bi,1bi,2关注的是不同类型的相关性。

得到了bi,1bi,2之后,我们还是合并bi,1bi,2得到一个合并矩阵,然后与Wo相乘,这样可以保证Multi-head Attention中输入矩阵和输出矩阵的维度相等同时这也是和self attention不同的地方,多了一个Wo。得到汇总了两个不同相关性信息的bi。如下图所示:
image

我们从矩阵维度的角度来看看Self attention和Multi-head Attention:
上图提示了一个输入为两个单词[Thinking,Matchines]的序列在经过自注意力构建后的变换过程:

Self attention

image

  • 通过Embeding层,两个单词的one-hot向量转换为embedding向量X=[x1,x2]

  • 通过三组矩阵运算得到query、key、value值,这三组矩阵的输入都是原来同一个输入向量[x1,x2],这也是被称之为自注意力的原因。
    Q=[q1q2]2×dq=[x1x2]2×dxWdx×dqQK=[k1k2]2×dk=[x1x2]2×dxWdx×dkKV=[v1v2]2×dv=[x1x2]2×dxWdx×dvK

  • 计算query、key间的相似度得分,为了提升计算效率,此处采用缩放点积注意力,其需要query、key向量的维度是相等的,并且都满足零均值和单位方差,此时得分表示:
    score(q,k)=qkdkScore(Q,K)2×2=[s11s12s21s22]2×2=1dk[q1q1q2q2]2×dq[k1k2k1k2]dq×2

  • 对相似度得分矩阵求softmax进行归一化(按axis=1维进行),在实际中由于进行transformer中的输入序列要求是定长的,因此会有补余向量,此时这里softmax会有一个掩蔽操作,将补余部分都置为0。
    softmax([s11 s12s21 s22])=[p11p12p21p22]

  • 乘以value向量得到输出z:
    Z=[z1z2]=[p11p12p21p22][v1v2]

Multi-head Attention

多头注意力是多组自注意力构件的组合,上文已经提到自注意力机制能帮助建立包括上下文信息的词特征表达,多头注意力能帮忙学习到多种不同类型的上下文影响情况,比如"今天阳光不错,适合出去跑步",在不同情景下,"今天"同"阳光"、"跑步"的相关性是不同,特别是头越多,越有利于捕获更大更多范围的相关性特征,增加模型的表达能力。
image
上图描述了多头注意力的处理过程,其实际上将多个自注意机制的产出再经过参数矩阵得到一个新输出。我们将上述自注意步骤引入多头情况,介绍如何通过矩阵来计算,其由3组自注意力组合,输入为2个单词的序列。

  • query、key、value表征向量的计算
    [q11q12q13q21q22q23]2×3dq=[x1x2]2×dxWdx×3dqQ[k11k12k13k21k22k23]2×3dk=[x1x2]2×dxWdx×3dkK[v11v12v13v21v22v23]2×3dv=[x1x2]2×dxWdx×3dvV

  • 计算query、key间的相似度得分
    score(Q,K)=[s111s121s211s221s112s122s212s222s113s123s213s223]32×2=1dq[q11q11q21q21q12q12q22q22q13q13q23q23]32×2[k11k21k11k21k12k22k12k22k13k23k13k23]32×2

  • 对相似度得分矩阵求softmax

  • 乘以value向量得到各自注意力模块输出,并乘以输出权重矩阵得到最终输出矩阵O,其最终还是得到了多头注意力的输出,其为输出词向量维度,如果其维度等于输入词向量维度时,输出和输入的尺度是一致的,因此多头注意力机制本质仍是特征抽取器。
    Z=[z11z21z12z22z13z23]=[p111p121p211p221p112p122p212p222p113p123p213p223][v1v2v1v2v1v2]O2×do=[z11z12z13z21z22z23]2×3dzW3dz×doo

视频连接

参考连接

posted @   lipu123  阅读(253)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示