标准回答
一、瓶颈来源
标准自注意力计算 softmax(QKᵀ)V。先算 QKᵀ 会得到一个 n×n 的注意力矩阵,复杂度和显存都是 O(n²),序列一长就成为瓶颈。
二、核函数近似
softmax 本质是衡量 query 与 key 的相似度。线性注意力用一个特征映射 φ(核函数,如 elu+1)把相似度近似为 φ(Q) 与 φ(K) 的内积,即去掉了 softmax 中不可分解的指数归一化。
三、结合律重排
去掉 softmax 后,输出 ≈ φ(Q)·(φ(K)ᵀV)。利用矩阵乘法结合律,先计算 φ(K)ᵀV 得到一个 d×d 的小矩阵,再左乘 φ(Q),整体复杂度变为 O(n·d²),对序列长度 n 是线性的,也无需存储 n×n 矩阵。
面试里可以补一句:线性注意力如何把注意力复杂度降到 On 在大模型场景下通常要同时权衡效果、延迟、成本和安全边界。回答时最好带一个例子,比如上下文过长、幻觉、缓存命中或工具调用失败时,系统应该如何降级和观测。
四、代价与定位
牺牲了 softmax 的精确归一化和尖锐注意力分布,表达力与精度有损,在需要精确长程检索的任务上往往不及标准注意力;常与门控、衰减等机制结合(如 RetNet、GLA)改善。详见 线性注意力架构演进。
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:线性是「对序列长度 n 线性」,不是「整体免算力」;d²/d 项仍在。另外它是近似 softmax 而非等价,精度通常有损,不要宣称无损替代。
追问
追问 1:线性注意力在自回归生成时还能保持 O(1) 每步吗?
追问 2:它和 Flash Attention 解决的是同一个问题吗?
不是。Flash Attention 仍是精确 softmax 注意力,O(n²) 计算不变,只是通过分块和不落地 n×n 矩阵来省显存、提访存效率;线性注意力是改变算法本身、近似 softmax 把计算复杂度降到线性,二者一个治标存内访存、一个改变复杂度量级。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
