1 发展历史

1.1 早期序列模型

深度学习普及之前,序列建模主要依赖统计方法,如隐马尔可夫模型(HMM)和条件随机场(CRF)。这些模型通过手工特征和概率图表示序列关系,但在处理长距离依赖和复杂非线性映射能力有限。循环神经网络(RNN)的早期尝试(如Elman网络)奠定了序列数据动态建模的基础,但受限于梯度消失问题。

1.2 编码器-解码器框架的提出

2014年,Sutskever等人与Cho等人分别独立提出了序列到序列学习的编码器-解码器框架。该框架使用两个RNN:编码器将输入序列压缩为一个固定长度的上下文向量,解码器则基于该向量逐步生成输出序列。这一设计首次实现了可变长输入到可变长输出的端到端映射,并在机器翻译任务中取得了突破性进展。

1.3 注意力机制的引入

2015年,Bahdanau等人提出注意力机制,允许解码器在每一步动态关注输入序列的不同位置,而非依赖单一的固定上下文向量。这显著缓解了长序列中的信息瓶颈问题,并提升了翻译质量。注意力机制迅速成为Seq2Seq模型的标准组件。

1.4 Transformer时代的演进

2017年Vaswani等人提出Transformer模型,完全摒弃循环结构,仅基于自注意力机制和前馈网络构建编码器和解码器。Transformer并行性好,能高效建模长距离依赖,并借助多头注意力增强表示能力。自此,基于Transformer的Seq2Seq模型(如BERTGPT系列)主导了自然语言处理领域。

2 模型架构

2.1 编码器

2.1.1 循环神经网络编码器

循环神经网络编码器按时间顺序读取输入序列的每个元素,并在每个时间步更新隐藏状态。最终隐藏状态(或所有时间步隐藏状态的聚合)作为输入序列的表示。常用的RNN变体包括LSTMGRU,以缓解梯度消失问题。

2.1.2 Transformer编码器

Transformer编码器由多个相同层堆叠而成,每层包含多头自注意力子层和前馈神经网络子层,并采用残差连接层归一化。自注意力机制允许编码器同时关注输入序列的所有位置,输出一组上下文相关的表示向量。

2.2 解码器

2.2.1 循环神经网络解码器

循环神经网络解码器在每一时间步接收前一时刻的输出(或真实标签)和当前隐藏状态,生成下一个预测。解码器通常使用与编码器相同类型的RNN单元,并可利用注意力机制从编码器输出中获取上下文信息。

2.2.2 Transformer解码器

Transformer解码器结构与编码器类似,但多了一层掩码自注意力(防止模型看到未来信息)和一层编码器-解码器注意力(用于关注编码器输出)。解码器逐位自回归生成输出序列,每一步依赖于之前生成的所有符号。

2.3 注意力机制

2.3.1 加性注意力

加性注意力(Additive Attention)由Bahdanau等人提出,使用一个可训练的前馈网络来计算查询和键之间的匹配分数: score(q, k) = v^T tanh(W_q q + W_k k) 这种机制适合高维向量的非线性对齐,但计算开销较大。

2.3.2 点积注意力

点积注意力(Dot-product Attention)直接计算查询与键的点积作为分数: score(q, k) = q^T k / sqrt(d_k) 其中分母缩放因子,防止内积过大。该形式计算简单高效,广泛用于Transformer中。

2.3.3 多头注意力

多头注意力将查询、键、值分别线性投影到多个子空间,独立执行点积注意力后拼接并再次线性变换。这使模型能够从不同表示子空间关注输入的不同位置,提升表达能力。

3 工作原理

3.1 训练阶段

3.1.1 教师强制(Teacher Forcing)

训练时,解码器每个时间步以真实的目标序列符号作为输入(而非上一时刻的预测),从而加速收敛并稳定训练。教师强制可有效避免误差累积,但可能导致曝光偏差(Exposure Bias)问题。

3.1.2 损失函数交叉熵损失

模型训练通常使用交叉熵损失(Cross-Entropy Loss),即最大化每个解码步目标符号的预测概率。损失函数计算为:

