热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai教程 >✨陈千语✨都懂的自注意力机制

✨陈千语✨都懂的自注意力机制

来源:互联网 更新时间:2026-07-25 07:20

1. 注意力机制Attention

先说说帝江号最近新来的干员汤汤吧。她的能力值怎么算?原本团队里已经有不少干员,能力值根据力量属性来定,和力量值有明确的对应关系。

现在汤汤的力量是207,那她的能力值该怎么算?塔卫二的守护者、巴别塔恶灵意志的传承者——管理员自有办法。既然汤汤的力量是207,管理员就把她的力量和已有干员的力量做相关度系数计算,然后把每个干员的能力值乘以对应的系数,再加起来,就得到了汤汤的能力值。

但干员不止有力量,还有智力。光靠力量评估能力值,干员们可不服气。于是管理员重新基于力量和智力,给所有干员评了新的能力值。已知汤汤力量207、智力289,重新算相关度系数,加权求和,又得到一个新的能力值。

后来游戏版本更新到3.0,干员属性扩展到12288个。这时候要算汤汤的能力值,就得参考所有干员的情况——哪个干员的属性和汤汤最像,参考的比重就越大。把更多注意力放在属性相似的干员身上,这就是注意力机制的核心。

2. 自注意力机制Self-Attention

现在管理员手下有50个干员,每个干员都有12288个属性。这50个干员的属性可以排成一个矩阵。

管理员觉得,既然大家是一个Team,得多交流切磋。每个干员都要从自己的角度判断,对其他干员该投入多少注意力——注意力越高的干员,就越该从对方身上学点属性。陈千语问怎么判断注意力高低?管理员说,当然是跟属性更相似的干员多学点。

当每个干员都按这个规则更新属性后,所有干员的属性都会发生变化。下图展示了汤汤的变化过程。

按这个流程,50个干员都能得到更新后的属性。但问题来了:终末地里有不同副本,干员的属性在不同副本里应该不一样。所以,干员间的注意力需要和他们在不同副本里的属性相似度关联。于是管理员通过神经网络学习了三个矩阵。

  1. 第一个矩阵Wₚ:把干员的12288维属性线性变换到“影拓丰碑副本”里的12288维属性,这叫q属性。
  2. 第二个矩阵Wₖ:把干员属性变换到“协议空间副本”里的属性,这叫k属性。
  3. 第三个矩阵Wᵥ:把干员属性变换到“密境行者副本”里的属性,这叫v属性。

现在重新看看汤汤的属性变化过程。

按这个流程,50个干员都能得到更新后的属性。把50个干员的q属性(查询向量)拼起来,得到一个50×12288的Q矩阵;把k属性(键向量)拼起来得到K矩阵;把v属性(值向量)拼起来得到V矩阵。

自注意力机制,就是组内每个干员用自己在不同副本里的属性,去和组内其他干员的对应属性算相关度系数。系数越高,注意力越集中,学习到的属性也越多。

3. 多头自注意力机制Multi-head Self Attention

版本更新多次后,管理员觉得之前的Wₚ、Wₖ、Wᵥ不够用了——每个版本都有不同的副本,干员的属性应该根据版本变化灵活调整。聪明的管理员想到了办法:准备多组Wₚ、Wₖ、Wᵥ。现在更新了96个版本,所以管理员通过神经网络学习了96组这样的矩阵。而且,他还把矩阵的维度从12288×12288降到了12288×128,这样计算相关度系数时能大大减少计算量。

引入96组12288×128的矩阵后,再看看汤汤的属性变化过程。

因为矩阵维度变成了12288×128,每个版本得到的属性向量只有128维,但有96个版本,把96个版本的结果拼起来,就能还原回12288维。最后再通过一个12288×12288的Wₒ矩阵做线性变换,就得到汤汤更新后的12288维属性。

这就是多头自注意力机制:在自注意力的基础上,把一组Wₚ、Wₖ、Wᵥ扩展成多组,让干员的属性在不同版本的不同副本里都能计算相关度,最终的属性里包含了其他干员在多种副本环境下的信息。

4. 公式补充

自注意力机制常用于自然语言处理,用来计算一段文字中一个词对另一个词的依赖关系,让每个词聚合上下文信息。

假设一段文字经过Tokenization、Embedding和Positional Encoding后,每个Token都表示成一个向量 x,所有Token的向量集合为 {xᵢ ∈ ℝᵈ}ᵗᵢ₌₁,其中 t 是Token个数,d 是向量维度。

自注意力机制中有三个元素:查询 qᵢ、键 kᵢ、值 vᵢ。它们通过输入向量 x 与三个矩阵 Wₚ、Wₖ、Wᵥ 的线性变换得到:

xWₚ = q
xWₖ = k
xWᵥ = v

其中 Wₚ ∈ ℝᵈ×ᵈₚ, Wₖ ∈ ℝᵈ×ᵈₖ, Wᵥ ∈ ℝᵈ×ᵈᵥ,得到的 qᵢ ∈ ℝᵈₚ, kᵢ ∈ ℝᵈₖ, vᵢ ∈ ℝᵈᵥ。

要计算第 i 个Token聚合上下文后的结果,先让 qᵢ 与所有 k 做点积得到匹配分数:

qᵢ · k
qᵢ · k
...
qᵢ · k

然后缩放:

qᵢ · k₁ / √d
qᵢ · k₂ / √d
...
qᵢ · kₜ / √d

接着做Softmax得到相关系数:

e^(qᵢ·k₁/√d) / Σⱼ e^(qᵢ·kⱼ/√d)
e^(qᵢ·k₂/√d) / Σⱼ e^(qᵢ·kⱼ/√d)
...
e^(qᵢ·kₜ/√d) / Σⱼ e^(qᵢ·kⱼ/√d)

最后将相关系数与对应的 v 加权求和,得到第 i 个Token聚合上下文后的向量 zᵢ:

zᵢ = (e^(qᵢ·k₁/√d) / Σⱼ e^(qᵢ·kⱼ/√d)) v₁ + (e^(qᵢ·k₂/√d) / Σⱼ e^(qᵢ·kⱼ/√d)) v₂ + ... + (e^(qᵢ·kₜ/√d) / Σⱼ e^(qᵢ·kⱼ/√d)) v

上面的计算过程对应一个简洁的公式:

Z = Attention(Q, K, V) = Softmax(QKᵀ / √d) V

引入多头自注意力机制后,第 i 个Token的向量 xᵢ 需要经过 NWₚ、Wₖ、Wᵥ 线性变换到 N 个不同的表示子空间,然后分别计算得到 NZ = {zᵢ ∈ ℝᵈᵥ}ᵗᵢ₌₁。将这 NZ 首尾拼接,得到 {zᵢ ∈ ℝ^(Nᵈᵥ)}ᵗᵢ₌₁,最后再通过一个 Wₒ ∈ ℝ^(Nᵈᵥ×ᵈ) 做线性变换,得到最终输出。这样,每个位置的Token就聚合了不同表示子空间中的上下文信息。

热门手游

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc