BERT 和 GPT 为什么结构不同?——Encoder 与 Decoder 图解

张开发
2026/5/7 5:06:54 15 分钟阅读

分享文章

BERT 和 GPT 为什么结构不同?——Encoder 与 Decoder 图解
一、先说 Transformer 的两半原版 Transformer2017 年是为机器翻译设计的天然分两半Encoder编码器读懂输入把它压缩成一个富含语义的理解结果Decoder解码器拿着理解结果一个词一个词地生成输出后来的模型发现很多任务根本不需要两半都用。只需要读懂用Encoder Only→ BERT只需要生成用Decoder Only→ GPT既要读又要写用Encoder-Decoder→ T5、翻译模型二、Encoder双向阅读全局理解核心特征双向 Self-AttentionEncoder 在做 Self-Attention 时每个词可以同时看到整句话——左边的词和右边的词都能看。结构组成单层叠 N 层BERT-base 叠 12 层每层都进一步提炼语义表示。残差连接是什么每个子层的输出不是直接替换输入而是加上原始输入output LayerNorm ( x Sublayer ( x ) ) \text{output} \text{LayerNorm}(x \text{Sublayer}(x))outputLayerNorm(xSublayer(x))好处有两个梯度可以直接走捷径流回去解决深层网络训练困难的问题即使某一层学到的东西不好原始信息也不会丢失典型代表BERTBERT 只用了 Encoder训练方式是完形填空Masked Language Model因为要预测被盖住的词模型必须同时理解左右两边的上下文——这正好对应双向 Attention 的优势。BERT 的用途文本分类、情感分析、命名实体识别、问答系统……一切需要读懂的任务。三、Decoder单向生成逐词输出核心特征Masked Self-Attention因果掩码Decoder 在生成时每个词只能看到它之前的词不能偷看未来。为什么要遮住因为生成是逐步进行的——你在生成第 4 个词时第 5、6 个词还不存在。训练时用掩码模拟这个约束测试时自然满足。这个掩码叫Causal Mask因果掩码实现方式是在注意力分数矩阵的右上角填上− ∞ -\infty−∞Softmax 后变成 0。score i j { Q i ⋅ K j T / d k if j ≤ i − ∞ if j i \text{score}_{ij} \begin{cases} Q_i \cdot K_j^T / \sqrt{d_k} \text{if } j \leq i \\ -\infty \text{if } j i \end{cases}scoreij​{Qi​⋅KjT​/dk​​−∞​ifj≤iifji​结构组成原版 Decoder单层原版 Decoder 比 Encoder 多一个Cross-Attention层Cross-Attention 是 Encoder 和 Decoder 的桥梁——Decoder 用它去查询Encoder 的理解结果。典型代表GPTGPT 只用了 Decoder但去掉了 Cross-Attention因为没有 Encoder只保留 Masked Self-Attention 和 FFN。训练方式是下一词预测GPT 的用途文本续写、对话、代码生成、摘要……一切需要生成的任务。四、Encoder vs Decoder 一表对比对比项EncoderDecoderAttention 方向双向看全句单向只看左边掩码无Causal Mask遮住未来额外结构—Cross-Attention连接Encoder训练目标完形填空MLM下一词预测CLM代表模型BERT、RoBERTaGPT 系列、LLaMA擅长任务理解、分类、抽取生成、续写、对话五、Cross-AttentionEncoder 和 Decoder 怎么对话这是原版 Transformer 里最精妙的设计之一。在翻译任务里Decoder 生成英文时需要不断回头看中文原文。Cross-Attention 的工作原理用翻译举例这就是为什么翻译模型知道把爱翻译成love而不是随便生成一个动词。六、Feed Forward Network被忽视的重要组件每个 Attention 层后面都跟着一个 FFN公式很简单FFN ( x ) max ⁡ ( 0 , x W 1 b 1 ) W 2 b 2 \text{FFN}(x) \max(0,\ x W_1 b_1)\ W_2 b_2FFN(x)max(0,xW1​b1​)W2​b2​两层全连接 ReLU 激活对每个位置独立计算。看起来很简单但研究发现 FFN 承担了大量的事实记忆功能——模型记住的知识比如巴黎是法国首都很大一部分存储在 FFN 的权重里而不是 Attention 里。Attention 负责找关系FFN 负责存知识——两者分工协作。七、Layer Normalization训练稳定的秘诀每个子层后面都有 LayerNormLayerNorm ( x ) x − μ σ ⋅ γ β \text{LayerNorm}(x) \frac{x - \mu}{\sigma} \cdot \gamma \betaLayerNorm(x)σx−μ​⋅γβ它对同一个样本的不同维度做归一化Batch Norm 是对不同样本的同一维度让每层的输入分布保持稳定避免梯度爆炸或消失。γ \gammaγ和β \betaβ是可学习的缩放/偏移参数让模型可以恢复它认为合适的分布。八、完整的 Transformer 流程九、现代大模型都用什么原版 Encoder-Decoder 现在主要用于翻译和摘要。绝大多数现代大语言模型GPT-4、Claude、LLaMA、Qwen、Gemini 等都是Decoder Only架构原因有三统一性一个架构可以处理所有任务生成本身包含了理解可扩展性Decoder Only 在超大规模时表现更稳定涌现能力足够大的 Decoder 模型会涌现出 Encoder 模型才有的理解能力BERT 类的 Encoder Only 模型在需要高效部署、小模型场景分类、NER、搜索排序中仍然大量使用。十、三句话总结Encoder 双向阅读每个词看全句适合理解任务代表是 BERT。Decoder 单向生成每个词只看左边适合生成任务代表是 GPT。现代大模型几乎全是 Decoder Only统一架构 超大规模已经能同时做到理解和生成。延伸阅读 原论文Attention Is All You Need2017— 完整的 Encoder-Decoder 架构 BERT 论文BERT: Pre-training of Deep Bidirectional Transformers2018 GPT 论文Improving Language Understanding by Generative Pre-Training2018 可视化The Illustrated BERT

更多文章