Seq2Seq(Sequence-to-Sequence,序列到序列)工作原理
2026/6/2 12:37:27 网站建设 项目流程

Seq2Seq(Sequence-to-Sequence,序列到序列) 是一种基于 Encoder-Decoder(编码器-解码器) 架构的深度学习模型,核心是将任意长度的输入序列转换为任意长度的输出序列,主要用于机器翻译、文本摘要、对话生成等序列生成任务。

B站动画讲解seq2seq 包教包会

一、Encoder-Decoder 通用结构图

1. 整体架构总图(标准Seq2Seq)
输入序列 x₁ x₂ x₃ ... xₘ ↓ ┌──────────┐ │ Encoder │ 编码器(RNN/LSTM/GRU/Transformer) │ 编码压缩 │ └────┬─────┘ │ 上下文语义向量 C │ ┌────┴─────┐ │ Decoder │ 解码器(RNN/LSTM/GRU/Transformer) │ 逐步生成 │ └────┬─────┘ ↓ 输出序列 y₁ y₂ y₃ ... yₙ

2. 带细节完整版结构图(含时序、隐藏态、起止符)
<SOS> = 起始符 <EOS> = 结束符 输入: x₁ → x₂ → x₃ → … → xₘ ↓ ↓ ↓ ↓ ┌──────────────────────┐ │ Encoder 编码器 │ │ 逐时刻更新隐藏状态 │ └──────────┬───────────┘ │ 最终语义向量 C │ ┌──────────┴───────────┐ │ Decoder 解码器 │ <SOS>│ 自回归逐词生成 │→ y₁ y₁ →→│ │→ y₂ y₂ →→│ │→ y₃ y₃ →→│ │→ yn y₃ →→│ │→ <EOS> └──────────┬───────────┘

3.加Attention 注意力版结构图

解决固定语义向量瓶颈

输入序列 x₁ x₂ x₃ ... xm ↓ ┌──────────┐ │ Encoder │ → 输出所有时刻隐藏态 h₁,h₂...hm └────┬─────┘ │ ┌────┴─────┐ │ Attention│ 计算权重,动态聚焦输入每个位置 └────┬─────┘ │ ┌────┴─────┐ │ Decoder │ 每生成一个词,都看输入最相关部分 └────┬─────┘ ↓ 输出 y₁ y₂ ... yn

4.一句话总结
  1. Encoder:吃进去变长输入序列,提炼全局语义,输出表征向量/全部隐藏态
  2. 中间层:普通版是固定上下文向量C;Attention版是加权语义上下文
  3. Decoder:接收语义信息,从<SOS>开始自回归,逐个生成输出,直到<EOS>

二、核心组件

1. 编码器 (Encoder)
  • 功能:读取并理解输入序列,将其压缩为一个固定长度的上下文向量 (Context Vector),也叫“语义向量”或“思想向量”。
  • 结构:通常由循环神经网络(RNN、LSTM、GRU,)或者transform 构成。
  • 工作过程
    1. 将输入序列(如句子[我, 爱, 中, 国])的每个元素转为词向量 (Word Embedding)。
    2. 按顺序输入编码器,逐时间步更新隐藏状态 (Hidden State)。
    3. 处理完所有输入后,最后一个时间步的隐藏状态即为上下文向量 c。
2. 解码器 (Decoder)
  • 功能:基于上下文向量 c,逐词生成输出序列。
  • 结构:由循环神经网络(RNN、LSTM、GRU,)或者transform 构成。
  • 推理/真实预测(自回归生成) 训练使用的是Teacher Forcing
    1. 初始化:将编码器的上下文向量 c 作为解码器的初始隐藏状态。
    2. 起始:以特殊符号<SOS>(Start of Sentence) 作为第一个输入。
    3. 循环生成:
      • 输入:上一步生成的词y t − 1 y_{t-1}yt1+ 当前隐藏状态h t − 1 ′ h_{t-1}'ht1
      • 输出:预测下一个词y t y_tyt,并更新隐藏状态h t ′ h_t'ht
    4. 结束:当预测到特殊符号<EOS>(End of Sentence) 时停止。
3.自回归生成
[Decoder 解码器] ↓ [全局上下文语义向量] <SOS> ────▶ 解码器 ────▶ 输出 y₁ │ ▼ y₁ ────▶ 解码器 ────▶ 输出 y₂ │ ▼ y₂ ────▶ 解码器 ────▶ 输出 y₃ │ ▼ y₃ ────▶ 解码器 ────▶ 输出 <EOS> 停止

自回归 本质一句话图

生成一个词 → 传回给自己 → 再生成下一个

三、训练机制:Teacher Forcing

1.什么是 Teacher Forcing

Teacher Forcing(教师强制/强制教学)是 Seq2Seq 模型训练时 的一种输入策略:

  • 训练时:不使用模型上一步的预测结果作为输入,而是直接使用真实标签 (Ground Truth) 作为输入。
  • 目的:防止早期错误累积,加速训练收敛。
二、先看懂:不使用 Teacher Forcing 会怎样?
<SOS> → 模型预测 y1 y1 → 模型再预测 y2 y2 → 模型再预测 y3 ……直到 <EOS>

