首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Seq2Seq模型解析

Seq2Seq模型解析

原创
作者头像
一个风轻云淡
发布2026-01-24 18:35:13
发布2026-01-24 18:35:13
2130
举报
文章被收录于专栏:深度学习深度学习

前言

传统的自然语言处理任务,如文本分类序列标注,通常是在做“选择题”或“填空题”。它们的核心是理解与判断,目标是给输入文本打上一个或多个固定的标签。

然而,现实世界中的许多智能应用,则要求模型化身“创作者”,能够动态生成全新的、连贯的文本序列。这不仅是技术的演进,更是从“理解”到“创造”的一次跨越。典型的例子包括:

  • 🤖 机器翻译:输入一句中文,模型需要“创作”出地道的英文句子。
  • 📄 文本摘要:面对一篇长文,模型要能提炼精华,“写出”简洁的摘要。
  • 问答系统:用户提出一个问题,模型要组织信息,“生成”一个准确的回答。
  • 💬 对话系统:根据聊天的上下文,模型需理解语境并“回应”出自然的下一条对话。

仔细观察,这些生成任务有两个鲜明的共同点:

  1. 输入和输出都是序列:无论是词、字还是更细粒度的子词,它们都以序列的形式存在。
  2. 序列长度是动态可变的:输入和输出的长度没有固定比例,一句中文翻译成英文,长度可能更长,也可能更短。

面对这种“可变长度序列”到“可变长度序列”的映射挑战,传统的模型架构显得有些力不从心。为此,研究者们提出了一个强大而优雅的解决方案——Seq2Seq(Sequence to Sequence,序列到序列)模型

模型概述

Seq2Seq 模型的架构优雅而直观,它由两大核心组件构成:编码器解码器,共同协作完成“理解”与“创造”的使命。

  • 🔍 编码器(Encoder):它的角色如同一位“倾听者”或“阅读者”。它逐词“阅读”整个输入序列,吸收其全部信息,并将其整合、浓缩成一个固定长度的上下文向量。这个向量可以看作是整个输入序列的“思想精华”或“语义摘要”,承载了生成目标序列所需的所有关键信息。
  • ✍️ 解码器(Decoder):它的角色则像一位“创作者”或“讲述者”。解码器以编码器产出的上下文向量为起点,如同拥有了一个完整的故事蓝图,开始逐步地、一个字一个字地生成目标序列。在生成的每一步,它都会参考已生成的部分,并不断回顾最初的“蓝图”,以确保输出的连贯性与准确性。

这种“编码-解码”​ 的模式,巧妙地解决了输入与输出序列长度可变、结构自由的难题。上下文向量成为了连接两个序列的“语义桥梁”,使得从一种语言到另一种语言、从长文到摘要、从问题到答案的智能生成成为可能。💡

编码器

编码器通常由 RNN、LSTM 或 GRU 等序列模型构成,其任务是将输入语句的语义信息提取并压缩成一个上下文向量

可以将其理解为一次有记忆的逐词阅读

  • 编码器从第一个词开始处理,生成初始的隐藏状态,代表“此刻的理解”。
  • 每读入一个新词,就结合当前隐藏状态更新状态,如同滚雪球般累积之前的所有信息
  • 当读到句末时,最后的隐藏状态就包含了全句的语义精髓,我们将其作为上下文向量,传递给解码器作为生成的蓝图。

在模型处理输入序列时,循环神经网络会依次接收每个token的输入,并在每个时间步步更新隐藏状态。每个隐藏状态都携带了截止到当前位置为止的信息。随着序列推进,信息不断累积,最终会在最后一个时间步形成一个包含整句信息的隐藏状态。

最后的隐藏状态就会作为上下文向量(context vector),传递给解码器,用于指导后续的序列生成。

解码器

解码器是模型的“创作者”。它同样基于RNN架构,其任务是基于编码器传来的上下文向量,逐步“写出”目标序列。

它的工作是一个典型的自回归生成过程:

  1. 启动:以上下文向量为初始状态,并接收起始符 <sos>作为首个输入。
  2. 生成:在每一步,它根据当前状态和上一步生成的词,预测下一个词,并将该词作为下一步的输入,如此循环,确保连贯。
  3. 结束:当模型生成结束符 <eos>时,整个过程停止。

在生成开始时,循环神经网络以上下文向量作为初始隐藏状态,并接收一个特殊的起始标记 <sos>(start of sentence)作为第一个时间步的输入,用于预测第一个 token。

随后,在每一个时间步,模型都会根据前一时刻的隐藏状态和上一步生成的 token,预测当前的输出。这种“将前一步的输出作为下一步输入”的方式被称为自回归生成(Autoregressive Generation),它确保了生成结果的连贯性。

模型训练机制

. 数据准备:为句子标定起止点

训练的第一步是为目标语句明确起点和终点。我们会在每个目标句(如英文句子)的开头添加一个特殊的 <sos>(序列起始)​ 标记,在句末添加 <eos>(序列结束)​ 标记。

例如:

  • 原始句子I like you.
  • 训练格式<sos> I like you . <eos>

