模型概述
Seq2Seq(Sequence-to-Sequence)是一种用于处理变长序列映射的深度学习框架,主要解决如机器翻译、文本摘要等任务。其核心思想是将输入序列编码为上下文向量,再解码生成目标序列。
数学表达: 其中 为编码器输出的上下文向量。
核心结构
编码器 (Encoder)
-
作用:将输入序列 编码为固定维度的上下文向量 。
-
常用结构:RNN/LSTM/GRU
-
最终状态:(最后时刻的隐藏状态)
解码器 (Decoder)
-
作用:基于 生成输出序列
-
生成方式:
-
初始状态:
注意力机制
传统 Seq2Seq 的长序列瓶颈:上下文向量 难以保留全部信息。
注意力机制(Attention)改进:
-
动态上下文:解码时每个时刻 生成不同的
-
类型:加性注意力(Bahdanau)、乘性注意力(Luong)。
训练与推理
训练目标
- 损失函数:交叉熵损失 其中 为真实标签。
推理方法
-
贪心搜索:每一步选择概率最高的词。
-
束搜索 (Beam Search):保留 Top-K 候选序列。
变体与改进
-
双向编码器:捕获前后文信息。
-
Transformer:基于自注意力,替代RNN结构。
-
拷贝机制:允许复制输入序列中的词。
-
Beam Search优化:长度归一化、重复惩罚。
注意事项
-
长序列问题:输入过长时仍需结合截断/分块策略。
-
推理效率:束搜索的宽度 需权衡质量与速度。