从 RNN 到 Transformer:序列建模的结构性转变

以下内容由AI辅助生成

一、自然语言建模的真正难点

自然语言处理的困难,并不在于单词本身,而在于单词之间如何构成有意义的整体。一句话的语义,往往由跨越较长距离、受句法和语义结构约束的成分共同决定。主语与谓语之间可能相隔多个从句,但它们之间的依赖关系依然是理解句子的关键。

因此,自然语言建模的核心问题,本质上是一个序列建模问题:模型需要在任意位置上,合理利用来自序列中其他位置的信息,尤其是那些距离较远但语义上至关重要的部分。


二、表示与结构的分离:从词向量说起

在神经网络进入 NLP 之前,单词只是离散符号,计算机无法直接处理。word2vec 等词向量模型通过分布式假设,将单词映射到连续向量空间,使语义相近的词在向量空间中彼此接近,从而为神经网络提供可计算的输入表示。

这类方法解决的是“词如何用向量表示”的问题:把离散的 token 变成可计算、可度量相似性、可组合的向量。但词向量并不理解语言结构,它不包含顺序、依赖或句法信息。在词向量层面,“dog bites man” 与 “man bites dog” 的差异极小。因此,词向量只是语言处理的表示层,而真正负责建模语言结构和依赖关系的,是后续的序列模型。


三、RNN:用状态表达序列的直觉解法

循环神经网络(RNN)是最早系统性处理序列数据的神经网络结构。它的核心思想非常直观:将序列看作一个随时间推进的过程,用一个隐藏状态不断吸收历史信息,并与当前输入共同决定下一状态。

在这一框架中,隐藏状态被视为“到目前为止的全部记忆”,序列信息被逐步压缩进一个向量中。对于较短、依赖结构简单的序列,这种机制能够有效工作。然而,在自然语言中,这一设计逐渐显露出根本性的局限。


四、编码器思想与固定长度向量的隐患

在 RNN 的基础上,Encoder–Decoder 架构成为早期机器翻译等任务的主流范式。该架构试图将任意长度的输入序列编码为一个固定长度的向量,再由解码器生成输出。这种设计在工程上极具吸引力:接口统一、结构简洁,似乎也符合“一句话有一个整体含义”的直觉。

但这一设计隐含了一个极强的假设:序列中的所有关键信息都可以被无损压缩进一个固定维度的向量中。语言并不满足这一假设。自然语言包含多实体、多关系、多层次结构,将这些信息压缩为单一向量,必然带来信息丢失。


五、从 RNN 到 LSTM:为“记不住”而生的改造

随着 RNN 被用于更长的句子、更复杂的翻译与生成任务,人们发现一个反复出现的问题:模型很难稳定地保留长距离信息。训练中常见的现象包括梯度在长序列上逐步衰减或放大,导致早期输入对后期输出的影响越来越弱;同时,隐藏状态维度固定,使得历史信息被不断覆盖,重要但较早出现的内容容易丢失。

LSTM(以及后来的 GRU)正是在这一背景下提出的。它并不改变“用递归方式推进序列”的总体框架,而是对 RNN 的内部记忆结构做了加强:引入显式的记忆通道,并用门控机制控制信息的写入、保留与读取,从而使模型在训练上更容易保留较长时间跨度的关键信息。

然而,LSTM 仍然继承了 RNN 的结构性前提:所有历史信息最终仍要通过有限维度的状态来承载,并且信息的使用仍遵循顺序访问。也就是说,LSTM 能显著缓解“记不住”的训练困难,但并未从根本上改变“固定容量 + 顺序传递”的结构限制。


六、RNN 与 LSTM 的结构性瓶颈

RNN 与 LSTM 的第一个核心问题是表示容量受限。隐藏状态维度是固定的,而输入序列长度却可变且可能很长。随着序列增长,新信息不断进入,早期但重要的信息容易被覆盖,出现表示能力饱和的现象。

第二个问题是依赖路径过长。远距离依赖必须通过逐步状态传递来实现,依赖路径长度随序列长度线性增长。这使得信息需要经过多次非线性变换才能抵达目标位置,导致远距离信息逐渐被稀释;同时也加剧了训练中梯度不稳定的风险。

第三个问题是访问方式受限。无论是 RNN 还是 LSTM,当模型在某一步需要利用很早之前的某个 token 信息时,都无法直接读取那个位置的表示,只能依赖逐步传递后的“残留痕迹”。这使得模型很难做到“按需回看”,更谈不上对不同上下文进行灵活检索。


七、CNN 的引入:以并行与局部模式补足序列建模

在深度学习体系中,CNN 以并行计算效率高、善于捕捉局部模式而著称。将 CNN 引入序列建模的动机,主要来自两个现实需求:一是希望摆脱 RNN 的严格时间依赖,从而提升训练与推理的并行效率;二是希望利用卷积对局部 n-gram 结构的强归纳偏置,更高效地抽取短程组合模式。

在文本序列中,CNN 通常通过局部卷积提取短程特征,再通过堆叠多层扩大视野,以期覆盖更长距离的上下文。这种思路在一定程度上能兼顾速度与局部结构建模,因此一度成为与 RNN 并行发展的路线。


