注意力机制(Q,K,V)基本概念

本文详细介绍了注意力机制的概念,包括注意力提示的自主性和非自主性、注意力汇聚的非参和带参数形式,以及评分函数如高斯核和加性/缩放点积的应用。还讨论了遮蔽softmax如何控制注意力范围。

一、注意力提示

我们使用偏日常的注意力提示引入注意力机制

1.1概念

  1. 查询 query
    =自主性的提示
    =随意的

  2. 键 key
    = 非自主性的提示
    =不随意的

  3. 值 value
    = 感觉输入
    值和键是成对的

注意:此处的随意/不随意中的意志的意

1.2生活中的注意力提示

  1. 非自主性提示
    在这里插入图片描述
  2. 自主性提示
    在这里插入图片描述
    人的意志就是自主性的提示,引导注意力指向了书。当无意识时,由于突出的非自主性提示(杯子),引导注意力指向了杯子。
    此时,人的意志为query,杯子、书等物品为key,最终注意力的去向为value

1.3注意力机制基本框架

在这里插入图片描述
注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向

小结

  • 受试者使用非自主性和自主性提示有选择性地引导注意力。前者基于突出性,后者则依赖于意识。
  • 注意力机制与全连接的层或汇聚层的区别:增加了自主性提示

二、注意力汇聚

2.1概念

查询(自主提示)和键(非自主提示)之间的交互形成了注意力汇聚;注意力汇聚有选择地聚合了值(感官输入)以生成最终的输出

2.2非参注意力汇聚

2.2.1平均汇聚

  1. 公式
    f ( x ) = 1 n ∑ i = 1 n y i (1) f(x)={1\over n}\sum_{i=1}^n y_i \tag{1} f(x)=n1i=1nyi(1)

  2. 结果
    在这里插入图片描述
    观察可知"查询-键"对越接近,注意力汇聚的注意力权值越高

  3. 缺点
    忽略了输入 x x x

2.2.2Nadaraya-Waston核回归

  1. 改进
    Nadaraya-Waston核回归比平均汇聚更优越的地方在于,其考虑了输入 x x x的位置。根据输入位置x对数据y进行加权
  2. 公式
    f ( x ) = ∑ i = 1 n K ( x − x i ) ∑ j = 1 n K ( x − x j ) y i , (2) f(x) = \sum_{i=1}^n \frac{K(x - x_i)}{\sum_{j=1}^n K(x - x_j)} y_i, \tag{2} f(x)=i=1nj=1nK(xxj)K(xxi)yi,(2)
    Nadaraya-Watson核回归的注意力汇聚是对训练数据中输出的加权平均。
  3. 优点
    回归具有一致性:如果有足够的数据,模型将收敛到最优解(非参方法的特点)
    注意: 其中K为高斯核函数,可自定义

2.3通用注意力汇聚公式

受K核的启发,可以将注意力汇聚公式重写为更通用的形式(适用于非参、带参)
f ( x ) = ∑ i = 1 n α ( x , x i ) y i , (3) f(x) = \sum_{i=1}^n \alpha(x, x_i) y_i,\tag{3} f(x)=i=1nα(x,xi)yi,(3)
其中x是查询, ( x i , y i ) (x_i,y_i) (xi,yi)是键值对。 比较平均汇聚(1)和通用公式(3) , 注意力汇聚是 y i y_i yi的加权平均。 将查询x和键 x i x_i xi之间的关系建模为 注意力权重 α ( x , x i ) \alpha(x,x_i) α(x,xi), 这个权重将被分配给每一个对应值 y i y_i yi

对于任何查询,模型在所有键值对注意力权重 α ( x , x i ) \alpha(x,x_i) α(x,xi)都是一个有效的概率分布: 它们是非负的,并且总和为1。


例子

可以自定义一个高斯核为
K ( u ) = 1 2 π exp ⁡ ( − u 2 2 ) K(u) = \frac{1}{\sqrt{2\pi}} \exp(-\frac{u^2}{2}) K(u)=2π 1exp(2u2)
将其带入(3)中,可以得到注意力汇聚公式如(4)
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ⁡ ( − 1 2 ( x − x i ) 2 ) ∑ j = 1 n exp ⁡ ( − 1 2 ( x − x j ) 2 ) y i = ∑ i = 1 n s o f t m a x ( − 1 2 ( x − x i ) 2 ) y i . (4) \begin{split}\begin{aligned} f(x) &=\sum_{i=1}^n \alpha(x, x_i) y_i\\ &= \sum_{i=1}^n \frac{\exp\left(-\frac{1}{2}(x - x_i)^2\right)}{\sum_{j=1}^n \exp\left(-\frac{1}{2}(x - x_j)^2\right)} y_i \\&= \sum_{i=1}^n \mathrm{softmax}\left(-\frac{1}{2}(x - x_i)^2\right) y_i. \end{aligned}\end{split} \tag{4} f(x)=i=1nα(x,xi)yi=i=1nj=1nexp(21(xxj)2)exp(21(xxi)2)yi=i=1nsoftmax(21(xxi)2)yi.(4)
在(4)中,给出的查询x越接近某个键 x i x_i xi,则分配给这个键对应值 y i y_i yi的注意力权重就会越大,也就获得了更多的注意力。

