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

在 Seq2Seq 模型中,编码器和解码器各负责什么功能?

编码器与解码器的功能分工

整体数据流

输入序列 x₁ x₂ x₃ <EOS> ↓ ↓ ↓ ┌─────────────────┐ │ 编码器 │ ← "理解"输入 │ (Encoder RNN) │ └────────┬────────┘ │ 上下文向量 c ← 输入序列的语义压缩 │ ┌────────┴────────┐ │ 解码器 │ ← "生成"输出 │ (Decoder RNN) │ └────────┬────────┘ │ 输出序列 y₁ y₂ y₃ <EOS>

编码器:将变长输入压缩为固定向量

核心功能:理解输入序列,将其语义信息编码为上下文向量 c。

逐步编码: h₁ = f(h₀, x₁) ← 读取第一个 token h₂ = f(h₁, x₂) ← 结合历史记忆读取第二个 h₃ = f(h₂, x₃) ← ... c = h_T ← 最后一步隐藏状态 = 整个序列的语义摘要

具体职责:

职责说明
序列读取逐个 token 读入输入序列,维护隐藏状态作为"运行记忆"
语义压缩将任意长度的输入序列压缩为一个固定维度的向量 c
信息承载c 需要编码输入序列的全部关键信息(语义、结构、顺序)
双向编码(可选)常用 BiLSTM/BiGRU,使 c 同时包含前向和后向上下文

关键约束:无论输入序列多长,输出 c 的维度固定(如 256/512 维),这是信息瓶颈所在。


解码器:从固定向量展开为变长输出

核心功能:以上下文向量 c 为起点,自回归地逐步生成输出序列。

初始化: s₀ = c ← 用上下文向量初始化解码器隐藏状态 第1步: s₁ = f(s₀, <SOS>) ← 输入起始符,生成第一个词 y₁ = softmax(W · s₁) ← 输出概率分布,取概率最高(或采样) 第2步: s₂ = f(s₁, y₁) ← 上一步生成的词作为当前输入 y₂ = softmax(W · s₂) 第3步: s₃ = f(s₂, y₂) y₃ = softmax(W · s₃) ...直到生成 <EOS> 停止

具体职责:

职责说明
状态初始化用编码器输出的 c 初始化解码器的隐藏状态
自回归生成每步以上一步输出为输入,逐步生成下一个 token
长度决定自行决定输出何时结束(生成<EOS>即停止)
分布输出每步输出词表上的概率分布,通过 argmax 或采样得到具体词

训练 vs 推理的关键差异

训练(Teacher Forcing): s₁ = f(c, <SOS>) → y₁ 输入: <SOS> s₂ = f(s₁, y₁*) → y₂ 输入: 真实标签 y₁*(而非预测 ŷ₁) s₃ = f(s₂, y₂*) → y₃ 输入: 真实标签 y₂* ↑ 每步用真实标签,梯度稳定,收敛快 推理(自回归): s₁ = f(c, <SOS>) → ŷ₁ 输入: <SOS> s₂ = f(s₁, ŷ₁) → ŷ₂ 输入: 自己的预测 ŷ₁ s₃ = f(s₂, ŷ₂) → ŷ₃ 输入: 自己的预测 ŷ₂ ↑ 误差逐步累积,可能偏离正确轨道

编码器与解码器的对比

维度编码器解码器
角色理解输入生成输出
输入完整输入序列上下文向量 c + 上一步输出
输出上下文向量 c逐步生成的 token 序列
方向通常双向(BiRNN)单向(因果,只能看已生成部分)
长度由输入决定由模型自行决定(遇<EOS>停止)
信息流逐步压缩:T 个 token → 1 个向量逐步展开:1 个向量 → T’ 个 token
参数独立的权重矩阵独立的权重矩阵(与编码器不共享)

信息瓶颈与注意力机制的引入

基本 Seq2Seq 中,编码器的全部输出仅为一个向量 c,解码器只能通过这一个"窗口"访问输入信息:

