深度学习中的 Seq2Seq 模型与注意力机制

一、Seq2Seq 模型

定义:

Seq2Seq(Sequence-to-Sequence)是一种端到端的编码器-解码器架构,专为处理变长输入/输出序列的任务设计(如机器翻译、文本摘要)。其核心思想是将输入序列编码为固定维度的上下文向量(Context Vector),再通过解码器生成目标序列。

​​输入 ​​:可变长度序列(如 X 1 ​ ,X 2 ​ ,...,X n ​ )
​​输出 ​​:可变长度序列(如 Y 1 ​ ,Y 2 ​ ,...,Y n ​ ) ​​
核心机制​​: ​​

  • Encoder​​:将输入序列编码为​​固定长度向量​​(即 Encoder state) ​​

  • Decoder​​:将该向量解码为目标序列


    Seq2Seq 模型示意图

Cell 可以用 RNN,GRU,LSTM 等结果。相当于将 RNN 模型中s0s_0s0变为Encoder

条件语言模型理解

1、编解码器作用

  • 编码器的作用:将不定长输入序列 x1,...,xTx_{1},\ldots,x_{T}x1,...,xT 编码为固定长度的状态向量 CCC
  • 解码器的作用:输出 yty_{t}yt 的条件概率基于以下两个因素:
    • 先前生成的输出序列 y1,...,yt−1y_{1},\ldots,y_{t-1}y1,...,yt−1
    • 编码器输出的状态向量 CCC
  • 目标函数
    argmax⁡P(y1,...,yT′∣x1,...,xT)\operatorname{argmax} P\left(y_{1},\ldots,y_{T^{\prime}}\mid x_{1},\ldots,x_{T}\right)argmaxP(y1,...,yT′∣x1,...,xT)
    即在给定输入序列的条件下,最大化输出序列的概率

2、根据最大似然估计,最大化输出序列的概率

  • 概率分解
    P(y1,...,yT′∣x1,...,xT)=∏t′=1T′P(yt′∣y1,...,yt′−1,C)P\left(y_{1},\ldots,y_{T^{\prime}}\mid x_{1},\ldots,x_{T}\right) = \prod_{t^{\prime}=1}^{T^{\prime}} P\left(y_{t^{\prime}} \mid y_{1},\ldots,y_{t^{\prime}-1}, C \right)P(y1,...,yT′∣x1,...,xT)=t′=1∏T′P(yt′∣y1,...,yt′−1,C)
  • 核心问题 :直接计算概率连乘 P(y1∣C)×P(y2∣y1,C)×P(y3∣y2,y1,C)×⋯P(y^1 \mid C) \times P(y^2 \mid y^1, C) \times P(y^3 \mid y^2, y^1, C) \times \cdotsP(y1∣C)×P(y2∣y1,C)×P(y3∣y2,y1,C)×⋯ 会导致结果趋近于零(数值下溢),不利于计算存储。

3、解决方案:对数概率转化

  • 对概率公式取对数:
    log⁡P(y1,...,yT′∣x1,...,xT)=∑t′=1T′log⁡P(yt′∣y1,...,yt′−1,C)\log P\left(y_{1},\ldots,y_{T^{\prime}}\mid x_{1},\ldots,x_{T}\right) = \sum_{t^{\prime}=1}^{T^{\prime}} \log P\left(y_{t^{\prime}} \mid y_{1},\ldots,y_{t^{\prime}-1}, C \right)logP(y1,...,yT′∣x1,...,xT)=t′=1∑T′logP(yt′∣y1,...,yt′−1,C)

  • 转化意义

    • 概率连乘 → 对数概率求和
      log⁡P(y1∣C)+log⁡P(y2∣y1,C)+log⁡P(y3∣y2,y1,C)+⋯\log P(y^1 \mid C) + \log P(y^2 \mid y^1, C) + \log P(y^3 \mid y^2, y^1, C) + \cdotslogP(y1∣C)+logP(y2∣y1,C)+logP(y3∣y2,y1,C)+⋯
    • 优化目标等价于
      通过 Softmax 输出概率最大化,最小化输出序列的负对数损失(Negative Log-Likelihood Loss)。


    机器翻译案例示意图


二、注意力机制

长难句问题

当输入序列较长时(如 >30 词),单个上下文向量 C\mathbf{C}C难以有效压缩全部信息,导致解码质量显著下降(尤其丢失序列开头信息)。对于更长的句子,Seq2Seq 就显得力不从心了。下图是通常 BLEU 的分数随这句子的长度变化,可以看到句子非常长的时候,分数就很低。

BLEU分数变化图

注意力机制定义

建立 Encoder 的隐层状态输出到 Decoder 对于输出 y 所需要的上下文信息

