简介:从串行锁死到并行突破,从长程衰减到一步直达。本文对比RNN/CNN与Transformer的核心架构差异,剖析注意力机制如何同时解决串行计算、长程依赖与归纳偏置三大瓶颈,并给出不同序列建模场景下的选型依据与迁移注意事项。
在序列建模领域,循环神经网络及其变体长期占据主导地位。然而,当模型规模和数据量增长到一定量级时,这类方案暴露出三个难以回避的工程瓶颈。与此同时,另一种基于注意力机制的架构逐步兴起,并最终成为大规模序列建模的主流选择。本文要对比的,正是循环/卷积类序列模型与纯注意力架构这两类技术路线。
理解这场对比的意义在于:它不是学术趣味的争论,而是关乎“能否把模型规模做大”的工程决策。当团队面临长序列处理、训练效率、显存与算力利用率等现实约束时,架构选择直接决定了可行边界。
循环类序列模型:以循环神经网络及其门控变体为代表。其核心特征是隐藏状态按时间步递推,当前步的计算依赖前一步的输出。卷积类模型则通过固定宽度的滑动窗口提取局部特征,堆叠多层以扩大感受野。
纯注意力架构:以自注意力为核心算子,序列中任意两个位置直接计算相关性,不依赖递推结构,也不依赖固定的局部窗口假设。
两者都用于处理变长序列,都可用于翻译、生成、分类等任务。但在计算模式、信息传递路径和先验假设上,存在根本性分歧。
尽管架构差异显著,两者在以下方面目标一致:
换言之,它们解决的是同一类问题,差别在于用什么计算结构去解决。
循环模型的计算形式为:
h_t = f(h_{t-1}, x_t)
第 t 步必须等待第 t−1 步完成,整个序列被锁在一条串行链上。即便硬件拥有大量并行核心,前向传播每个时间步也只能处理一个位置,算力利用率受限。
注意力架构则不同。自注意力的计算形式为:
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
所有位置的 Q、K、V 可以同时计算,位置之间的相关性通过矩阵乘法一次性获得。这意味着序列长度不再决定串行步数,训练时整条序列可以并行处理。这是两者在工程上最根本的分水岭。
循环模型中,从位置 1 到位置 n 的梯度需要经过 n−1 次连乘。每次乘以激活函数的导数,路径一长,梯度就指数级衰减。门控机制能缓解这一问题,但无法根治;当序列达到数百个 token 以上时,信息衰减仍然明显。
卷积模型虽然可以并行,但卷积核具有固定局部感受野。例如宽度为 3 的卷积核一次只看 3 个相邻位置。要让句首和句尾交互,必须堆叠大量卷积层,信息传递路径为 O(log_k L) 或 O(L/k),k 为卷积核宽度。
注意力架构中,任意两个位置之间的信息传递路径长度为 O(1):无论序列多长,第 1 个位置和第 10,000 个位置在每一层里只隔一次矩阵乘法。这使得长程依赖的建模不再依赖深度堆叠或门控设计。
循环模型隐含“时间递推”假设,卷积模型隐含“局部性”和“平移不变性”假设。这些归纳偏置在数据量有限时有助于泛化,但当数据规模足够大时,过强的先验反而限制了模型表达能力。
注意力架构的归纳偏置相对较弱:它不预设位置之间的先后关系,也不预设局部窗口,而是让模型从数据中学习位置之间的相关性。这种“弱假设”在数据充足时更具扩展性。
| 维度 | 循环/卷积类模型 | 纯注意力架构 |
|---|---|---|
| 计算模式 | 时间步串行或局部窗口 | 全位置并行 |
| 信息路径长度 | O(n) 或 O(log_k L) | O(1) |
| 归纳偏置 | 强(递推/局部性) | 弱(数据驱动) |
| 长程依赖 | 易衰减,需门控缓解 | 直接建模 |
| 并行利用率 | 受限 | 高 |
| 扩展性 | 规模增大后收益递减 | 规模增大后仍可扩展 |
| 显存开销 | 相对较低 | 随序列长度增长较快 |
| 适用序列长度 | 中短序列 | 中长序列 |
选型不应绝对化,而应条件化:
从循环/卷积架构迁移到注意力架构时,需要关注:
循环/卷积类模型与纯注意力架构的根本差异,不在于“谁更像大脑”,而在于计算结构是否允许并行、信息路径是否足够短、先验假设是否足够弱。注意力机制之所以打开大规模训练的通路,正是因为它同时缓解了串行锁死、长程衰减和归纳偏置过强这三个工程瓶颈。
选型时,应结合数据规模、序列长度、训练资源、推理约束和团队工程能力综合判断。对于追求大规模预训练和长程依赖建模的场景,注意力架构通常是更自然的选择;对于短序列、流式处理或资源严格受限的场景,循环类方案仍有其适用空间。理解差异的来源,比记住结论更重要。