自注意力计算举例

假设我们有一个输入序列,其中包含4个单词,每个单词的隐藏表示维度为3。现在我们要计算这个输入序列的自注意力。

首先,我们有以下参数:

  • 查询向量(query):维度为3
  • 键向量(key):维度为3
  • 值向量(value):维度为3

假设输入序列的隐藏表示如下:

 

Copy Code

输入序列 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

接下来,我们将查询向量、键向量和值向量分别乘以权重矩阵进行线性变换。假设权重矩阵如下:

 

Copy Code

WQ = [[0.5, 0.3, 0.2], [0.1, 0.7, 0.4], [0.6, 0.2, 0.9]] WK = [[0.8, 0.6, 0.3], [0.2, 0.9, 0.5], [0.7, 0.1, 0.4]] WV = [[0.9, 0.2, 0.7], [0.3, 0.5, 0.1], [0.6, 0.8, 0.4]]

计算查询线性变换结果:

 

Copy Code

查询线性变换 = 输入序列 × WQ = [[1, 2, 3], [[0.5, 0.3, 0.2], [4, 5, 6], × [0.1, 0.7, 0.4], [7, 8, 9], [0.6, 0.2, 0.9], [10, 11, 12]] [0.6, 0.2, 0.9]] = [[2.3, 2.1, 3.7], [5.7, 5.6, 8.8], [9.1, 9.1, 14.1], [12.5, 13.1, 19.5]]

计算键线性变换结果:

 

Copy Code

键线性变换 = 输入序列 × WK = [[1, 2, 3], [[0.8, 0.6, 0.3], [4, 5, 6], × [0.2, 0.9, 0.5], [7, 8, 9], [0.7, 0.1, 0.4], [10, 11, 12]] [0.7, 0.1, 0.4]] = [[4.5, 3.1, 2.6], [12.6, 8.4, 7.2], [20.7, 13.7, 11.8], [28.8, 19.0, 16.4]]

计算值线性变换结果:

 

Copy Code

值线性变换 = 输入序列 × WV = [[1, 2, 3], [[0.9, 0.2, 0.7], [4, 5, 6], × [0.3, 0.5, 0.1], [7, 8, 9], [0.6, 0.8, 0.4], [10, 11, 12]] [0.6, 0.8, 0.4]] = [[4.3, 5.7, 2.9], [12.2, 16.0, 8.2], [20.1, 26.3, 13.5], [28.0, 36.6, 18.8]]

接着,我们计算自注意力权重。首先计算查询线性变换和键线性变换的点积,并进行softmax归一化:

 

Copy Code

自注意力权重 = softmax(查询线性变换 × 键线性变换转置) = softmax([[2.3, 2.1, 3.7], [5.7, 5.6, 8.8], [9.1, 9.1, 14.1], [12.5, 13.1, 19.5]] × [[4.5, 12.6, 20.7, 28.8], [3.1, 8.4, 13.7, 19.0], [2.6, 7.2, 11.8, 16.4]])

最后,将自注意力权重与值线性变换结果相乘,得到自注意力的输出:

 

Copy Code

自注意力输出 = 自注意力权重 × 值线性变换 = 自注意力权重 × [[4.3, 5.7, 2.9], [12.2, 16.0, 8.2], [20.1, 26.3, 13.5], [28.0, 36.6, 18.8]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值