这两个标记是模型学会生成流程的“信号灯”:<sos>告诉解码器“从这里开始写”,<eos>则指示“在这里结束”。🚦

2. 前向传播:编码与解码的协作

训练时,数据会依次通过模型的两大部分:

  • 编码器:它接收源语言序列(如中文“我爱你”),通过词嵌入层和RNN/LSTM,逐步将整句的语义压缩成一个上下文向量。这个向量是源句的“思想摘要”。
  • 解码器:它的任务是根据这个“摘要”生成目标语句。解码器以该上下文向量作为初始的“创作思路”(隐藏状态),并接收<sos>作为第一个输入,开始预测序列。

这里存在一个关键区别:训练策略(Teacher Forcing)与推理策略(自回归)不同

  • 推理(预测)时:模型采用自回归方式,即每一步的输入都是自己上一步的预测结果。这就像真实考试,必须独立作答。
  • 训练时:为了加速收敛和稳定学习,常采用 Teacher Forcing​ 策略。即解码器每一步的输入,是真实目标序列中对应位置的前一个词(Ground Truth)。这就像有老师在一旁,每一步都提示你正确的上一个词是什么,让你能更快地学会整体的句子结构和对应关系。

训练时,解码器的生成是逐步进行的,因此每一步(每个时间步)我们都能计算一个损失值,衡量模型对当前词的预测精度。而整个句子的总损失,就是所有这些时间步的损失值之和

通俗理解:这好比老师批改一篇由模型“逐词写就”的作文。老师不会只给最终分数,而是对每一个用词的对错都进行打分,最后将所有词的扣分(损失)累加起来,得到这篇“作文”的总扣分。模型的目标,就是在整个训练集上,最小化这个“总扣分”,从而学会用更准确的词汇,写出更流畅的句子。

通过这种“逐步计算,累加求和”​ 的损失计算方式,模型得以从每个词的细粒度反馈中学习,最终优化其从理解到生成的整体能力。

计算出总损失后,模型的“学习”才真正开始。我们需要告诉模型如何调整内部参数,才能在下次写得更好。这就是反向传播优化的环节。

在PyTorch等现代深度学习框架中,这一切变得异常简洁。只需一行代码:

代码语言:python
复制
loss.backward()  # 魔法开始的地方

当执行这行代码时,框架会自动沿着时间维度展开计算图,从最终的损失值开始,逆向计算模型每一个参数(从解码器的输出层,一路回溯到编码器的词嵌入层)的梯度。这些梯度精确地指明了“每个参数应该向哪个方向、调整多少,才能降低损失”。

模型推理机制

训练完成后,Seq2Seq模型便进入了它的“实战阶段”——推理。这一过程旨在利用已学习到的知识,为全新的输入序列动态生成相应的目标序列。推理的核心流程清晰而严谨,通常包含以下关键环节:

1. 编码器:信息的一次性封装

推理阶段编码器的处理流程与训练时完全一致:

  • 输入序列(如一个待翻译的句子)经过分词、词嵌入等预处理。
  • 随后,由RNN/LSTM/GRU构成的编码器网络逐步处理序列,最终将整句的语义信息浓缩成一个固定长度的上下文向量
  • 这个向量被传递给解码器,作为其生成过程的初始“语义蓝图”和隐藏状态

此阶段编码器的工作是确定性的,仅执行一次,为后续的生成奠定基础。

2. 解码器:自回归的创意之旅

推理的核心与魅力在于解码器的生成过程。它采用自回归生成方式,如同一位逐字创作的作家:

  • 启动:解码器以编码器传来的上下文向量为初始状态,并接收起始标记 <sos>​ 作为第一个“起笔”信号。
  • 循环生成:在每一步,解码器根据当前隐藏状态和上一步生成的词,预测下一个词的概率分布。上一步生成的词会立即成为下一步的输入,如此循环往复。
  • 终止:生成过程持续进行,直到模型输出结束标记 <eos>​ ,或达到预设的最大生成长度,标志着句子创作完成。
3. 生成策略:如何在每一步做出“选择”?

在自回归的每一步,解码器输出的是一个覆盖整个词表的概率分布。如何从这个分布中选出一个具体的词,直接决定了生成结果的质量和风格。常见的选择策略主要有两种:

策略

机制

优点

缺点

🔍 贪心解码​

每一步都无条件选择当前概率最高的词。

简单高效,计算速度快。

容易陷入局部最优,生成结果可能生硬、缺乏多样性,且一旦选错难以回头。

📡 束搜索​

每一步保留得分最高的k个候选序列(k为束宽),在扩展中持续评估,最后选择总体得分最高的完整序列。

全局视野更优,生成质量通常更高、更流畅。

计算和内存开销较大,且k值越大,代价越高。

在实际应用中,贪心解码常用于对速度要求极高的场景或作为基线方法;而束搜索因其更好的生成质量,成为机器翻译等任务中的主流选择。此外,还有采样(如Top-k、Top-p采样)等策略,常用于追求多样性和创造性的对话、故事生成等任务。

至此,一个完整的Seq2Seq模型完成了从理解输入到创造性输出的全过程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 模型概述
    • 编码器
    • 解码器
  • 模型训练机制
  • 模型推理机制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档