`L = -∑_t log P(y_ty_{<t}, x)`

其中y_t为目标序列在时间步t的真实符号。

3.2 推理阶段

3.2.1 贪心搜索

贪心搜索(Greedy Search)在每一步选择当前概率最大的符号作为输出,并输入到下一步。该方法简单快速,但可能错过全局最优序列。

束搜索在每一步保留k个候选序列(束宽k),同时探索多种可能的路径。最终选择整体概率最高的序列。束搜索能显著提升生成质量,尤其在机器翻译等任务中。

4 关键变体

4.1 双向RNN Seq2Seq

双向RNN编码器通过正向和反向两个RNN分别处理输入序列,将两个方向的隐藏状态拼接作为最终表示。这使模型能够利用每个位置的上下文信息,提升编码质量。

4.2 带注意力机制的Seq2Seq

在标准编码器-解码器基础上引入注意力机制,解码器每一步动态计算与编码器各隐藏状态的权重,生成加权上下文向量。这极大改善了长序列的建模能力。

4.3 深度Seq2Seq模型

通过堆叠多层RNN或Transformer层,增加模型深度,从而捕获更复杂的序列模式。深度模型通常需要使用残差连接、层归一化和正则化技术来避免梯度问题。

4.4 序列到序列的CNN模型

基于卷积神经网络(CNN)的Seq2Seq模型(如ConvS2S)使用卷积层替代循环层,通过层级卷积和门控机制实现序列映射。CNN模型可并行计算,训练速度优于RNN,但对长程依赖的建模能力较弱。

5 应用领域

5.1 机器翻译

机器翻译是Seq2Seq最经典的应用,将源语言句子编码为向量,再解码为目标语言句子。注意力机制和Transformer的引入使翻译质量大幅提升。

5.2 文本摘要

Seq2Seq可将长文档编码后生成简短摘要。抽象式摘要直接生成新句子,而非抽取原文片段,需要较强的语义理解能力。

5.3 语音识别

语音识别中,声学特征序列被编码为特征表示,解码器输出对应的文字序列。结合连接时序分类(CTC)或注意力机制,可实现端到端语音识别。

5.4 对话生成

对话系统将用户输入序列编码,解码器生成回复。Seq2Seq模型可结合上下文和历史记录,用于开放域聊天或任务型对话。

5.5 图像描述生成

图像描述生成通常使用卷积神经网络(CNN)作为视觉编码器提取图像特征,再通过RNN或Transformer解码器生成文字描述。这是一个典型的多模态Seq2Seq任务。

6 优缺点

6.1 优点

6.1.1 灵活处理变长序列

Seq2Seq模型天然支持可变长的输入和输出,无需固定长度或对齐预处理,适用于文本、语音、时间序列等多种数据。

6.1.2 端到端学习

模型直接从原始序列对学习映射关系,无需手工设计中间特征或对齐规则,简化了系统流程并有利于联合优化。

6.2 缺点

6.2.1 长序列信息丢失

在RNN基础的Seq2Seq中,固定长度的上下文向量难以编码过长的输入序列,导致长距离依赖丢失。注意力机制和Transformer虽缓解此问题,但在极长序列上仍面临挑战。

6.2.2 训练计算成本高

Seq2Seq训练需要大量序列对数据和计算资源,尤其Transformer模型参数量大、训练时间长。推理阶段的束搜索也增加了计算开销。

7 未来方向

7.1 强化学习与Seq2Seq结合

使用强化学习(如策略梯度、Actor-Critic)直接优化离散序列生成的评价指标(如BLEU、ROUGE),可缓解曝光偏差问题,并提升生成序列的全局质量。

7.2 无监督Seq2Seq模型

利用循环重构(如双向翻译)、噪声自编码器或对抗训练等方法,在没有平行语料的情况下学习序列映射。无监督Seq2Seq有望降低对大量标注数据的依赖。

7.3 多模态序列生成

将图像、音频、视频等多种模态信息融入Seq2Seq框架,实现跨模态生成(如语音到图像描述、视频到文本)。多模态注意力机制和联合表示学习将是关键研究方向。