Transformer :Encoder vs Decoder

Transformer 模型由 编码器(Encoder)解码器(Decoder) 两部分组成,二者在结构、功能和数据流上存在显著差异。以下是它们的核心区别和设计原理:


1. 核心功能对比

模块编码器(Encoder)解码器(Decoder)
主要任务对输入序列建模,提取全局特征(如文本的语义表示)基于编码器输出和已生成部分,逐步生成目标序列
输入/输出接收源序列(如待翻译的句子)接收编码器输出 + 目标序列的历史部分(自回归)
典型应用文本分类、语义理解、特征提取文本生成、翻译、图像生成(如LDM中的条件控制)

2. 结构差异

(1) 编码器结构
  • 组成:由 ( N ) 个相同的层堆叠(如原始论文中 ( N=6 )),每层包含:
    • 多头自注意力(Self-Attention):捕捉输入序列内部关系。
    • 前馈神经网络(FFN):逐位置非线性变换。
    • 残差连接 + Layer Normalization:缓解梯度消失。
  • 无掩码机制:可访问整个输入序列的所有位置。
(2) 解码器结构
  • 额外组件:在编码器层的基础上增加:
    • 掩码多头自注意力(Masked Self-Attention):防止当前位置关注未来信息(确保自回归性质)。
    • 交叉注意力(Cross-Attention):将编码器输出(Key-Value)与解码器当前状态(Query)关联。
  • 逐步生成:通过自回归方式,每次生成一个 token 并作为下一步输入。

​组件编码器解码器
​注意力层​仅多头自注意力(Self-Attention)1. 掩码多头自注意力(Masked Self-Attention)2. 编码器-解码器注意力(Cross-Attention)
​输入处理​直接处理原始输入序列接收编码器输出 + 已生成的目标序列(右移一位)
​掩码机制​ 无使用掩码防止关注未来位置(保持自回归性)

3. 数据流对比

编码器流程
def encoder(x):
    for layer in encoder_layers:
        x = layer(x, mask=None)  # 无掩码,全序列可见
    return x  # 输出全局特征表示
解码器流程
def decoder(encoder_output, target):
    for t in range(max_len):
        # 1. 掩码自注意力(仅依赖已生成部分)
        masked_output = masked_self_attention(target[:t])
        # 2. 交叉注意力(融合编码器信息)
        cross_output = cross_attention(masked_output, encoder_output)
        # 3. 生成当前步的token
        next_token = predict(cross_output)
        target[t+1] = next_token
    return target

4. 关键设计差异

特性编码器解码器
注意力类型自注意力(全局可见)掩码自注意力 + 交叉注意力
位置信息通过位置编码(Positional Encoding)注入同样需要位置编码,但需掩码未来位置
训练方式并行计算整个输入序列自回归训练(Teacher Forcing)
参数量通常与解码器对称,但无交叉注意力参数因交叉注意力层,参数量略多

5. 直观示例(机器翻译)

  • 输入序列(编码器)"How are you"
    • 编码器提取语义特征,输出上下文相关的向量表示(如[h_1, h_2, h_3])。
  • 输出序列(解码器):生成"Comment ça va"(法语)
    • 第1步:基于[h_1, h_2, h_3]和起始符<SOS>,生成"Comment"
    • 第2步:基于[h_1, h_2, h_3]"<SOS> Comment",生成"ça"
    • …(逐步完成)

6. 应用:变体与扩展

编码器和解码器的选择取决于任务需求:

  • 纯编码器模型:如BERT、ViT,仅保留编码器,用于分类/表征任务。
  • 纯解码器模型:如GPT系列,仅保留解码器(无交叉注意力),用于生成任务。
  • 编码器-解码器模型:原始Transformer、T5、BART,适用于序列到序列任务(翻译、摘要)。

模块主要任务代表模型典型应用
编码器特征提取、理解输入BERT, ViT, Wav2Vec文本分类、NER、目标检测、语音识别
解码器自回归生成输出GPT, Stable Diffusion文本生成、图像合成、代码补全、TTS
编码器-解码器序列到序列映射Transformer, T5, BART机器翻译、文本摘要、语音到语音翻译

总结

  • 编码器:专注于理解输入,提取全局特征,无因果约束。
  • 解码器:专注于生成输出,依赖编码器信息并逐步预测,需掩码保证自回归性。
  • 联系:二者通过交叉注意力桥接,形成“理解-生成”的协作框架,成为多模态生成(如Stable Diffusion)和序列任务的基础架构。

Transformer 的编码器和解码器在自然语言处理(NLP)、计算机视觉(CV)、语音识别等多个领域有着广泛的应用,并且在不同任务中展现出强大的能力。以下是它们的核心应用场景及代表性模型:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值