深度学习的数学原理(二十二)—— Seq2Seq编码器-解码器基础框架

上一节我们系统性证明了:传统RNN/LSTM受梯度链式连乘串行递推约束,既无法高效建模长距离依赖,又丧失并行加速能力,难以胜任复杂序列转换任务。

而自然语言处理核心刚需------机器翻译、文本生成、摘要改写 ,本质都是变长输入序列 → 变长输出序列 的映射问题。为统一解决这类序列到序列的建模需求,学界提出 Seq2Seq(Sequence to Sequence)编码器-解码器通用框架 ,它也是原始Transformer最先落地、最经典的应用底座。本节从数学建模思想、结构分工、数值极简示例、核心痛点四层讲解,为后续Transformer拆解铺垫底层逻辑。

一、Seq2Seq核心数学建模定义

设定通用序列符号体系:

  1. 源输入序列(待翻译/待转换):
    X=[x1,x2,...,xTx], xi∈Rd\boldsymbol{X} = [x_1,x_2,\dots,x_{T_x}],\ x_i\in \mathbb{R}^dX=[x1,x2,...,xTx], xi∈Rd
    TxT_xTx:输入序列长度
  2. 目标输出序列(翻译结果/生成文本):
    Y=[y1,y2,...,yTy], yj∈Rd\boldsymbol{Y} = [y_1,y_2,\dots,y_{T_y}],\ y_j\in \mathbb{R}^dY=[y1,y2,...,yTy], yj∈Rd
    TyT_yTy:输出序列长度,满足 Tx≠TyT_x \ne T_yTx=Ty(变长映射核心特征)

Seq2Seq 的终极数学目标:

学习映射函数 \\mathcal{F} ,最大化条件概率:
F:max⁡ P(Y∣X) \mathcal{F}: \quad \max \ P(\boldsymbol{Y}\mid \boldsymbol{X}) F:max P(Y∣X)

也就是:给定完整输入源序列,建模输出目标序列的联合条件分布。


二、编码器 Encoder:将输入序列压缩为全局上下文向量

2.1 核心思想

编码器的唯一任务:逐时序吸收输入所有位置的语义、时序、关联信息,把变长源序列,抽象压缩成一个固定维度的全局上下文隐向量 C\boldsymbol{C}C

摒弃局部短时记忆,聚合全局序列特征,完成「序列 → 全局表征」。

2.2 数学表达(经典RNN编码器)

沿用基础循环递推:
ht=σ(Wxhxt+Whhht−1+bh) h_t = \sigma\left(W_{xh}x_t + W_{hh}h_{t-1}+b_h\right) ht=σ(Wxhxt+Whhht−1+bh)

遍历全部 TxT_xTx 个输入时刻后:

直接取最后一刻隐藏状态作为全局上下文:
C=hTx \boldsymbol{C} = h_{T_x} C=hTx
C∈Rh\boldsymbol{C}\in\mathbb{R}^hC∈Rh:固定维度向量,浓缩整句输入的全部核心信息。

2.3 通俗理解

机器翻译场景:输入中文句子所有字词,编码器读完之后,把整句话的含义、语序、逻辑打包压缩成一个向量包裹,传给解码器。


三、解码器 Decoder:基于上下文向量逐时刻生成目标序列

3.1 核心思想

解码器承接编码器输出的全局上下文 C\boldsymbol{C}C,自回归逐一生成目标序列每一个token

每一步的生成,依赖:全局上下文 + 上一时刻已生成的输出记忆,完成「全局表征 → 变长目标序列」。

3.2 数学自回归生成逻辑

初始化:首个时刻依托上下文向量启动生成
s0=C s_0 = \boldsymbol{C} s0=C

后续每一步递推:
sj=σ(Wysyj−1+Wsssj−1+WcsC+bs) s_{j} = \sigma\left(W_{ys}y_{j-1} + W_{ss}s_{j-1} + W_{cs}\boldsymbol{C}+b_s\right) sj=σ(Wysyj−1+Wsssj−1+WcsC+bs)

再通过线性层映射词表概率:
P(yj∣y1,...,yj−1,X)=softmax(Wvocabsj+bvocab) P(y_j \mid y_1,\dots,y_{j-1},\boldsymbol{X}) = \text{softmax}(W_{\text{vocab}}s_j + b_{\text{vocab}}) P(yj∣y1,...,yj−1,X)=softmax(Wvocabsj+bvocab)