无注意力: 编码器: x₁ x₂ x₃ x₄ x₅ → c(一个向量) 解码器: c → y₁ y₂ y₃ y₄ ← 生成 y₄ 时仍只能访问 c,早期信息已模糊 有注意力: 编码器: x₁ x₂ x₃ x₄ x₅ → h₁ h₂ h₃ h₄ h₅(保留所有隐藏状态) 解码器: 每步动态计算 cₜ = Σ αₜᵢ · hᵢ ← 生成 y₄ 时可重点"回看" h₂

注意力机制让解码器在每一步都能动态聚焦于编码器的不同位置,而非依赖单一压缩向量,这是从 Seq2Seq 到 Transformer 的关键演进。


总结

编码器负责"读":将变长输入序列逐步编码为固定维度的上下文向量 c,是信息从序列到向量的压缩过程。解码器负责"写":以 c 为起点,自回归地逐步生成变长输出序列,是信息从向量到序列的展开过程。两者通过 c 连接,参数独立,各自承担理解与生成的职责。基本架构中 c 是唯一的信息桥梁,这一瓶颈催生了注意力机制,最终演化为 Transformer。

http://www.jsqmd.com/news/1289664/

相关文章:

  • 使用Frida-trace逆向分析iOS应用Apple服务认证签名机制
  • notepad++使用方法
  • 2026广州糖水加盟首选这三家,口碑与盈利双赢 - 天涯视角
  • 2026多语言数字人视频怎么测:术语表、字幕与版本回归
  • 一文讲清广州房产税土地税申报公司口碑好:广州机构推荐测评及横向对比 - 米諾
  • 2026年南京GEO服务商五强榜单:谁在真正定义AI搜索时代的品牌可见度? - 天涯视角
  • Ubiquity ORM详解:轻松掌握数据库操作与模型关联
  • 单片机毕业设计-基于 STM32 的双模式土壤墒情监测灌溉系统开发 基于 STM32F103 的阈值可调自动浇灌系统设计与实现(011701)
  • Thor Video Codec核心组件探秘:从common到simd模块的架构解析
  • 2026实力之选:内蒙古俊楠地坪装饰工程有限责任公司——老旧地坪翻新施工领域专业服务公司 - 优企名品
  • 2026 年更新:达坂城靠谱的聚氨酯玻璃钢桥架销售厂家哪家可靠,老旧厂房再也不用为腐蚀头疼?这款“硬核管线神器”你见过吗 - 行业鉴选官
  • RaZ引擎插件系统开发:扩展功能与第三方库集成方法
  • 2026上海正规日本研究生中介机构精选推荐 - 谁都没有我好看
  • mobilevitv2_050.cvnets_in1k实战指南:3行代码实现图像特征提取
  • AIOps的数据飞轮效应:如何构建“数据→模型→效果反馈→更好的数据“的正循环闭环
  • 技术深度解析:DSEFix实现原理与实战应用指南
  • XC7K325T-2FFG676I参数规格:326K逻辑单元/FCBGA-676/工业级Kintex-7 FPGA详解
  • Django-Vue3-Admin开发者指南:自定义接口与前端组件开发
  • OCSP协议实战:从Wireshark抓包到Java代码模拟的完整解析
  • 从手工缠论到智能量化:如何用Python框架实现自动化技术分析
  • 2026商用数字人真实度怎么测:30秒分段标注与复测方法
  • OpenClaw AI工具安全部署指南:Docker隔离与权限控制实战
  • 义乌汽车音响升级指南:义乌音品汇汽车音响三大技术方案解析,音响升级/音响改装/奔驰原厂音响升级,汽车改装音响门店哪家好 - 品牌推荐师
  • 企业终端打印安全精细化管控方案设计与落地实践
  • Sif关键词工具功能解析,最新的sif优惠折扣码是什么? - 跨境电商卖家出海
  • 【最新】2027 成都单招备考抓紧时机!成都锦城星火菁英单招集训招生公告正式发布 - 成都单招培训
  • CTF-NetA:5分钟掌握终极CTF流量分析,让网络安全取证变得简单高效
  • 2026 年 AI 修图工具深度对比,ImageGood 凭实力平替专业修图软件 - 米諾
  • Termux Command Handbook:终极指南!从入门到精通Android终端的10大核心章节
  • 如何用自然语言精准分离音频:AudioSep音频分离终极指南