注意力机制 QKV
时间: 2025-05-15 16:01:43 浏览: 34
### 注意力机制 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). 它们共同协作完成从局部关联分析到综合考量整个序列范围内相互影响的任务.
阅读全文
相关推荐


















