问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

自注意力机制的计算过程

创作时间:
作者:
@小白创作中心

自注意力机制的计算过程

引用
CSDN
1.
https://m.blog.csdn.net/weixin_57027133/article/details/142986473

自注意力机制(Self-Attention Mechanism)是Transformer模型的核心组件之一,广泛应用于自然语言处理领域。其计算过程主要包括三个步骤:生成查询(Query)、键(Key)和值(Value)向量,计算注意力得分,以及根据注意力得分生成加权输出。

一、生成查询、键和值向量

假设有一句话,包含n个单词。通过词嵌入技术将每个单词转换为大小为512的向量,形成输入序列 X = [a1, a2, ..., an],其中 ai 表示序列中的第 i 个元素。

定义三个权重矩阵:Wq(查询矩阵)、Wk(键矩阵)和 Wv(值矩阵)。这些矩阵的维度通常与输入元素的嵌入维度相匹配,并在模型训练过程中学习得到。

对于序列中的每个元素 ai,通过以下公式计算其查询向量 qi、键向量 ki 和值向量 vi:

  • qi = xi * Wq(查询向量)
  • ki = xi * Wk(键向量)
  • vi = xi * Wv(值向量)

二、计算注意力得分

对于序列中的每个元素 ai,计算其与序列中所有元素 aj(包括自身)的查询向量 qi 和键向量 kj 的点积:

score(ai, aj) = qi * kj^T(T 表示转置)

为了防止点积结果过大导致softmax函数梯度消失,通常会引入一个缩放因子(scale),通常为键向量维度的平方根的倒数:

scaled_score(ai, aj) = score(ai, aj) / √dk,其中 dk 是键向量的维度。

接着对缩放后的得分进行softmax归一化,得到注意力权重:

attention_weights(ai, aj) = softmax(scaled_score(ai, aj))

三、生成加权输出

根据注意力权重和值向量,计算每个元素 ai 的加权输出:

output(ai) = Σj(attention_weights(ai, aj) * vj)

最后将序列中所有元素的加权输出汇总,得到最终的输出序列。

注:文中图片截取自李宏毅transformer教学视频。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号