Transformer 结构描述:从编码器到解码器
副标题 / 摘要 Transformer 由编码器与解码器堆叠而成,核心是自注意力与前馈网络。本文从结构出发解释各模块职责,并提供最小可运行示例与工程场景。 预计阅读时长:16~20 分钟 标签:transformer、attention、encoder-decoder SEO 关键词:Transformer, 编码器, 解码器, 注意力机制 元描述:系统描述 Transformer 结构与工程应用,含最小示例。 目标读者 想理解 Transformer 结构的入门读者 需要搭建 NLP/多模态模型的工程实践者 关注模型架构取舍的开发者 背景 / 动机 在 Transformer 出现之前,序列建模主要依赖 RNN。 Transformer 用注意力替代循环,大幅提升并行性与可扩展性。 理解其结构,是学习大模型的起点。 核心概念 Encoder/Decoder:编码器负责理解输入,解码器负责生成输出。 Self-Attention:同一序列内部建模依赖。 Cross-Attention:解码器对编码器输出做对齐。 FFN:逐位置前馈网络。 A — Algorithm(题目与算法) 用通俗语言说明主题内容 Transformer 的流程可以理解为: 编码器把输入序列变成上下文表示。 解码器在生成时,通过 cross-attention 读取编码器信息。 多层堆叠形成深层表达。 基础示例(1) 机器翻译:编码器读英文,解码器生成中文。 基础示例(2) 文本生成:只保留解码器,逐词预测下一个 token。 实践指南 / 步骤 选择结构:encoder-decoder(翻译)或 decoder-only(生成)。 设置模型参数:层数、隐藏维度、注意力头数。 训练:使用适当的损失(MLM/CLM)。 推理:启用因果 mask 或 cross-attention。 可运行示例(最小 Transformer 模块) import torch import torch.nn as nn torch.manual_seed(42) model = nn.Transformer( d_model=32, nhead=4, num_encoder_layers=2, num_decoder_layers=2, dim_feedforward=64, batch_first=True, ) src = torch.randn(2, 5, 32) tgt = torch.randn(2, 4, 32) out = model(src, tgt) print(out.shape) 解释与原理 编码器输出为“上下文记忆”。 解码器 self-attn 保证自回归顺序。 cross-attn 让解码器读取编码器信息。 C — Concepts(核心思想) 方法类型 Transformer 属于注意力驱动的序列建模架构。 ...