|
| 1 | +--- |
| 2 | +title: Attention运算过程中维度变换的理解 |
| 3 | +icon: file |
| 4 | +category: |
| 5 | + - 开源项目 |
| 6 | +tag: |
| 7 | + - 已发布 |
| 8 | +footer: 技术共建,知识共享 |
| 9 | +date: 2025-06-10 |
| 10 | +author: |
| 11 | + - BinaryOracle |
| 12 | +--- |
| 13 | + |
| 14 | +`Attention运算过程中维度变换的理解` |
| 15 | + |
| 16 | +<!-- more --> |
| 17 | + |
| 18 | +# Attention运算过程中维度变换的理解 |
| 19 | + |
| 20 | +在注意力机制(特别是 **Transformer** 中的 **自注意力机制**)中,**Q(Query)、K(Key)、V(Value)** 的维度对最终注意力输出的结果维度有直接影响。我们来一步步分析这个过程: |
| 21 | + |
| 22 | +## 一、注意力机制的基本流程 |
| 23 | + |
| 24 | +在标准的 **缩放点积注意力(Scaled Dot-Product Attention)** 中,计算公式如下: |
| 25 | + |
| 26 | +$$ |
| 27 | +\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V |
| 28 | +$$ |
| 29 | + |
| 30 | +其中: |
| 31 | +- $Q \in \mathbb{R}^{n \times d_k}$ |
| 32 | +- $K \in \mathbb{R}^{m \times d_k}$ |
| 33 | +- $V \in \mathbb{R}^{m \times d_v}$ |
| 34 | + |
| 35 | +> - $n$:query的数量(如句子长度) |
| 36 | +> - $m$:key/value的数量(也通常是句子长度) |
| 37 | +> - $d_k$:每个 query 和 key 的维度 |
| 38 | +> - $d_v$:每个 value 的维度 |
| 39 | +
|
| 40 | + |
| 41 | + |
| 42 | +## 二、Q、K、V 的初始维度对结果的影响 |
| 43 | + |
| 44 | +### 1. **Q × K^T 的维度** |
| 45 | + |
| 46 | +这是注意力权重矩阵的来源。 |
| 47 | + |
| 48 | +- $Q \in \mathbb{R}^{n \times d_k}$ |
| 49 | +- $K^T \in \mathbb{R}^{d_k \times m}$ |
| 50 | +- 所以$QK^T \in \mathbb{R}^{n \times m}$ |
| 51 | + |
| 52 | +👉 这个矩阵表示的是每个 query 对应所有 key 的相似度(即注意力得分),共$n \times m$个值。 |
| 53 | + |
| 54 | + |
| 55 | + |
| 56 | +### 2. **Softmax 操作** |
| 57 | + |
| 58 | +对每一行做 softmax,得到归一化的注意力权重: |
| 59 | + |
| 60 | +- 输入:$n \times m$ |
| 61 | +- 输出:仍是$n \times m$ |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +### 3. **与 V 相乘** |
| 66 | + |
| 67 | +- 注意力权重:$A \in \mathbb{R}^{n \times m}$ |
| 68 | +- Value 矩阵:$V \in \mathbb{R}^{m \times d_v}$ |
| 69 | +- 结果:$AV \in \mathbb{R}^{n \times d_v}$ |
| 70 | + |
| 71 | +👉 最终输出的维度是$n \times d_v$,也就是和输入的 query 数量一致,但每个输出向量的维度由 value 的维度决定。 |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | +## 三、总结:输入维度 → 输出维度 |
| 76 | + |
| 77 | +| 输入 | 维度 | 含义 | |
| 78 | +| --- | --- | --- | |
| 79 | +| Query (Q) | $n \times d_k$ | 查询向量,n 是序列长度 | |
| 80 | +| Key (K) | $m \times d_k$ | 键向量,用于匹配查询 | |
| 81 | +| Value (V) | $m \times d_v$ | 值向量,实际携带信息 | |
| 82 | + |
| 83 | +| 输出 | 维度 | 含义 | |
| 84 | +| --- | --- | --- | |
| 85 | +| Attention Output | $n \times d_v$ | 每个 query 聚合了所有 value 的加权信息 | |
| 86 | + |
| 87 | + |
| 88 | + |
| 89 | +## 四、如何理解这个过程? |
| 90 | + |
| 91 | +我们可以从以下角度理解: |
| 92 | + |
| 93 | +### ✅ 1. **信息融合机制** |
| 94 | +- 每个 Query 都是在寻找最相关的 Key。 |
| 95 | +- 根据相关性(注意力权重),从对应的 Value 中提取信息。 |
| 96 | +- 最终每个 Query 得到一个融合了上下文信息的向量。 |
| 97 | + |
| 98 | +### ✅ 2. **维度设计的灵活性** |
| 99 | +- $d_k$控制了相似度计算的维度,影响模型容量和梯度稳定性。 |
| 100 | +- $d_v$决定了输出的信息维度,可以独立于$d_k$设计。 |
| 101 | +- 这种分离的设计让模型更灵活,比如多头注意力中可以分别控制每个 head 的表达能力。 |
| 102 | + |
| 103 | +### ✅ 3. **可类比为“软检索”系统** |
| 104 | +- 类似数据库查询: |
| 105 | + - Query 是你输入的问题; |
| 106 | + - Key 是数据库中的索引; |
| 107 | + - Value 是数据库中的内容; |
| 108 | + - Attention 就是根据问题找到相关内容并返回。 |
| 109 | + |
| 110 | + |
| 111 | + |
| 112 | +## 五、例子说明(以 Transformer 为例) |
| 113 | + |
| 114 | +假设我们在 Transformer 中: |
| 115 | + |
| 116 | +- 输入是一个 batch of sequences,shape 为$B \times T \times D$ |
| 117 | +- 我们通过线性变换得到: |
| 118 | + - $Q = XW_Q \in \mathbb{R}^{B \times T \times d_k}$ |
| 119 | + - $K = XW_K \in \mathbb{R}^{B \times T \times d_k}$ |
| 120 | + - $V = XW_V \in \mathbb{R}^{B \times T \times d_v}$ |
| 121 | + |
| 122 | +那么最终输出为: |
| 123 | + |
| 124 | +$$ |
| 125 | +\text{Output} \in \mathbb{R}^{B \times T \times d_v} |
| 126 | +$$ |
| 127 | + |
| 128 | +> 如果使用多头注意力(Multi-head Attention),我们会拼接多个这样的头,最后再经过一个线性层映射回原始维度$D$。 |
| 129 | +
|
| 130 | + |
| 131 | + |
| 132 | +## 六、常见疑问解答 |
| 133 | + |
| 134 | +### ❓Q: 为什么$d_k$和$d_v$可以不同? |
| 135 | +> 因为它们的作用不同: |
| 136 | +> - $d_k$是用于计算相似度的维度; |
| 137 | +> - $d_v$是用于信息表达的维度; |
| 138 | +> |
| 139 | +> 两者解耦可以让模型更灵活地分配资源。 |
| 140 | +
|
| 141 | +### ❓Q: 为什么要除以$\sqrt{d_k}$? |
| 142 | +> 防止内积过大导致 softmax 梯度消失。 |
| 143 | +> 当$d_k$较大时,QK^T 的数值会很大,除以$\sqrt{d_k}$可以缓解这个问题。 |
| 144 | +
|
| 145 | + |
| 146 | + |
| 147 | +## 七、可视化示意 |
| 148 | + |
| 149 | +``` |
| 150 | +Q: [n x dk] K: [m x dk] V: [m x dv] |
| 151 | + ↓ ↓ ↓ |
| 152 | + Q @ K.T → [n x m] ↓ |
| 153 | + ↓ ↓ |
| 154 | + softmax → [n x m] V → [m x dv] |
| 155 | + ↓__________________________↓ |
| 156 | + ↓ |
| 157 | + Output → [n x dv] |
| 158 | +``` |
| 159 | + |
0 commit comments