核心特点:自回归串行生成,当前词依赖历史生成词与全局上下文,严格模拟人类逐词造句、逐词翻译的过程。


四、具象机器翻译实战数值案例

本节贴合真实极简中英机器翻译场景,不再抽象标量模拟,绑定业务语义+词嵌入数值+完整编解码数学推演,全程可手动验算,完美匹配你专栏「数学原理+落地数值」的写作风格。

4.1 设定真实翻译业务场景

翻译任务:短句直译
源中文输入:我 爱 → 翻译目标英文输出:I love

  1. 源输入序列长度 Tx=2T_x=2Tx=2
  2. 目标输出序列长度 Ty=2T_y=2Ty=2
  3. 特殊标记:解码器起始占位符 <Start>

4.2 词嵌入初始化(人为定义低维数值,方便计算)

为每个字词分配一维简化词嵌入向量:

  • x1x_1x1 = "我" :词嵌入 =1.0= 1.0=1.0
  • x2x_2x2 = "爱" :词嵌入 =2.5= 2.5=2.5
  • 解码器起始符 y0y_0y0 = <Start> :固定赋值 =0= 0=0

4.3 全局统一模型超参数

编码器(中文序列压缩 RNN)

递推公式:
ht=tanh⁡(Wxh⋅xt+Whh⋅ht−1)h_t = \tanh\left(W_{xh}\cdot x_t + W_{hh}\cdot h_{t-1}\right)ht=tanh(Wxh⋅xt+Whh⋅ht−1)

初始隐状态:h0=0h_0 = 0h0=0

固定权重:Wxh=0.3, Whh=0.4W_{xh}=0.3,\ W_{hh}=0.4Wxh=0.3, Whh=0.4

全局上下文规则:C=hTx\boldsymbol C = h_{T_x}C=hTx(取编码器最后时刻隐状态)

解码器(英文序列生成 RNN)

初始记忆绑定:s0=Cs_0 = \boldsymbol Cs0=C

递推公式:
sj=tanh⁡(Wysyj−1+Wsssj−1+WcsC)s_j = \tanh\left( W_{ys}y_{j-1} + W_{ss}s_{j-1} + W_{cs}\boldsymbol C \right)sj=tanh(Wysyj−1+Wsssj−1+WcsC)

固定权重:Wys=0.2, Wss=0.3, Wcs=0.5W_{ys}=0.2,\ W_{ss}=0.3,\ W_{cs}=0.5Wys=0.2, Wss=0.3, Wcs=0.5

简化约定:解码器隐状态直接近似为当前生成单词的表征输出


4.4 第一步:Encoder 对中文序列编码压缩

时刻 t=1:输入第一个中文token「我」x1=1.0x_1=1.0x1=1.0

z1=Wxhx1+Whhh0=0.3×1.0+0.4×0=0.3 z_1 = W_{xh}x_1 + W_{hh}h_0 =0.3\times 1.0 + 0.4\times 0 = 0.3 z1=Wxhx1+Whhh0=0.3×1.0+0.4×0=0.3
h1=tanh⁡(z1)≈0.2913 h_1 = \tanh(z_1) \approx 0.2913 h1=tanh(z1)≈0.2913

含义:模型读取字词「我」,生成第一时刻局部语义记忆。

时刻 t=2:输入第二个中文token「爱」x2=2.5x_2=2.5x2=2.5

z2=Wxhx2+Whhh1=0.3×2.5+0.4×0.2913=0.75+0.1165=0.8665 \begin{align} z_2 &= W_{xh}x_2 + W_{hh}h_1 \\ &= 0.3\times 2.5 + 0.4\times 0.2913 \\ &= 0.75 + 0.1165 \\ &= 0.8665 \end{align} z2=Wxhx2+Whhh1=0.3×2.5+0.4×0.2913=0.75+0.1165=0.8665
h2=tanh⁡(0.8665)≈0.6996 h_2 = \tanh(0.8665) \approx 0.6996 h2=tanh(0.8665)≈0.6996

生成全局语义上下文向量

