基于自注意力机制(Self-Attention)的文本表示学习算法
字数 1627 2025-11-10 20:40:14

基于自注意力机制(Self-Attention)的文本表示学习算法

题目描述
自注意力机制(Self-Aightion)是Transformer模型的核心组件,用于学习文本中每个词与其他所有词之间的依赖关系,从而生成上下文感知的向量表示。与传统循环神经网络(RNN)逐词处理序列不同,自注意力通过并行计算全局依赖,有效捕捉长距离交互。本题目将详解自注意力如何计算文本表示,包括输入编码、注意力权重生成、输出聚合等步骤。

解题过程

  1. 输入表示层
    • 文本首先被转换为词向量(如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 $。
  1. 生成查询、键、值矩阵
    • 通过三个可学习权重矩阵 \(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\) 的每一行对应一个词的三种表示,用于计算词间关联。
  1. 计算注意力权重
    • 通过点积计算查询与键的相似度,缩放后使用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)\) 的每一行表示一个词对所有词的关注程度。
  1. 输出聚合
    • 将注意力权重与值矩阵 \(V\) 相乘,加权求和得到每个词的上下文表示:

\[ Z_i = \sum_{j=1}^{n} \alpha_{ij} V_j \]

 其中 $ \alpha_{ij} $ 是第 $ i $ 个词对第 $ j $ 个词的注意力权重。  
  • 输出 \(Z \in \mathbb{R}^{n \times d}\) 即自注意力后的文本表示,每个词向量融合了全局信息。
  1. 多头注意力(扩展)
    • 为捕捉不同子空间的依赖关系,使用多组 \(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等预训练模型的基础。
基于自注意力机制(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等预训练模型的基础。