Transfermer中的Attention计算过程详解


  • Attention计算过程详解

    1、为编码器创建三个向量 Query , Key , Value

    过程如下:
    1)input的单词Thinking、Machines向量化之后变成向量 x 1 x_1 x1 x 2 x_2 x2(这里假设为4维)
    2) x 1 x_1 x1 x 2 x_2 x2分别乘以3个权重矩阵 W Q W^Q WQ W K W^K WK W V W^V WV (这里维度均为4*3)

    x 1 ∗ W Q = q 1 x_1*W^Q=q_1 x1WQ=q1 ( q 1 q_1 q1维度为3)
    x 2 ∗ W Q = q 2 x_2*W^Q=q_2 x2WQ=q2 ( q 2 q_2 q2维度为3)

    x 1 ∗ W K = k 1 x_1*W^K=k_1 x1WK=k1 ( k 1 k_1 k1维度为3)
    x 2 ∗ W K = k 2 x_2*W^K=k_2 x2WK=k2 ( k 2 k_2 k2维度为3)

    x 1 ∗ W V = v 1 x_1*W^V=v_1 x1WV=v1 ( v 1 v_1 v1维度为3)
    x 2 ∗ W V = v 2 x_2*W^V=v_2 x2WV=v2 ( v 2 v_2 v2维度为3)

    q 1 、 q 2 q_1、q_2 q1q2即为单词Thinking、Machines的向量 Query,
    k 1 、 k 2 k_1、k_2 k1k2即为单词Thinking、Machines的向量 Key,
    v 1 、 v 2 v_1、v_2 v1v2即为单词Thinking、Machines的向量 Value,

    详细过程如下图:
    在这里插入图片描述

    2、计算每个词的attention值及输出向量

    以计算 “Thinking” 的 attention为例,根据这个单词对输入句子的每个单词进行评分,这个分数决定了对其他单词放置多少关注度。

    计算步骤:
    1) q 1 q_1 q1乘以每个位置的 k i k_i ki,这里得到 s c o r e 1 , s c o r e 2 score_1, score_2 score1,score2
    2)将 s c o r e 1 , s c o r e 2 score_1, score_2 score1,score2都除以8 (因为论文中使用的 key 向量的维数是 64,8 是它的平方根,这样可以有更稳定的梯度),再输入到softmax得到概率,即为 “Thinking”对每个词的Attention值。
    3)将Attention值乘以每个 v i v_i vi,再加权求和,就得到 “Thinking” 的输出向量 z 1 z_1 z1
    4)重复上述过程即可计算出每个词的 z i z_i zi

    详细过程如图:
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

szZack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值