其目的是增加编码器信息输入到解码器中相同时刻的联系

注意力机制结构示意图

公式

关键设定

  • Encoder 时刻记为 ttt(输入序列时间步)
  • Decoder 时刻记为 t′t't′(输出序列时间步)

1. 上下文向量 ct′c_{t'}ct′ 的计算
ct′=∑t=1Tαt′thtc_{t'} = \sum_{t=1}^{T} \alpha_{t'}^t h_tct′=t=1∑Tαt′tht

  • 参数说明
    • αt′t\alpha_{t'}^tαt′t:权重系数(通过训练学习得到)
    • hth_tht:Encoder 第 ttt 时刻的隐层状态输出
  • 工作示例 (上图蓝色Decoder cell 示意图):
    α41h1+α42h2+α43h3+α44h4=c4\alpha_4^1 h_1 + \alpha_4^2 h_2 + \alpha_4^3 h_3 + \alpha_4^4 h_4 = c_4α41h1+α42h2+α43h3+α44h4=c4

2. 权重系数 αt′t\alpha_{t'}^tαt′t 的生成

  • Softmax 归一化
    αt′t=exp⁡(et′t)∑k=1Texp⁡(et′k),t=1,2,...,T\alpha_{t'}^t = \frac{\exp(e_{t'}^t)}{\sum_{k=1}^{T} \exp(e_{t'}^k)}, \quad t=1,2,\ldots,Tαt′t=∑k=1Texp(et′k)exp(et′t),t=1,2,...,T
  • 能量得分 et′te_{t'}^tet′t 的计算
    et′t=g(st′−1,ht)=v⊤tanh⁡(Wsst′−1+Whht)e_{t'}^t = g(s_{t'-1}, h_t) = v^{\top} \tanh \left( W_s s_{t'-1} + W_h h_t \right)et′t=g(st′−1,ht)=v⊤tanh(Wsst′−1+Whht)
    • 输入来源
      • st′−1s_{t'-1}st′−1:Decoder 在 t′−1t'-1t′−1时刻的隐层状态
      • hth_tht:Encoder 在 ttt 时刻的隐层状态
    • 可学习参数
      • vvv:权重向量
      • Ws,WhW_s, W_hWs,Wh:权重矩阵

注意力机制的意义与影响

  1. 解决长序列遗忘
    解码器直接访问所有编码器状态,避免信息压缩损失。
  2. 可解释性
    注意力权重 αtj\alpha_{tj}αtj 可视化输入-输出词对齐(如翻译中源词与目标词关联)。
  3. 性能提升
    在机器翻译等任务上,BLEU 值提升 >30%(对比无注意力模型)。

扩展:从基础注意力到 Transformer

基础注意力仍依赖 RNN 的序列计算。Transformer 模型进一步革新:

  • Self-Attention 替代 RNN,并行捕获全局依赖
  • 多头注意力(Multi-Head)增强不同表示子空间的聚焦能力
  • 成为 BERT、GPT 等预训练模型的基石

三、总结

Seq2Seq 框架通过条件语言建模解决序列生成问题,而注意力机制通过动态上下文计算突破长序列建模瓶颈 ,为后续 Transformer 革命奠定基础。其核心价值在于:让模型学会在生成过程中自主关注最相关的信息源,显著提升语义理解与生成的准确性。

相关推荐
肥猪猪爸29 分钟前
BP神经网络对时序数据进行分类
人工智能·深度学习·神经网络·算法·机器学习·分类·时序数据
Keep learning!32 分钟前
深度学习入门代码详细注释-ResNet18分类蚂蚁蜜蜂
人工智能·深度学习·分类
Liudef061 小时前
神经辐射场 (NeRF):重构三维世界的AI新视角
人工智能·重构
音视频牛哥2 小时前
打造实时AI视觉系统:OpenCV结合RTSP|RTMP播放器的工程落地方案
人工智能·opencv·计算机视觉·大牛直播sdk·rtsp播放器·rtmp播放器·android rtmp
归去_来兮3 小时前
生成式对抗网络(GAN)模型原理概述
人工智能·深度学习·生成对抗网络
在努力的韩小豪4 小时前
如何从0开始构建自己的第一个AI应用?(Prompt工程、Agent自定义、Tuning)
人工智能·python·llm·prompt·agent·ai应用·mcp
云卓SKYDROID4 小时前
无人机环境感知系统运行与技术难点!
人工智能·计算机视觉·目标跟踪·无人机·科普·高科技·云卓科技
火山引擎开发者社区4 小时前
ByteBrain x 清华 VLDB25|时序多模态大语言模型 ChatTS
人工智能·语言模型·自然语言处理
SoaringPigeon4 小时前
从深度学习的角度看自动驾驶
人工智能·深度学习·自动驾驶