Transformer模型中的编码器-解码器结构详解
字数 1161 2025-11-06 22:53:22
Transformer模型中的编码器-解码器结构详解
题目描述:请详细解释Transformer模型中的编码器-解码器结构,包括编码器和解码器的组成模块、数据流向、各层之间的连接方式,以及编码器与解码器之间的交互机制。
知识要点:
- 整体架构概述
- 编码器结构详解
- 解码器结构详解
- 编码器-解码器注意力机制
- 训练与推理过程差异
循序渐进讲解:
第一步:整体架构概览
Transformer采用经典的编码器-解码器架构,专为序列到序列任务设计:
- 编码器:将输入序列(如源语言句子)映射为中间表示
- 解码器:基于编码器输出和已生成部分,自回归地生成输出序列
- 核心特征:完全基于自注意力机制,摒弃了RNN和CNN
第二步:编码器结构深度解析
每个编码器层包含两个核心子层:
-
多头自注意力子层
- 作用:让每个位置都能关注输入序列的所有位置
- 计算:使用查询、键、值矩阵计算注意力权重
- 输出:加权求和后的上下文感知表示
-
前馈神经网络子层
- 结构:两个线性变换夹一个ReLU激活函数
- 公式:FFN(x) = max(0, xW₁ + b₁)W₂ + b₂
- 作用:对每个位置进行独立非线性变换
-
残差连接与层归一化
- 每个子层都有残差连接:LayerOutput = LayerNorm(x + Sublayer(x))
- 层归一化在残差加法之后进行,稳定训练过程
第三步:解码器结构特殊设计
解码器在编码器基础上增加关键修改:
-
掩码多头自注意力子层
- 掩码机制:防止当前位置关注后续位置(保持自回归性)
- 实现:将注意力权重矩阵未来位置设为负无穷大
- 作用:确保解码时只能基于已生成令牌
-
编码器-解码器注意力子层
- 查询(Q)来自解码器上一层的输出
- 键(K)和值(V)来自编码器的最终输出
- 让解码器关注输入序列的相关部分
-
层堆叠与输出层
- 解码器也由N个相同层堆叠而成
- 最后接线性层和Softmax生成输出概率分布
第四步:编码器与解码器的交互机制
关键交互发生在解码器的第二子层:
-
注意力矩阵计算
- Q = 解码器掩码自注意力输出
- K, V = 编码器最终层输出
- 计算跨序列注意力权重
-
信息流动
- 编码器输出作为"记忆"供解码器查询
- 每个解码步骤都能访问完整的编码信息
- 实现源序列到目标序列的对齐
第五步:训练与推理差异
-
训练阶段(并行处理)
- 解码器使用教师强制,整个目标序列同时输入
- 通过掩码确保自回归属性,但可并行计算
- 一次前向传播计算所有位置的输出
-
推理阶段(序列生成)
- 自回归生成:每次基于已生成令牌预测下一个
- 编码器输出可预先计算并缓存
- 解码器逐步生成,每次只增加一个新令牌
总结:Transformer的编码器-解码器结构通过自注意力、掩码注意力和交叉注意力的精巧组合,实现了强大的序列转换能力,同时保持了训练的高效性和推理的准确性。