特别的,Nadaraya-Watson核回归是一个非参数模型。因此将K带入后的通用注意力汇聚模型也为非参的模型。如果带入一个带参模型,则为带参的注意力汇聚模型。

2.4带参数注意力汇聚

将(3)带入一个带参模型,则为带参的注意力汇聚模型。如公式(5)
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ⁡ ( − 1 2 ( ( x − x i ) w ) 2 ) ∑ j = 1 n exp ⁡ ( − 1 2 ( ( x − x j ) w ) 2 ) y i = ∑ i = 1 n s o f t m a x ( − 1 2 ( ( x − x i ) w ) 2 ) y i . \begin{split}\begin{aligned}f(x) &= \sum_{i=1}^n \alpha(x, x_i) y_i \\&= \sum_{i=1}^n \frac{\exp\left(-\frac{1}{2}((x - x_i)w)^2\right)}{\sum_{j=1}^n \exp\left(-\frac{1}{2}((x - x_j)w)^2\right)} y_i \\&= \sum_{i=1}^n \mathrm{softmax}\left(-\frac{1}{2}((x - x_i)w)^2\right) y_i.\end{aligned}\end{split} f(x)=i=1nα(x,xi)yi=i=1nj=1nexp(21((xxj)w)2)exp(21((xxi)w)2)yi=i=1nsoftmax(21((xxi)w)2)yi.

小结

  1. 注意力汇聚可以分为非参数型和带参数型
  2. Nadaraya-Watson核回归中的高斯核函数为注意力汇聚函数
  3. Nadaraya-Watson核回归的注意力汇聚是对训练数据中输出的加权平均。从注意力的角度来看,分配给每个值的注意力权重取决于将值所对应的键和查询作为输入的函数

至此注意力机制的基本概念介绍完毕,接下来介绍注意力机制的进阶概念


三、注意力评分函数

3.1概念

在通用注意力汇聚公式介绍时,我们自定义了一个高斯核,并将其带入通用注意力汇聚公式中
K ( u ) = 1 2 π exp ⁡ ( − u 2 2 ) K(u) = \frac{1}{\sqrt{2\pi}} \exp(-\frac{u^2}{2}) K(u)=2π 1exp(2u2)
将其带入(3)中,可以得到注意力汇聚公式如(4)
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ⁡ ( − 1 2 ( x − x i ) 2 ) ∑ j = 1 n exp ⁡ ( − 1 2 ( x − x j ) 2 ) y i = ∑ i = 1 n s o f t m a x ( − 1 2 ( x − x i ) 2 ) y i . (4) \begin{split}\begin{aligned} f(x) &=\sum_{i=1}^n \alpha(x, x_i) y_i\\ &= \sum_{i=1}^n \frac{\exp\left(-\frac{1}{2}(x - x_i)^2\right)}{\sum_{j=1}^n \exp\left(-\frac{1}{2}(x - x_j)^2\right)} y_i \\&= \sum_{i=1}^n \mathrm{softmax}\left(-\frac{1}{2}(x - x_i)^2\right) y_i. \end{aligned}\end{split} \tag{4} f(x)=i=1nα(x,xi)yi=i=1nj=1nexp(21(xxj)2)exp(21(xxi)2)yi=i=1nsoftmax(21(xxi)2)yi.(4)
其中x为查询, x i x_i xi为键, y i y_i yi为值

通过观察可得,可以将K的指数部分 − u 2 2 -\frac{u^2}{2} 2u2视为注意力评分函数。
即注意力汇聚的输出可以分为以下三个步骤:

  1. 通过注意力评分函数计算键 x i x_i xi和x的得分
  2. 将得分作为softmax函数的输入
  3. softmax计算后将得到与键对应的值的概率分布(即注意力权重)
  4. 计算注意力权重与值的加权和

引入注意力评分函数的注意力机制框架如图所示
引入注意力评分函数的注意力机制框架