C=h2≈0.6996 \boldsymbol C = h_2 \approx \boldsymbol{0.6996} C=h2≈0.6996

物理语义:

编码器读完整句「我 爱」,把两个汉字的语义、搭配关系强行压缩进单个固定维度向量,作为全局记忆传递给解码器。


4.5 第二步:Decoder 自回归生成英文翻译序列

初始化配置:

解码器初始隐状态 s0=C=0.6996s_0=\boldsymbol C=0.6996s0=C=0.6996

首步输入起始标记 y0=0y_0=0y0=0

生成第1个英文单词:对应翻译「I」 (j=1)

zs1=Wysy0+Wsss0+WcsC=0.2×0+0.3×0.6996+0.5×0.6996=0+0.2099+0.3498=0.5597 \begin{align} z_{s1} &= W_{ys}y_0 + W_{ss}s_0 + W_{cs}\boldsymbol C \\ &= 0.2\times0 + 0.3\times0.6996 + 0.5\times0.6996 \\ &= 0 + 0.2099 + 0.3498 \\ &= 0.5597 \end{align} zs1=Wysy0+Wsss0+WcsC=0.2×0+0.3×0.6996+0.5×0.6996=0+0.2099+0.3498=0.5597
s1=tanh⁡(0.5597)≈0.5075 s_1 = \tanh(0.5597) \approx 0.5075 s1=tanh(0.5597)≈0.5075

输出表征:y1≈0.5075y_1 \approx 0.5075y1≈0.5075 ,对应翻译单词 I

生成第2个英文单词:对应翻译「love」(j=2)

依赖三大信息:全局中文语义C\boldsymbol CC、已生成单词「I」、解码器上一刻记忆
zs2=Wysy1+Wsss1+WcsC=0.2×0.5075+0.3×0.5075+0.5×0.6996=0.1015+0.1523+0.3498=0.6036 \begin{align} z_{s2} &= W_{ys}y_1 + W_{ss}s_1 + W_{cs}\boldsymbol C \\ &= 0.2\times0.5075 + 0.3\times0.5075 + 0.5\times0.6996 \\ &= 0.1015 + 0.1523 + 0.3498 \\ &= 0.6036 \end{align} zs2=Wysy1+Wsss1+WcsC=0.2×0.5075+0.3×0.5075+0.5×0.6996=0.1015+0.1523+0.3498=0.6036
s2=tanh⁡(0.6036)≈0.5402 s_2 = \tanh(0.6036) \approx 0.5402 s2=tanh(0.6036)≈0.5402

输出表征:y2≈0.5402y_2 \approx 0.5402y2≈0.5402 ,对应翻译单词 love

注意:真实大模型流程:解码器隐状态 sj​ → 全连接映射 → Softmax 归一化 → 词典概率分布 → 概率最大索引匹配单词。这个过程是比较复杂的,本例中简化了这个步骤,简化后的流程大概如下:

我们提前固化两个翻译单词的标准中心值:

  • 单词 I\boldsymbol{I}I:基准中心值 μ1=0.50\mu_1 = 0.50μ1=0.50
  • 单词 love\boldsymbol{love}love:基准中心值 μ2=0.54\mu_2 = 0.54μ2=0.54

这一步模拟真实模型中:词汇在语义向量空间拥有独有的聚类中心点

接下来计算距离:匹配对应单词(欧式距离简化判定)

第一步:匹配 y1≈0.5075y_1 \approx 0.5075y1≈0.5075
  • 与 I(μ1=0.50)\boldsymbol{I}(\mu_1=0.50)I(μ1=0.50) 的绝对距离:∣0.5075−0.50∣=0.0075|0.5075-0.50| = 0.0075∣0.5075−0.50∣=0.0075
  • 与 love(μ2=0.54)\boldsymbol{love}(\mu_2=0.54)love(μ2=0.54) 的绝对距离:∣0.5075−0.54∣=0.0325|0.5075-0.54| = 0.0325∣0.5075−0.54∣=0.0325

0.0075<0.03250.0075 < 0.03250.0075<0.0325,数值空间上更近,因此判定:
y1≈0.5075  ⟺  单词I\boldsymbol{y_1 \approx 0.5075 \iff 单词I}y1≈0.5075⟺单词I

