Zubnet AI学习Wiki › 自注意力
基础

自注意力

别名:缩放点积注意力
一种注意力机制,其中序列关注自身——每个token计算其与同一序列中其他所有token的相关性。查询、键和值都来自同一输入。这让每个token能够收集来自所有其他token的信息,按相关性加权。自注意力是每个Transformer层的核心操作。

为什么重要

自注意力是Transformer工作的关键。它用并行的、所有位置之间的直接连接取代了RNN的顺序处理。"bank"在"river bank"中关注"river"以解析其含义,无论它们相距多远。这种直接连接任意两个位置的能力是Transformer如此擅长处理长距离依赖的原因。

深度解析

计算过程:对于输入X,计算Q = X·W_Q,K = X·W_K,V = X·W_V。然后:Attention(Q,K,V) = softmax(Q·K^T / √d_k) · V。softmax(Q·K^T)产生一个N×N注意力矩阵,其中条目(i,j)表示token i对token j的关注程度。√d_k缩放防止点积在高维空间中增长过大,否则会将softmax推入饱和区域并产生接近零的梯度。

因果 vs. 双向

在仅解码器的LLM(GPT、Claude、Llama)中,自注意力是因果的:每个token只能关注之前的token(包括自身)。这通过因果掩码实现,在softmax之前将未来位置设置为−∞。在编码器模型(BERT)中,自注意力是双向的:每个token关注其他所有token。因果约束使自回归生成成为可能——模型不能"偷看"未来的token。

二次方代价

自注意力计算一个N×N注意力矩阵,使其在时间和内存上都是O(N²)的。对于128K token的上下文,每层每头约有160亿个条目。这种二次方增长是推动稀疏注意力、线性注意力、Flash Attention(减少内存但不减少计算)和SSM(完全避免N×N矩阵)研究的根本限制。每种长上下文建模方法最终都是在管理这个二次方代价。

相关概念

← 所有术语
← 自回归 自然语言处理 →