Transformer里的自注意力机制

一、

Transformer的内部结构图如下:
在这里插入图片描述
左侧为编码块(Encoder block),右侧为解码块(Decoder block)。红框中的部分为多头注意力模块(Multi-Head Attention),是由多个自注意力(Self-Attention)组成的,可以看到Encoder block包含一个Multi-Head Attention,而 Decoder block包含两个Multi-Head Attention。Multi-Head Attention上方还包括一个Add&Norm层,Add表示残差连接(Residual Connection)用于防止网络退化,Norm表示Layer Normalization,用于对每一层的激活值进行归一化。

自注意力是组成多注意力机制的基本单元。
在这里插入图片描述

在整个注意力过程中,模型学习了三个权重:查询(query)、键(key)和值(value)。
类比到数据库中需要查询一本书,键即为书名,值为要查询的书。需要计算query和图书馆里所有作者名字(key)的相似度,返回相似度最高。也就是需要计算查询和键的相似度,然后返回对应的书(value)。

二、

对于输入单词,会首先经过embedding将单词编码成词向量X,对于每个词向量Xi,再计算该词向量对应的Q,K,V,它们都具有与输入embedding相同的维数模型在训练中学习它们的值。
从每个单词中创建一个512维的向量。对于每个embedding,都将其与Q,K,V矩阵分别相乘(大小为512*512),每个embedding都将有3个长度为512的中间向量。
接下来计算查询(value)与键(key)之间的点积(score)。这个计算得到的点积代表的是在某个位置编码单词时,对输入句子的其它部分的关注程度。
然后将点积除以key向量维数的平方根。因为当向量维数过大或者过小时,点积同样可能出现过大或者过小的情况,这会导致训练期间的数值不太稳定。选择比例因子是为让点积的方差近似等于1。
在这里插入图片描述
然后再通过softmax操作将分数标准化,使分数都为正且加起来等于1。softmax输出决定了每个单词的权重,也就是从不同的单词中获取多少信息或特征。
最后一步就是计算softmax与这些值的乘积并相加,得到最终的输出矩阵Z。

三、计算tricks

查询键和矩阵的计算方法等:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
score和注意力输出:
在这里插入图片描述
公式:
在这里插入图片描述

四、多头注意力

在二的结尾部分得到了自注意力的输出矩阵Z。而Multi-Head Attention是由多个自注意力机制组合形成的,如下图所示。
在这里插入图片描述
分别将输入X传递到h个不同的Self-Attention,计算得到h个输出矩阵Z。Multi-Head Attention 将h个矩阵Z拼接在一起,然后传入一个Linear层,得到Multi-Head Attention最终的输出Z。
在这里插入图片描述
公式
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值