基于自注意力机制(Self-Attention)的文本表示学习算法
字数 1627 2025-11-10 20:40:14
基于自注意力机制(Self-Attention)的文本表示学习算法
题目描述
自注意力机制(Self-Aightion)是Transformer模型的核心组件,用于学习文本中每个词与其他所有词之间的依赖关系,从而生成上下文感知的向量表示。与传统循环神经网络(RNN)逐词处理序列不同,自注意力通过并行计算全局依赖,有效捕捉长距离交互。本题目将详解自注意力如何计算文本表示,包括输入编码、注意力权重生成、输出聚合等步骤。
解题过程
- 输入表示层
- 文本首先被转换为词向量(如Word2Vec或随机初始化),得到输入矩阵 \(X \in \mathbb{R}^{n \times d}\),其中 \(n\) 为序列长度,\(d\) 为词向量维度。
- 为保留位置信息,需添加位置编码(Positional Encoding)。常用正弦余弦函数:
\[ PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right), \quad PE_{(pos,2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) \]
其中 $ pos $ 为词的位置,$ i $ 为维度索引。编码后的输入为 $ X' = X + PE $。
- 生成查询、键、值矩阵
- 通过三个可学习权重矩阵 \(W^Q, W^K, W^V \in \mathbb{R}^{d \times d_k}\)(通常设 \(d_k = d\))将输入映射到查询(Query)、键(Key)、值(Value)空间:
\[ Q = X'W^Q, \quad K = X'W^K, \quad V = X'W^V \]
- \(Q, K, V\) 的每一行对应一个词的三种表示,用于计算词间关联。
- 计算注意力权重
- 通过点积计算查询与键的相似度,缩放后使用Softmax归一化:
\[ \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]
- 缩放因子 \(\sqrt{d_k}\):防止点积过大导致Softmax梯度消失。
- 物理意义:权重矩阵 \(\text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)\) 的每一行表示一个词对所有词的关注程度。
- 输出聚合
- 将注意力权重与值矩阵 \(V\) 相乘,加权求和得到每个词的上下文表示:
\[ Z_i = \sum_{j=1}^{n} \alpha_{ij} V_j \]
其中 $ \alpha_{ij} $ 是第 $ i $ 个词对第 $ j $ 个词的注意力权重。
- 输出 \(Z \in \mathbb{R}^{n \times d}\) 即自注意力后的文本表示,每个词向量融合了全局信息。
- 多头注意力(扩展)
- 为捕捉不同子空间的依赖关系,使用多组 \(W^Q, W^K, W^V\) 并行计算注意力头:
\[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O \]
其中每个头 $ \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) $,$ W^O $ 为输出投影矩阵。
- 多头机制使模型同时关注语法、语义等多方面特征。
关键点总结
- 自注意力通过全局交互克服了RNN的长期依赖问题。
- 缩放点积注意力避免梯度不稳定,Softmax确保权重归一化。
- 多头扩展提升了模型对不同关系模式的捕捉能力。此机制是BERT、GPT等预训练模型的基础。