1. 自注意力机制

自注意力机制(Self-Attention Mechanism)允许模型在处理序列中的一个元素时,动态地、有侧重地关注所有其他元素(包括其自身),进而计算出该元素的一个新的、深度融合了上下文信息的向量表示。

在自注意力机制出现之前,主流的序列处理模型(如 RNN、LSTM)存在两大核心局限:

  1. 长距离依赖捕捉难:由于信息需要按顺序逐步传递,距离过长时,关键信息容易丢失。
  2. 无法并行计算:顺序处理的特性限制了其在现代硬件(如 GPU)上的训练速度。

自注意力机制的解决方案:

  1. 轻松捕捉长距离依赖:它能直接计算序列中任意两个位置的关联,路径长度为常数 O(1),不受距离影响。
  2. 实现高度并行计算:所有位置的注意力可以同时计算,极大提升了计算效率,使得训练更大、更深的模型成为可能。

2. 核心机制:Query, Key, Value (QKV)

自注意力机制的核心,是将每个输入词元的向量表示,通过学习到的权重矩阵 (W_q, W_k, W_v),转换为三个扮演不同角色的向量:查询 (Query)、键 (Key) 和值 (Value)。

三者的关系理解:

交互流程:

  1. 匹配: 用当前词的 Query 与所有词的 Key 进行点积计算,得到相关性得分。得分越高,表示 Q 和 K 越匹配。
  2. 加权: 将得分通过 Softmax 函数转化为权重,代表“注意力”的分配。
  3. 融合: 用得到的权重对所有词的 Value 进行加权求和,生成当前词的最终输出向量。这个新向量深度融合了上下文信息,因为它包含了它最关注的词的语义。

把 token 转换成 QKV

假设输入序列经过嵌入和位置编码后得到向量矩阵 X=[x_1,x_2,...,x_n]。模型会学习三组权重矩阵:W_q, W_k, W_v。对序列中的每个向量 x_i