NLP-图解self-Attention


一、self-Attention是什么?

假设以下句子是我们要翻译的输入句子:

” The animal didn’t cross the street because it was too tired”

这句话中的“它”指的是什么?它指的是街道还是动物?这对人类来说是一个简单的问题,但对算法来说却不是那么简单。当模型处理 “it” 这个词时,self-attention 允许它把 “it” 和 “animal” 联系起来。

二、 self-Attention实现

第一步: 把输出进行编码得到词向量,构建三个矩阵分别来查询当前词跟其他词的关系,以及特征向量的表达。
在这里插入图片描述

通过将所有输入的词向量拼接到矩阵 X X X 中,并将其乘以我们训练的权重矩阵( W Q W^Q WQ W K W^K WK W V W^V WV)来做实现。
在这里插入图片描述
其中:
Q : q u e r y Q:query Q:query ,要去查询的
K : k e y K:key K:key , 等待被查的
V : v a l u e V:value V:value, 实际的特征信息

第二步: 计算每一个 token 和句子中的每一个 token的相关性。假设我们正在计算第一个单词“Thinking” 的相关性,需要用 “Thinking” 的查询向量 q 1 q_1 q1 分别和 “Thinking”与"Machines" 的 key 值做内积,内积越大,相关性越高。
在这里插入图片描述

在这里插入图片描述

第三步: 防止内积过大, 将上述结果除以 d k d_k dk 的平方根。然后通过 softmax 操作传递结果。Softmax 将分数归一化,因此它们都是正数并且加起来为 1, 表示分数的重要性。

其中: d k d_k dk Q Q Q K K K 矩阵的列数,即句子的长度。
在这里插入图片描述

这个 softmax 分数决定了每个单词在这个位置上的表达量。显然,这个位置的单词将具有最高的 softmax 分数,但有时关注与当前单词相关的另一个单词很有用。
在这里插入图片描述

第四步 将每个 value 向量乘以 softmax 分数并求和。这里是保持我们想要关注的单词的值不变,并忽略不相关的单词(例如,通过将它们乘以像 0.001 这样的微小数字)。
在这里插入图片描述

在这里插入图片描述

总结: 每个词的Q会跟整个序列中每一个K计算得分,然后基于得分再分配特征。
在这里插入图片描述
在这里插入图片描述

三、 Multi-Head Attention实现

一组 Q 、 K 、 V Q、K、V QKV 得到了一组当前词的特征表达,类似卷积神经网络中的filter能不能提取多种特征呢?

多头注意力层提供了多个“表示子空间”。正如我们接下来将看到的,通过多头注意力,我们有多组一组 Q 、 K 、 V Q、K、V QKV 权重矩阵(Transformer 使用八个注意力头) . 这些集合中的每一个都是随机初始化的。在训练之后,每个集合用于将输入的词向量投影到不同的表示子空间中。
在这里插入图片描述

如果我们进行与上述相同的自注意力计算,只是使用不同的权重矩阵进行八次不同的计算,我们最终会得到八个不同的 Z 矩阵:
在这里插入图片描述

我们连接这些矩阵,然后将它们乘以一个额外的权重矩阵 W O W^O WO,得到一个矩阵:
在这里插入图片描述

总结:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大虾飞哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值