【Transformer 与注意力机制】57|RWKV / RetNet / 线性注意力:各种降低复杂度的探索
内容提要
本文综述了线性注意力、RWKV和RetNet三种将Transformer复杂度从O(n²)降至O(n)的路径。它们用固定状态替代完整注意力,但存在表达力短板:关联检索任务需更大维度或数据依赖门控。理论复杂度不等于实际吞吐,需I/O感知kernel优化。这些模型各有取舍,混合架构或更接近实用。
延伸解读
理论复杂度不等于实际速度
文章明确指出,O(n) 复杂度只是理论上的优势,实际吞吐取决于 I/O 感知的 kernel 优化。Gated Linear Attention 论文摘要承认现有线性注意力实现缺乏 I/O 感知,比高度优化的 softmax attention 更慢。FlashLinearAttention 通过类似 RetNet 的 chunkwise 策略和显式 tiling,才在短序列上超过 FlashAttention-2。因此,评估这类模型时,不能只看复杂度公式,还要考虑工程实现成熟度。
关联检索是线性注意力模型的短板
Zoology 提出的 MQAR 任务证明,标准 softmax attention 能用与序列长度无关的维度解出关联检索,而线性注意力、RWKV 等循环状态模型需要状态维度随序列长度增长。Based 的实测显示,纯线性注意力和 RWKV-v5 在关联检索切片上比 Transformer++ 差 0.4–0.5 ppl,而混合局部精确注意力的 Based 将差距缩小到 0.2 ppl。这说明固定状态压缩历史信息的能力有限,尤其在需要精确回忆远处细节时。
数据依赖门控是提升表达力的关键
GLA 的消融实验显示,从无门控的朴素线性注意力(23.21 ppl)到 RetNet 式固定衰减(16.55 ppl),再到数据依赖门控(14.77 ppl),困惑度逐步改善。这表明衰减机制本身有用,但让衰减率随输入内容变化更接近 full attention 的质量。Mamba 的选择性机制从一开始就依赖输入,而 RWKV 的衰减参数固定、RetNet 的 gamma 完全固定,这解释了它们在关联检索任务上的差距。
Q&A
线性注意力是如何将Transformer的复杂度从O(n²)降到O(n)的?
线性注意力通过将softmax中的相似度函数替换为可分解的核函数,如φ(q)ᵀφ(k),并利用矩阵乘法的结合律,将注意力计算重写为可累积的循环状态形式。这样,每个位置只需维护固定大小的状态矩阵S和向量z,避免了与所有历史键的逐一比较,从而将复杂度降至O(n)。
RWKV模型在推理时如何实现O(1)的内存复杂度?
RWKV在推理时采用循环状态,其核心算子WKV通过逐通道指数衰减和当前token的加成项,将历史信息压缩进固定大小的状态向量中。每一步只更新该状态,因此内存占用不随序列长度增长,实现O(1)复杂度。
RetNet的三种计算模式分别是什么?它们各自适用于什么场景?
RetNet的三种模式是:parallel(并行)模式,用于训练,类似标准注意力,利用矩阵乘法并行计算;recurrent(循环)模式,用于推理,维护固定大小的状态矩阵,实现O(1)内存;chunkwise recurrent(分块循环)模式,用于长序列训练,在块内并行计算,块间传递状态,平衡计算效率和显存占用。
为什么理论上的O(n)复杂度并不总能带来实际的速度提升?
理论复杂度只考虑操作次数,而实际速度受限于硬件因素,如显存带宽、片上SRAM大小和tensor core利用率。线性注意力等模型若未进行I/O感知的kernel优化,会产生大量小矩阵操作和频繁的显存读写,导致速度不如高度优化的FlashAttention。只有专门编写I/O-aware kernel,如FlashLinearAttention,才能兑现理论优势。
RWKV和RetNet在表达力上有什么已知的短板?
RWKV的短板包括:将信息压缩进单一向量,限制了从长上下文中精确回忆细节的能力;对prompt中信息顺序敏感,指令位置变化会影响性能。RetNet的短板是固定衰减率不如数据依赖门控,在关联检索任务上弱于标准softmax attention,例如在FDA任务上RetNet得分为14.3,而GLA为19.9。
数据依赖门控相比固定衰减在提升模型表达力方面有何优势?
数据依赖门控使衰减率随输入内容变化,能更灵活地决定历史信息的保留程度,从而更好地处理关联检索等任务。GLA的消融实验显示,数据依赖门控的困惑度(14.77)优于固定衰减(16.55)和无门控(23.21),表明数据依赖门控更接近full attention的质量。
混合架构(如Based)如何缓解线性注意力的表达力短板?
Based通过在线性注意力旁边加入一小段精确的softmax attention(滑窗64-128 token),结合全局线性注意力,在关联检索任务上显著降低了困惑度(从纯线性注意力的2.29降至2.07),逼近Transformer++的1.87。这表明局部精确检索能有效弥补固定状态压缩带来的信息损失。