当前位置: 首页 > news >正文

【人工智能99问】transformer的编码器和解码器是如何协同工作的?(15/99)

文章目录

  • transformer的编码器和解码器是如何协同工作的?
    • 一、 训练阶段
      • 1.1 编码器的工作流程
      • 1.2 解码器的工作流程
      • 1.3 协同工作特点
    • 二、 推理阶段
      • 2.1 编码器的工作流程
      • 2.2 解码器的工作流程
      • 2.3 协同工作特点
    • 三、 关键差异总结
    • 四、 可视化示例
      • 训练阶段数据流:
      • 推理阶段数据流:
    • 五、 技术细节补充

transformer的编码器和解码器是如何协同工作的?

Transformer 的编码器(Encoder)和解码器(Decoder)在训练和推理时的协同工作方式有显著差异,主要体现在数据流动、注意力机制的应用以及对上下文信息的处理上。以下是详细分析:


一、 训练阶段

在训练时,模型通过并行处理输入输出序列,利用真实标签(Ground Truth)进行监督学习,并通过自回归(Autoregressive)和交叉注意力(Cross-Attention)机制学习映射关系。

1.1 编码器的工作流程

  1. 输入处理

    • 输入序列(如源语言句子 X = [x₁, x₂, ..., xₙ])经过嵌入层和位置编码后,输入编码器。
    • 编码器由多层自注意力(Self-Attention)和前馈网络(FFN)组成,计算每个 token 的上下文表示。
    • 输出编码后的特征矩阵 H_enc = [h₁, h₂, ..., hₙ],捕获输入序列的全局信息。
  2. 自注意力机制

    • 编码器自注意力允许每个 token 关注输入序列的所有其他 token,建立全局依赖关系。

1.2 解码器的工作流程

  1. 输入处理

    • 目标序列(如目标语言句子 Y = [y₁, y₂, ..., yₘ])被右移(Shifted Right)并添加起始符(如 <SOS>),形成解码器输入 Y_shifted = [<SOS>, y₁, ..., yₘ₋₁]
    • 嵌入层和位置编码后输入解码器。
  2. 掩码自注意力(Masked Self-Attention)

    • 解码器第一层是掩码自注意力,确保每个 token 仅关注当前位置及之前的 token(防止信息泄露)。
  3. 交叉注意力(Cross-Attention)

    • 解码器的第二层通过交叉注意力将 H_enc 作为 Key 和 Value,解码器上一层的输出作为 Query,对齐编码器和解码器的信息。
    • 例如,翻译时解码器通过交叉注意力聚焦源语言的相关部分(如单词对齐)。
  4. 输出预测

    • 解码器的最终输出通过线性层和 Softmax 生成概率分布,预测下一个 token yₜ
    • 损失函数(如交叉熵)基于预测结果和真实标签 yₜ 计算。

1.3 协同工作特点

  • 并行训练:解码器一次性处理整个目标序列(掩码保证自回归性质),而非逐 token 生成。
  • 教师强制(Teacher Forcing):解码器使用真实标签 Y_shifted 作为输入,而非自身预测结果,加速收敛。

二、 推理阶段

在推理时,模型需逐 token 生成输出序列,依赖前一步的预测结果,无法并行处理。

2.1 编码器的工作流程

  • 与训练阶段相同:输入序列 X 编码为 H_enc,仅需计算一次(可缓存以提升效率)。

2.2 解码器的工作流程

  1. 初始化

    • 输入为起始符 <SOS>,初始上下文为空。
  2. 自回归生成

    • 每一步 t,解码器基于已生成的 [y₁, ..., yₜ₋₁] 预测下一个 token yₜ
      1. 通过掩码自注意力处理当前序列。
      2. 通过交叉注意力结合编码器输出 H_enc
      3. 输出层生成 yₜ 的概率分布,采样(如贪婪搜索或 Beam Search)得到 yₜ
    • yₜ 拼接到输入中,继续生成 yₜ₊₁,直到输出终止符(如 <EOS>)。
  3. 缓存机制

    • 解码器的自注意力键值(K/V)可缓存,避免重复计算历史 token。

2.3 协同工作特点

  • 串行生成:解码器必须等待上一步完成才能继续,速度较慢。
  • 动态输入:解码器输入随生成过程动态增长,依赖编码器的固定输出 H_enc

三、 关键差异总结

方面训练阶段推理阶段
解码器输入使用真实标签(右移)使用自身预测结果(自回归)
并行性编码器和解码器均并行处理序列解码器必须串行生成
注意力掩码掩码未来 token(仅解码器)同训练,但动态扩展掩码
编码器输出利用每次迭代重新计算计算一次并缓存
效率高(批量处理)低(逐 token 生成)

四、 可视化示例

训练阶段数据流:

编码器: X → Self-Attention → H_enc
解码器: Y_shifted → Masked Self-Attention → Cross-Attention(H_enc) → yₜ_pred

推理阶段数据流:

Step 1: 编码器 X → H_enc
Step 2: 解码器 <SOS> → y₁
Step 3: 解码器 <SOS>, y₁ → y₂
...
Step N: 解码器 <SOS>, y₁, ..., yₙ → <EOS>

五、 技术细节补充

  • 位置编码:确保模型感知 token 位置,在训练和推理中均需添加。
  • Beam Search:推理时可通过束搜索提高生成质量,保留多条候选路径。
  • 缓存优化:如 Transformer-XL 或 KV Cache 技术加速推理。

通过这种设计,Transformer 在训练时高效学习长程依赖,在推理时通过自回归生成保持一致性。

http://www.dtcms.com/a/291615.html

相关文章:

  • 【面经】实习经历
  • Thread 类
  • Java注解家族--`@ResponseBody`
  • 2025杭电多校赛(2)1006 半
  • 微信二维码扫描登录流程详解
  • Pytorch版本、安装和检验
  • 简单讲解HTTPS如何保证安全性和可靠性
  • 网安学习NO.15
  • 树链剖分-苹果树
  • TPS61194PWPRQ1适用于汽车照明低 EMI、高性能 4 通道 LED 驱动器TPS61194
  • Day07_网络编程20250721_大项目
  • sqli-labs靶场通关笔记:第46-53关 order by注入
  • 一文详解REST风格
  • 青少年科学世界名刊分析评介:《生物技术世界》
  • 机器学习中的数据预处理:从入门到实践
  • Spring 对数组和集合类的自动注入
  • 234、回文链表
  • 使用AI把普通的条形柱状图,丰富成“好看高大上”的条形柱状图
  • 解决win10下Vmware虚拟机在笔记本睡眠唤醒后ssh连接不上的问题
  • PyQt5—QInputDialog 学习笔记
  • 印度给巴铁断水,中国悄然开建雅鲁藏布江水电站,纯属巧合!
  • Python 标准库之 os 模块全面讲解
  • 大模型为什么出现幻觉?
  • 在Anolis8.6上源码编译安装部署OpenVAS(GVM)未完待续
  • 华为云CCE-PV使用OBS存储类之坑
  • Android NDK ffmpeg 音视频开发实战
  • 语义化版本规范(SemVer)
  • 【计算机组成原理】符号位OF、ZF、CF、SF详解
  • c语言 进阶 动态内存管理
  • stream event