问题:前面预测错一个词,后面全部跟着错 → 误差逐级累积,越错越离谱。

训练早期模型很菜,动不动就预测错,错误一路往后传,
模型很难收敛、训练极慢、还容易不稳定。


三、使用 Teacher Forcing 训练流程(核心)

先约定符号

  • <SOS>:句子起始符

  • y 1 , y 2 , y 3 y_1,y_2,y_3y1,y2,y3:真实标准答案

  • y ^ 1 , y ^ 2 , y ^ 3 \hat y_1,\hat y_2,\hat y_3y^1,y^2,y^3:模型自己预测的结果

设真实正确句子:y1 y2 y3 <EOS>

训练时 Decoder 输入是:

解码器每一步输入用【真实标签】 <SOS> ────→ 预测 ŷ1 y1(真实) ─→ 预测 ŷ2 y2(真实) ─→ 预测 ŷ3 y3(真实) ─→ 预测 <EOS>

一句话:
训练时喂给解码器的是“标准答案”,不是模型自己的“猜测答案”。


四、Teacher Forcing 实例

输入:中文我爱吃苹果
真实英文标签:I like eating apple <EOS>

  1. Decoder 输入<SOS>→ : I(预测)
  2. Decoder 输入 (真实) I → : love(预测)
  3. Decoder 输入 (真实) like → : drink(预测)
  4. Decoder 输入 (真实)eating → :banana(预测)
  5. Decoder 输入 (真实) apple → : <EOS>(预测)

全程用标准答案当输入,不用模型自己预测的词。


Teacher Forcing 核心优点
  1. 加速模型收敛
    每一步都给正确上下文,模型学得快、梯度更新更准。

  2. 避免误差累积
    不会因为前一步预测错误,带偏后面所有训练步骤。

  3. 训练更稳定、梯度更干净
    输入都是真实标签,噪声小,容易训练深层Seq2Seq、Transformer。

五、自回归推理 vs Teacher Forcing 训练

先约定符号

  • <SOS>:句子起始符
  • y 1 , y 2 , y 3 y_1,y_2,y_3y1,y2,y3:真实标准答案
  • y ^ 1 , y ^ 2 , y ^ 3 \hat y_1,\hat y_2,\hat y_3y^1,y^2,y^3:模型自己预测的结果

Teacher Forcing(训练用) 特点每一步输入都给正确答案,不看模型猜得怎么样;无错误传递,训练快、收敛稳。

解码器每一步输入用【真实标签】 <SOS> ────→ 预测 ŷ1 y1(真实) ─→ 预测 ŷ2 y2(真实) ─→ 预测 ŷ3 y3(真实) ─→ 预测 <EOS>

普通自回归(推理/预测时、不用TF) 特点自己猜的当下一步输入;前面错一个,后面全跑偏 → 误差累积。

解码器每一步输入用【自己上一步的预测】 <SOS> ────→ 预测 ŷ1 ŷ1(模型猜的) ─→ 预测 ŷ2 ŷ2(模型猜的) ─→ 预测 ŷ3 ŷ3(模型猜的) ─→ 预测 <EOS>

六、典型应用

1.机器翻译(最经典Seq2Seq案例)

场景:中文句子 → 英文句子

  • Encoder(编码器):输入中文整句,逐词读进去,把整句话语义压缩成一个向量。
  • Decoder(解码器):拿着Encoder的语义向量,逐词生成英文,直到生成结束符。
    工作流程:
  1. 输入:我今天很开心进 Encoder
  2. Encoder 提炼整句含义
  3. Decoder 从<SOS>开始,一个词一个词吐出:Iamveryhappy<EOS>

2.智能对话机器人

场景:用户问句 → 机器人回答

  • Encoder:理解用户发的一句话「今天天气怎么样?」
  • Decoder:根据理解的语义,自动生成回复「今天晴天,适合出门」

3.文本摘要(长文→短摘要)

场景:长篇新闻文章 → 一两句话摘要

  • Encoder:读完整篇长新闻,抓取核心事件、人物、时间。
  • Decoder:浓缩核心信息,自动生成简短摘要。

4.语音识别(语音→文字)

场景:语音声波序列 → 汉字文本

  • Encoder:输入音频波形/频谱特征,把语音特征编码成语义表征。
  • Decoder:把语音表征解码,逐字输出汉字。

5.语音合成 TTS(文字→语音)

场景:文字 → 人声音频

  • Encoder:输入文本句子,理解语义、语气、断句。
  • Decoder:根据文本语义,逐帧生成语音波形,合成人声。

6.图片描述 Image Caption(看图说话)

场景:一张图片 → 自动生成一句话描述

  • Encoder:用CNN/ViT把图片特征编码,理解图里有什么(人、狗、草坪)。
  • Decoder:基于图像特征,生成文字:一个小孩在草地上遛狗

7.代码生成(自然语言→代码)

场景:文字需求 → 自动写Python代码

  • Encoder:理解自然语言需求「写一个求和函数」。
  • Decoder:逐行逐字符生成Python代码。

8.时间序列预测(股票/气温预测)

场景:过去7天温度 → 预测未来3天温度

  • Encoder:编码历史时间序列数据,捕捉趋势、周期。
  • Decoder:一步步输出未来连续预测值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询