八、CNN 的“感受野”问题及其语言局限

所谓感受野,指网络中某个位置的表示最终能够“看到”的输入范围。在 CNN 中,单层卷积只能关注局部窗口,想要覆盖更远的距离,必须不断增加网络深度。于是出现了第一个问题:感受野增长缓慢,要覆盖整句往往需要非常深的网络。

更关键的是第二个问题:即使感受野在理论上覆盖了全句,远距离信息仍需要经过多层非线性变换才能传递到目标位置,路径长度与网络深度直接相关。距离越远,通常意味着需要更多层的传递,信息更容易在层层变换中衰减,远距离依赖的贡献被持续稀释。

此外,卷积窗口是固定的,它无法根据当前语义需求动态改变“该看谁”。语言中的关键依赖往往是稀疏且结构化的:当模型处理某个词时,它真正需要关注的可能是远处的某个主语或指代对象,而不是附近的若干词。CNN 的局部、固定窗口机制难以提供这种基于上下文的选择性访问能力。


九、长距离依赖:语言建模的本质矛盾

自然语言中的依赖关系具有三个显著特征:依赖在整体中是稀疏的,但一旦存在便至关重要;依赖的重要性并不随距离单调衰减,而由句法和语义结构决定;依赖是动态的,不同位置在不同上下文中需要关注不同的历史信息。

而 RNN、LSTM 与 CNN 的共同问题在于,它们都在用固定结构提前决定信息如何被压缩或传播:要么将历史压缩进有限维度的状态,要么通过局部堆叠被动扩大视野。这种结构假设与语言依赖的选择性与动态性存在根本冲突。


十、注意力机制:从“压缩历史”到“动态选择”

注意力机制的提出标志着序列建模思路的关键转向。与其将所有历史信息压缩进一个固定向量,注意力机制选择保留所有位置的中间表示,并在当前任务需要时,通过可学习的权重对历史信息进行加权选择。

在这种机制下,模型不再依赖单一记忆状态,而是根据当前上下文动态决定“该看谁、看多少”。注意力提供了一种可学习的软指针,使模型能够直接访问与当前预测最相关的部分,从而显著缩短了信息传递路径,并缓解了固定长度表示带来的信息瓶颈。


十一、Transformer:结构性转变的完成

Transformer 正是在注意力机制的基础上构建的。它彻底放弃了以时间步为核心的顺序递归结构,转而采用基于自注意力的全局依赖建模方式。在 Transformer 中,任意两个位置之间都可以直接建立联系,依赖路径长度不再随序列长度增长。

同时,由于不再依赖前一时间步的隐藏状态,Transformer 可以对所有位置并行计算注意力权重。这一特性使其在 GPU 上具备极高的计算效率,为大规模模型和海量数据训练提供了可行性。自注意力机制既实现了“保留所有信息”,又通过权重分配实现“按需选择”,从结构上更贴合语言依赖稀疏、动态且不随距离衰减的特性。


十二、总结

从词向量到序列模型,问题从“词如何用向量表示”逐步走向“词如何形成结构化语义”。RNN 用递归状态试图承载历史,LSTM 在此基础上通过门控增强记忆保留能力,CNN 以卷积堆叠的方式在并行效率与局部模式建模上提供替代路径。然而,它们共同面临的结构性限制是:要么依赖固定容量的压缩状态,要么依赖固定窗口与多层传递的被动传播,难以对语言中稀疏而关键的长距离依赖进行动态、直接的访问。

Transformer 的关键突破在于改变了这一前提:它不再提前压缩历史,而是保留所有位置的表示,通过自注意力为每个位置动态分配依赖权重,实现对关键信息的直接访问;同时,其计算天然支持并行,使得在大规模数据与算力条件下训练更深更大的模型成为可能。这种从“顺序传递”到“全局访问、动态选择”的结构转变,构成了序列建模范式演进的核心脉络。


十三、关键要点

1. 核心问题

自然语言的长距离依赖具有稀疏性、非单调性、动态性三大特征,这与传统序列模型的固定结构假设存在根本冲突。

2. 两种范式

  • 压缩传递(RNN/LSTM):将历史压缩进固定维度状态,像把整本书总结成一句话
  • 选择访问(Transformer):保留所有位置的完整表示,通过动态计算注意力权重决定“该看谁、看多少”,再加权提取信息——相当于保留整本书,每次根据需要重点阅读相关章节

3. 依赖路径

信息传递路径长度决定了远距离依赖的建模能力:RNN/LSTM 为 ,CNN 为 ,Transformer 为

4. 结构性瓶颈

  • RNN/LSTM:固定容量 vs. 可变序列 → 表示瓶颈
  • CNN:固定窗口 vs. 稀疏依赖 → 访问受限
  • Transformer:全局注意力 → 并行高效,但复杂度为

5. 范式转变

从“如何更好地压缩”(LSTM 的工程优化)到“是否需要压缩”(Attention 的结构创新),后者带来了序列建模的根本性突破。