3.2例子

除了高斯核函数K的指数部分外,还有加性注意力、缩放点积注意力可作为评分函数

  1. 加性注意力
  • 当查询和键是不同长度的矢量使适用
  1. 缩放点积注意力
  • 计算效率更高
  • 查询和键有相同长度

四、遮蔽softmax

并非所有值都应该被纳入到注意力汇聚中。可以指定一个有效序列长度,使masked_softmax滤去超出范围的部分

三+四小结

  1. 注意力汇聚从参数角度上可分为非参和带参。从结构上,注意力汇聚函数可以拆分为评分函数+softmax函数。注意力汇聚函数可以表示为
    h = ∑ i s o f t m a x ( s c o r e ( q , k i ) ) ∗ v i h=\sum_i softmax(score(q,k_i))*v_i h=isoftmax(score(q,ki))vi

  2. 将注意力汇聚的输出计算可以作为值的加权平均,选择不同的注意力评分函数会带来不同的注意力汇聚操作。

  3. 当查询和键是不同长度的矢量时,可以使用可加性注意力评分函数。当它们的长度相同时,使用缩放的“点-积”注意力评分函数的计算效率更高

### 注意力机制 QKV 概念及用法 #### 1. 查询 (Query, Q)、键 (Key, K) 和值 (Value, V) 的定义 在注意力机制中,查询 (Q)、键 (K) 和值 (V) 是核心组成部分。它们通过线性变换由输入数据生成[^1]。具体来说: - **查询 (Q)** 表示当前元素的兴趣方向或关注焦点。它用于衡量与其他元素的相关程度。 - **键 (K)** 对应于每个元素的特征表示,可以看作是对该元素的一种描述。 - **值 (V)** 则代表实际的内容信息,当某个元素被选中时,其对应的值会被提取出来。 这三个矩阵通常通过对输入嵌入 $X$ 进行不同的线性投影来获得。例如,在第 $i$ 个注意力头中,有如下关系: $$ Q_i = XW^{q}_i,\quad K_i = XW^{k}_i,\quad V_i = XW^{v}_i, $$ 其中 $W^{q}_i$, $W^{k}_i$, $W^{v}_i$ 分别是可训练的权重参数矩阵。 --- #### 2. 计算过程详解 ##### (1)生成 Query、Key 和 Value 向量 模型接收输入序列后,会先将其映射成三组向量:查询 ($Q$),键 ($K$) 及值 ($V$)[^3]。这一阶段涉及多个独立的线性变换操作,目的是让原始数据能够适应后续处理需求。 ##### (2)计算注意力分数 接着利用点积方法评估每一对 query-key 组合间的匹配度,并除以 $\sqrt{d_k}$ 来缩放结果(这里 $d_k$ 表示 key 的维度大小),从而减少数值过大带来的梯度消失风险[^2]: $$ \text{Attention Score} = \frac{\text{Q}\cdot\text{K}^\top}{\sqrt{d_k}}. $$ 之后再经过 softmax 函数作用使得各位置上的得分形成概率分布形式,最终作为分配给对应 value 的权重依据: $$ \text{Attention Weights} = \text{Softmax}\left(\frac{\text{Q}\cdot\text{K}^\top}{\sqrt{d_k}}\right). $$ ##### (3)加权求和获取输出 最后一步便是按照上述所得权重对所有的 values 实施加权平均运算得出目标输出: $$ \text{Output} = \sum_{j=1}^{n} w_j v_j = \text{Attention Weights} \cdot \text{V}. $$ 此过程中每一个 token 都能基于全局上下文中其他 tokens 提供的信息调整自己表征方式,进而增强整体语义捕捉能力。 --- #### 3. 多头注意力扩展 为了进一步提升表达能力和灵活性,引入了多头注意力结构。简单而言就是并行执行多次基础版 attention 并拼接起来构成更丰富的特征空间。假设共有 h 个 heads,则总的 output 将成为各个 head 输出串联后再经一次全连接层转换后的产物: ```python multi_head_output = Concat(head_1_out,...,head_h_out) * W_o ``` 此处 `Concat` 表达的是张量级联动作;而额外增加的一个 projection matrix \(W_o\) 负责融合不同视角下的学到特性. --- ### 总结 综上所述,QKV注意力机制里扮演着至关重要的角色,分别负责定位兴趣区域(Queries), 描述对象(Keys)以及承载实质内容(Values). 它们共同协作完成从局部关联分析到综合考量整个序列范围内相互影响的任务.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

快苏排序OAO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值