第二步:匹配 y2≈0.5402y_2 \approx 0.5402y2≈0.5402
  • 与 I(μ1=0.50)\boldsymbol{I}(\mu_1=0.50)I(μ1=0.50) 的绝对距离:∣0.5402−0.50∣=0.0402|0.5402-0.50| = 0.0402∣0.5402−0.50∣=0.0402
  • 与 love(μ2=0.54)\boldsymbol{love}(\mu_2=0.54)love(μ2=0.54) 的绝对距离:∣0.5402−0.54∣=0.0002|0.5402-0.54| = 0.0002∣0.5402−0.54∣=0.0002

0.0002≪0.04020.0002 \ll 0.04020.0002≪0.0402,距离高度贴近love的中心,因此判定:
y2≈0.5402  ⟺  单词love\boldsymbol{y_2 \approx 0.5402 \iff 单词love}y2≈0.5402⟺单词love


4.6 整段翻译链路汇总

  1. 原始中文输入序列:X={我(1.0),爱(2.5)}\boldsymbol X=\{我(1.0),爱(2.5)\}X={我(1.0),爱(2.5)}
  2. 编码压缩聚合:得到全局统一语义向量 C≈0.6996\boldsymbol C \approx 0.6996C≈0.6996
  3. 自回归解码输出英文序列:Y={I(0.5075),love(0.5402)}\boldsymbol Y=\{I(0.5075),love(0.5402)\}Y={I(0.5075),love(0.5402)}

完美落地 Seq2Seq 核心逻辑:
自然语言变长输入 →编码器聚合\xrightarrow{\text{编码器聚合}}编码器聚合 全局上下文表征 →解码器自回归\xrightarrow{\text{解码器自回归}}解码器自回归 目标语言变长输出


五、传统RNN版Seq2Seq致命缺陷

  1. 信息压缩瓶颈
    所有输入长序列强行压缩单个固定向量C\boldsymbol{C}C,序列越长,信息丢失越严重,长句翻译直接崩坍;
  2. 继承上篇全部RNN弊病
    依然串行计算、长距离梯度消失、无法并行训练;
  3. 全局无差异化依赖
    解码器生成每一个词,平等依赖同一个C\boldsymbol{C}C,不能动态聚焦输入中最相关的局部字词

六、总结

  1. Seq2Seq 编码器-解码器,是一切序列生成任务的通用数学框架,核心流水线:
    输入变长序列→编码器全局上下文向量→解码器输出变长序列\boldsymbol{输入变长序列} \xrightarrow{编码器} \boldsymbol{全局上下文向量} \xrightarrow{解码器} \boldsymbol{输出变长序列}输入变长序列编码器 全局上下文向量解码器 输出变长序列
  2. 原始Transformer并不是凭空诞生:它完全沿用这套编解码架构,只是做了底层重构
  • 抛弃RNN循环结构
  • 自注意力+位置编码替代串行压缩
  • 解决固定上下文向量的信息瓶颈、梯度消失、无法聚焦、不可并行四大痛点
相关推荐
袖手蹲2 小时前
Arduino UNO Q 板载 Nanobot 自动化编程指南之七
运维·人工智能·自动化
AI医影跨模态组学2 小时前
J Immunother Cancer(IF=10.6)中山大学孙逸仙纪念医院陈柏深等团队:动态时间数据预测NSCLC新辅助免疫化疗主要病理反应
人工智能·深度学习·机器学习·医学·医学影像
liliwoliliwo2 小时前
vision transformer
人工智能·深度学习·transformer
tkevinjd2 小时前
hello-agents-chapter1-初识智能体
人工智能·ai·agent
li三河2 小时前
opencv利用freetype写中文
人工智能·opencv·计算机视觉
2601_955363152 小时前
技术赋能B端拓客:号码核验的行业困局与破局路径氪迹科技法人股东筛选系统,阶梯式价格
大数据·人工智能
lpfasd1232 小时前
2026年第13周GitHub趋势周报:AI Agent与多模态工具链加速融合
人工智能
冰西瓜6003 小时前
深度学习的数学原理(二十一)—— 传统序列模型(RNN/LSTM)的缺陷
rnn·深度学习·lstm
zandy10113 小时前
告别指标混乱:衡石科技指标管理平台的AI自治之路
人工智能·科技