自注意力机制(Self-Attention)的原理与计算过程
题目描述
自注意力机制是Transformer模型的核心组件,用于计算序列中每个元素与其他元素的关联权重,从而动态生成加权表示。要求详细解释自注意力机制的计算步骤,包括查询(Query)、键(Key)、值(Value)矩阵的生成、注意力权重的计算,以及最终输出的推导过程。
解题过程
1. 自注意力的核心思想
自注意力的目标是让序列中的每个位置(如句子中的每个词)能够根据其他位置的信息更新自己的表示。例如,在句子“猫吃鱼”中,“吃”需要同时关注“猫”和“鱼”的信息。这一过程通过以下步骤实现:
2. 输入表示
假设输入序列包含 \(n\) 个向量(例如词嵌入),记为 \(X = [x_1, x_2, ..., x_n]\),其中每个 \(x_i \in \mathbb{R}^{d_{\text{model}}}\)(\(d_{\text{model}}\) 为向量维度)。
示例:若输入为两个词,\(X = [x_1, x_2]\),维度 \(d_{\text{model}} = 3\)。
3. 生成查询(Q)、键(K)、值(V)矩阵
通过可学习的权重矩阵 \(W^Q, W^K, W^V \in \mathbb{R}^{d_{\text{model}} \times d_k}\)(通常 \(d_k = d_v\))将输入 \(X\) 投影到三个空间:
- 查询矩阵 \(Q = X W^Q\)
- 键矩阵 \(K = X W^K\)
- 值矩阵 \(V = X W^V\)
示例:
设 \(W^Q = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \end{bmatrix}, W^K, W^V\) 类似(实际中为随机初始化),计算:
\(Q = [x_1 W^Q, x_2 W^Q]\),得到 \(2 \times 2\) 的矩阵(序列长度 \(n=2\),\(d_k=2\))。
4. 计算注意力权重
通过查询和键的点积衡量相关性,再经过Softmax归一化:
\[ \text{Attention}(Q, K, V) = \text{Softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V \]
分步解释:
- 计算相似度矩阵 \(S = QK^T\):
- \(S_{ij}\) 表示第 \(i\) 个查询与第 \(j\) 个键的相似度。
- 缩放处理:除以 \(\sqrt{d_k}\) 防止点积过大导致梯度消失。
- Softmax归一化:对每一行进行Softmax,使得每个位置对所有位置的权重之和为1。
示例:
若 \(Q = \begin{bmatrix} 1 & 2 \\ 2 & 0 \end{bmatrix}, K = \begin{bmatrix} 0 & 1 \\ 1 & 1 \end{bmatrix}\),则:
- \(QK^T = \begin{bmatrix} 2 & 3 \\ 0 & 2 \end{bmatrix}\)
- 缩放后(设 \(d_k=2\)):\(\frac{QK^T}{\sqrt{2}} = \begin{bmatrix} 1.41 & 2.12 \\ 0 & 1.41 \end{bmatrix}\)
- Softmax(按行):第一行 \([0.27, 0.73]\),第二行 \([0.27, 0.73]\)(数值为示意)。
5. 加权求和输出
将注意力权重矩阵与值矩阵 \(V\) 相乘,得到每个位置的加权表示:
\[ Z = \text{Softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) V \]
示例:
若 \(V = \begin{bmatrix} 0.5 & 1.5 \\ 1.0 & 2.0 \end{bmatrix}\),则:
- 第一行输出:\(0.27 \times [0.5, 1.5] + 0.73 \times [1.0, 2.0] = [0.87, 1.87]\)
- 第二行输出:类似计算。最终 \(Z\) 的每一行对应一个位置的新表示。
6. 多头注意力(扩展)
为捕捉不同子空间的信息,使用多个独立的注意力头:
- 将 \(Q, K, V\) 投影到 \(h\) 个不同的子空间(维度 \(d_k = d_v = d_{\text{model}} / h\))。
- 分别计算每个头的输出 \(Z_i\)。
- 拼接所有头的输出后通过线性层融合:
\[ \text{MultiHead}(Q, K, V) = \text{Concat}(Z_1, ..., Z_h) W^O \]
关键点总结
- 自注意力通过动态权重聚合全局信息,解决了长距离依赖问题。
- 缩放点积避免梯度不稳定,Softmax确保权重归一化。
- 多头机制增强模型对不同关系模式的捕捉能力。