Seq2Seq 模型的基本结构是什么?它常用于解决哪类问题?
Seq2Seq 模型的基本结构Seq2SeqSequence-to-Sequence的核心思想是将变长输入序列映射为变长输出序列通过编码-解码两阶段架构实现。整体架构输入序列: x₁ x₂ x₃ x₄ EOS ↓ ↓ ↓ ↓ [Encoder RNN] ← 编码器将输入序列压缩为语义向量 ↓ ↓ ↓ ↓ h₁ h₂ h₃ h₄ ↓ 上下文向量 c ← 最终隐藏状态编码整个输入序列的语义 ↓ [Decoder RNN] ← 解码器从上下文向量逐步生成输出序列 ↓ ↓ ↓ ↓ y₁ y₂ y₃ EOS ← 输出序列长度可与输入不同1. 编码器Encoder编码器是一个 RNNLSTM/GRU逐个读取输入序列最终将整个序列的信息压缩到一个上下文向量 c中hₜ f(h_{t-1}, xₜ) ← 逐步编码 c h_T ← 最后一步的隐藏状态作为上下文向量输入序列长度 T_x编码器处理后得到固定维度的向量 cc 是整个输入序列的语义摘要编码器通常用双向 RNN以捕获完整上下文2. 解码器Decoder解码器是另一个 RNN以上下文向量 c 为初始状态自回归地逐步生成输出s₁ f(c, SOS) ← 第一步以 c 初始化输入起始符 y₁ g(s₁) ← 生成第一个输出 s₂ f(s₁, y₁) ← 第二步以上一步输出作为输入 y₂ g(s₂) ...直到生成 EOS 停止关键特点自回归每一步的输入是上一步的输出形成自循环长度自由输出序列长度 T_y 由模型自行决定遇到EOS停止起始/结束标记SOS触发生成EOS终止生成3. 训练与推理的差异训练Teacher Forcing: 解码器每步输入 真实标签 y_{t-1}而非模型自己的预测 优点收敛快梯度稳定 缺点训练/推理分布不一致exposure bias 推理自回归: 解码器每步输入 上一步的预测 ŷ_{t-1} 误差会逐步累积4. 核心瓶颈上下文向量 c 的信息压缩问题基本 Seq2Seq 的最大缺陷是整个输入序列被压缩为单一固定维度的向量 c。输入: The weather is nice today and I want to go for a walk in the park ↓ 全部压缩到一个向量 c如 256 维 ↓ 解码器: 逐步生成翻译问题长输入序列的信息无法被有限维向量完整编码解码器在生成后面的词时对输入序列早期部分的信息访问困难序列越长信息丢失越严重解决方案 → 注意力机制Attention不使用单一 c而是每一步动态计算对输入各位置的注意力权重 解码第 t 步: α_{t,i} softmax(score(s_{t-1}, h_i)) ← 对每个编码器隐藏状态打分 cₜ Σ α_{t,i} · h_i ← 加权聚合每步一个不同的 cₜ sₜ f(s_{t-1}, cₜ, y_{t-1}) ← 用动态 cₜ 解码注意力机制让解码器在每一步都能回看输入序列的所有位置彻底解决了信息瓶颈问题也是 Transformer 的直接前身。常用于解决的问题Seq2Seq 适用于输入和输出都是变长序列且两者之间存在某种映射/转换关系的任务任务类别具体任务输入 → 输出示例机器翻译语言间翻译“我爱自然语言处理” → “I love NLP”文本摘要长文压缩为摘要[长篇文章] → [几句话摘要]对话生成对话回复“你好今天天气怎样” → “今天晴天25度”语音识别语音帧转文本[声学特征序列] → “你好世界”代码生成自然语言转代码“排序一个列表” →list.sort()拼写纠错错误文本转正确“I havv a appl” → “I have an apple”语音翻译语音直接转目标语言文本[中文语音] → “Hello”共同特征这些任务都满足输入是序列token 序列、帧序列等输出是序列长度不固定与输入长度无确定关系存在输入到输出的系统性映射而非逐词对齐输出需要逐步生成自回归总结Seq2Seq 由编码器和解码器两部分组成编码器将变长输入序列压缩为上下文向量解码器从该向量出发自回归地生成变长输出序列。它解决的核心问题是变长到变长的序列映射广泛应用于翻译、摘要、对话等任务。基本 Seq2Seq 的主要瓶颈是单一上下文向量的信息压缩损失注意力机制通过让解码器每步动态关注输入的不同位置解决了这一问题并最终演化为 Transformer 架构。