模型概述

Seq2Seq​(Sequence-to-Sequence)是一种用于处理变长序列映射的深度学习框架,主要解决如机器翻译、文本摘要等任务。其核心思想是将输入序列编码为上下文向量,再解码生成目标序列。

数学表达: 其中 为编码器输出的上下文向量。

核心结构

编码器 (Encoder)

  • 作用:将输入序列 编码为固定维度的上下文向量

  • 常用结构:RNN/LSTM/GRU

  • 最终状态:(最后时刻的隐藏状态)

解码器 (Decoder)

  • 作用:基于 生成输出序列

  • 生成方式:

  • 初始状态:

注意力机制

传统 Seq2Seq 的长序列瓶颈:上下文向量 难以保留全部信息。

注意力机制​(Attention)改进:

  • 动态上下文:解码时每个时刻 生成不同的

  • 类型:加性注意力(Bahdanau)、乘性注意力(Luong)。

训练与推理

训练目标

  • 损失函数:交叉熵损失 其中 为真实标签。

推理方法

  1. 贪心搜索:每一步选择概率最高的词。

  2. 束搜索 (Beam Search):保留 Top-K 候选序列。

变体与改进

  1. 双向编码器:捕获前后文信息。

  2. Transformer:基于自注意力,替代RNN结构。

  3. 拷贝机制:允许复制输入序列中的词。

  4. Beam Search优化:长度归一化、重复惩罚。

注意事项

  • 长序列问题:输入过长时仍需结合截断/分块策略。

  • 推理效率:束搜索的宽度 需权衡质量与速度。