线性RNN和线性Attention有何区别与联系?

1个回答

写回答

Tutu兔兔

2026-02-11 04:09

+ 关注

因为Transformer结构包含Encoder和Decoder两部分,而线性RNN仅仅是一种Decoder的形式。在视觉领域,目前仍然是CNN(卷积神经网络)和ViT(Vision Transformer)占据主导地位,RNN几乎没有什么用武之地(捂脸)。不过,言归正传,从技术角度来看,我发现很多人似乎没有清楚地区分线性RNN和线性Attention。严格来说,线性Attention才是传统Attention机制的真正竞争对手(包括Encoder和Decoder部分),而线性RNN实际上是与Attention + Causal Mask相竞争的一种形式。当然,由于大语言模型的成功,现在大家更关注的是Decoder-only架构的模型。至于为什么大语言模型会选择Decoder-only架构,感兴趣的读者可以参考我之前的一篇回答。接下来我们具体分析一下线性RNN和线性Attention之间的区别。首先,在线性RNN中,线性指的是移除了传统RNN中的非线性依赖关系,从而支持并行计算(例如通过卷积或Parallel Scan实现)。而在线性Attention中,线性则指的是去掉了Softmax操作,从而降低了原本与序列长度平方相关的计算复杂度。尽管二者的出发点不同,但在Decoder架构下,线性Attention + Causal Mask实际上可以被表示为一种线性RNN的形式,只不过其状态空间从传统的向量扩展成了矩阵,这可以看作是对状态空间的一种扩充方法。关于这种状态空间大小对线性RNN带来的局限性,大家可以参考我的另一篇回答。以RWKV(基于线性RNN)和RetNet(基于线性Attention)为例,二者都是通过RNN的方式对KV缓存进行压缩,然后再通过Query从中检索信息。如果忽略指数衰减、归一化等技巧,前者压缩的是( exp(k) )与( v )元素相乘得到的向量,而后者压缩的是( k )和( v )外积得到的矩阵。前者通过Query与压缩后的向量进行元素级乘法来检索信息,而后者则是通过Query与压缩后的矩阵进行矩阵-向量乘法来完成信息检索。因此,线性Attention + Causal Mask本质上是一种特殊的RNN形式,可以借鉴线性RNN中用于提升性能的技巧,例如门控机制。对此感兴趣的读者可以参考@sonta的GLA论文。从当前的技术发展来看,线性Attention相比线性RNN具有以下几点优势:第一,线性Attention的状态空间更大,能够更好地缓解压缩序列信息时的压力;第二,线性Attention的算子实现可以采用分块(Chunkwise)的方式,在局部范围内使用矩阵乘法,从而提高效率;第三,线性Attention可以保留多头注意力的设计,便于实现张量并行,这对于大规模模型训练尤为重要。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号