位置:首页 > 进阶教程 > 陈千语自注意力机制通俗详解

陈千语自注意力机制通俗详解

时间:2026-07-25  |  作者:318050  |  阅读:0

1. 注意力机制 Attention

先说说帝江号最近新来的干员汤汤吧。她的能力值怎么算?

原本团队里已经有不少干员。能力值根据力量属性来定,和力量值有明确的对应关系。

现在汤汤的力量是207。那她的能力值该怎么算?

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

但干员不止有力量,还有智力。光靠力量评估能力值,干员们可不服气。于是管理员重新基于力量和智力,给所有干员评了新的能力值。

已知汤汤力量207、智力289。重新算相关度系数,加权求和,又得到一个新的能力值。

后来游戏版本更新到3.0,干员属性扩展到12288个。这时候要算汤汤的能力值,就得参考所有干员的情况。哪个干员的属性和汤汤最像,参考的比重就越大。

把更多注意力放在属性相似的干员身上,这就是注意力机制的核心。

2. 自注意力机制 Self-Attention

团队交流与属性更新

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

管理员觉得,既然大家是一个Team,得多交流切磋。每个干员都要从自己的角度判断,对其他干员该投入多少注意力。注意力越高的干员,就越该从对方身上学点属性。

陈千语问怎么判断注意力高低?管理员说,当然是跟属性更相似的干员多学点。

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

三个核心矩阵

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

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

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

按这个流程,50个干员都能得到更新后的属性。

把50个干员的q属性(查询向量)拼起来,得到一个50×12288的Q矩阵。把k属性(键向量)拼起来得到K矩阵。把v属性(值向量)拼起来得到V矩阵。

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

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

引入多组矩阵

版本更新多次后,管理员觉得之前的WWW不够用了。每个版本都有不同的副本,干员的属性应该根据版本变化灵活调整。

聪明的管理员想到了办法:准备多组WWW。现在更新了96个版本,所以管理员通过神经网络学习了96组这样的矩阵。

而且,他还把矩阵的维度从12288×12288降到了12288×128。这样计算相关度系数时,能大大减少计算量。

计算过程与优势

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

因为矩阵维度变成了12288×128,每个版本得到的属性向量只有128维。但有96个版本,把96个版本的结果拼起来,就能还原回12288维。

最后再通过一个12288×12288的W矩阵做线性变换,就得到汤汤更新后的12288维属性。

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

4. 公式补充

自注意力机制的基本原理

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

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

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

  • x W = q
  • x W = k
  • x W = 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 需要经过 NWWW 线性变换到 N 个不同的表示子空间。然后分别计算得到 NZ = {z ∈ }。

将这 NZ 首尾拼接,得到 {z ∈ ^(N)}。最后再通过一个 W ∈ ^(N×) 做线性变换,得到最终输出。这样,每个位置的Token就聚合了不同表示子空间中的上下文信息。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多