自注意力是现代LLM(GPT、Claude、Llama)的核心思想。2026年AI/ML面试必考你懂Q/K/V细节而不是"加权和"这种浅层理解。
核心操作:每个token计算应该关注每个其他token多少,自己的输出是所有token value的加权平均。
Q、K、V是输入embedding的三个线性投影:query(我在找什么)、key(我提供什么)、value(实际内容)。token i到token j的权重 = softmax(Q_i · K_j / sqrt(d_k))。
sqrt(d_k)缩放很关键:不缩放的话点积随维度变大会把softmax推进饱和区,梯度消失训练停滞。缩放保持方差约1。
多头:不是一次大attention,而是并行跑h个小维度attention再拼接。每个头学不同模式——语法、指代、位置,表示更丰富。
比RNN好在哪:并行(所有token一次算完 vs RNN必须逐步递归)、任意两token之间路径长度恒为1(有利长距依赖)、每层都有全局上下文。代价:O(n²)序列长度复杂度,是长上下文的瓶颈。
自注意力让序列中每个token看到所有其他token,决定对它们各给多少权重来算自己的输出。每个token的embedding学三个线性投影:Q(query,"我在找什么")、K(key,"我提供什么")、V(value,"要混合的内容")。注意力权重是softmax(Q · K^T / sqrt(d_k)),应用在V上。直觉上,token i的query和其他所有token的key点积得相似度分;softmax把分数变成和为1的权重;i的输出是所有token value向量的加权和。sqrt(d_k)缩放容易忽略——不缩放的话维度变大点积量级也变大,softmax被推进饱和区梯度消失训练停止。缩放保持分布合理。多头注意力把attention并行做h次,每次Q/K/V维度是d/h,再拼接投影。不同头学不同模式——有些头学句法依赖,有些学指代回指,有些学位置邻近。这比单个大attention表示更丰富。对比RNN:RNN逐步处理token,token 1到token 1000中间999步递归,梯度消失、长距依赖难学、训练天然串行。自注意力让每个token在一层里看到所有其他token,有效路径长度1,且所有token计算可以GPU并行。这就是Transformer训练快且长距依赖学得好的根因。代价是计算和内存都是O(n²)序列长度,长上下文模型要用稀疏注意力、滑动窗口、线性近似等技巧缓解。
一定要说scaled dot-product具体,不只是"attention"——sqrt(d_k)是常见追问。
"O(n²)序列长度瓶颈"是长上下文研究的核心问题,提到显示跟进了前沿。
多头的直觉——不同头学不同模式——是合适的抽象层次。
临场忘了Q/K/V,即答侠可以实时提示。
角色不同——查询、被查询、内容——需要不同的学习表示。共享会让同一向量勉强干三件事。
attention是置换不变的,不知道token顺序。位置编码(正弦或学习的)加位置信息让顺序有意义。
IO-aware的attention kernel,不物化完整N×N矩阵计算attention,大幅降低内存并加速长序列。