Self-Attention 为何利于并行训练,与 RNN 相比有哪些局限?
未标记
考查重点:并行依赖与长序列代价。Attention 的各位置可矩阵并行计算,RNN 依赖前一隐藏状态;代价是密集注意力的长序列计算和显存压力
本题目录
参考答案
核心回答
Self-Attention在同一层内,可以把所有位置的Q、K、V及相关性计算写成矩阵运算,训练时沿序列维并行。普通RNN的隐藏状态满足h_t=f(h_{t-1},x_t),当前位置必须等待上一步,序列内有递推依赖,因此难以获得同样的并行度。
Self-Attention还让相距很远的位置直接交互,缩短信息传递路径;代价是密集注意力的计算随序列长度平方增长,长文本的状态和访存也很重。流式、固定内存或端侧场景仍可能适合循环或状态空间结构,不能只凭训练并行性断言所有任务更优。
因果掩码为何不破坏训练并行
教师强制训练时,完整正确序列已知。例如输入[BOS,A,B],不同位置可以在同一前向里分别预测A、B、C;因果掩码把各位置的未来分数设为负无穷,softmax后权重为0,阻止标签泄漏。
掩码规定“允许看哪些信息”,并不要求按时间逐位置执行。同层各位置都使用上一层的表示,能同时计算;不同网络层之间仍有依赖,不能把整个模型理解为一次无依赖运算。
生成时则不同:C尚未选出,就不能把它作为下一步输入。因此普通自回归解码仍逐token推进,KV Cache减少前缀重算,却不会消除生成顺序依赖。批处理和投机解码可以改善效率,但属于不同层面的优化。
复杂度和适用边界
长度N、隐藏维度d的标准密集注意力,其token两两交互约O(N²d),朴素实现会存N×N分数矩阵;投影和前馈还有约O(Nd²)等成本。RNN常见单层序列计算约O(Nd²),但包含N步递推。哪种实际更快,还受N、d、硬件和实现影响。
FlashAttention可避免保存完整注意力矩阵,降低显存读写,却通常不改变密集两两交互的二次计算阶数。普通Transformer流式解码还需要随上下文增长的KV,循环模型则可用固定维度状态压缩过去信息,代价是历史细节可能丢失。
追问:一跳连接就一定学得到长依赖吗?
不是。一跳降低了架构上的路径长度,但能否利用远处证据仍取决于训练数据、位置机制、注意力分配和任务难度;长上下文里找到信息与正确使用信息也不同。
参考资料
- 国内:wdndev:Attention与Transformer:参考序列信息传递与并行性的区分,说明正文中训练可并行但自回归解码仍逐 token 推进的原因。
- 国内:WeThinkIn:模型架构与工作原理:用已知训练序列解释因果掩码为何不妨碍位置并行。
- 国内:Datawhale:第三章 大语言模型基础:对照RNN隐藏状态递推与注意力矩阵计算,解释长距离依赖。
- 国外:Vaswani等 / Google:Attention Is All You Need:依据序列依赖、路径长度与单层复杂度的比较,解释正文中 Self-Attention 相对 RNN 的并行收益和长序列开销。
- 国外:Hugging Face:Caching v4.57.1:依据增量生成对历史 KV 的依赖,说明正文中长上下文解码状态增长及其与循环固定状态的取舍。
