Skip to content

第四阶段:Transformer 核心 ​

Transformer 的详细推导请参阅:Transformer 深度详解。本节只做概述。

Transformer 抛弃了 RNN 的循环结构,完全基于自注意力机制。它的三个核心创新:

  1. 自注意力:让每个词直接"看到"序列中的其他所有词(而非像 RNN 一样逐步传递)
  2. 位置编码:因为没有了循环,需要显式告诉模型词的顺序
  3. 多头注意力:多个注意力"视角"并行工作,捕获不同类型的依赖关系
mermaid
graph TD
    subgraph "Transformer 编码器(Encoder)"
        INPUT["输入: '我 爱 AI'"] --> EMB["词嵌入 + 位置编码"]
        EMB --> ENC1["编码器层 1"]
        ENC1 --> ENC2["编码器层 2"]
        ENC2 --> ENCN["..."]
        ENCN --> ENC_OUT["编码器输出<br/>(上下文感知的表示)"]
    end

    subgraph "单层编码器"
        IN["输入"] --> MH_ATTN["多头自注意力<br/>每个词关注所有词"]
        MH_ATTN --> ADD1["残差 + LayerNorm"]
        ADD1 --> FFN["前馈网络<br/>逐位置的非线性变换"]
        FFN --> ADD2["残差 + LayerNorm"]
        ADD2 --> OUT["输出"]
    end

    style MH_ATTN fill:#e74c3c,color:#fff
    style FFN fill:#3498db,color:#fff

5. LLM 大语言模型与工程实践 ​

5.1 预训练范式 ​

mermaid
graph LR
    subgraph "BERT 式 (编码器) — 理解"
        B1["输入: [CLS] 今天 [MASK] 不错"] --> B2["预测 [MASK] = '天气'<br/>MLM (掩码语言模型)"]
    end

    subgraph "GPT 式 (解码器) — 生成"
        G1["输入: 今天天气"] --> G2["预测下一个: '真'"]
        G2 --> G3["输入: 今天天气真"] --> G4["预测下一个: '好'"]
    end

    style B2 fill:#3498db,color:#fff
    style G4 fill:#2ecc71,color:#fff
特性BERT (Encoder-only)GPT (Decoder-only)T5 (Encoder-Decoder)
预训练目标MLM (掩码预测)CLM (自回归预测)Span Corruption
注意力双向(能看到前后)单向(因果掩码)编码器双向+解码器单向
擅长理解/分类/抽取生成/对话/创作翻译/摘要
代表BERT, RoBERTa, DeBERTaGPT-5.6, LLaMA 4, Claude FableT5, BART

为什么 GPT 成了最终的赢家? ​

  1. 生成即一切:分类可以转化为生成("这篇新闻的情感是___"),反过来的转化很困难
  2. In-Context Learning:GPT-3 证明了只需 few-shot 示例就能做好任务,无需微调
  3. Scaling Law:随着参数和数据增加,性能持续提升,没有看到天花板

Scaling Law — 规模定律 ​

OpenAI 2020 年的关键发现:模型性能 L 与参数量 N、数据量 D、计算量 C 之间遵循幂律关系:

L(N)=(NcN)αN,L(D)=(DcD)αD

其中 αN≈0.076,αD≈0.095。

这意味着什么? 幂律的意思是:要性能翻倍,参数和数据都需要约 10 倍。下表直观感受:

参数翻倍次数参数量级性能提升代价
1×1B → 2B~5%2x
2×1B → 4B~10%4x
3×1B → 8B~15%8x
10×1B → 1024B (1T)~42%1024x

这解释了为什么从 GPT-3 (175B) 到 GPT-4 (~1.8T) 需要十倍以上的投入——Scaling Law 的"边际收益递减"意味着越往后越贵。


5.2 LLM 训练三阶段 ​

mermaid
graph TB
    subgraph "阶段1: 预训练(Pre-training)— 学会语言"
        RAW["🌐 海量互联网文本<br/>Common Crawl + 书籍 + 代码<br/>~15T tokens"] --> PT["📖 自监督学习<br/>预测下一个 Token"]
        PT --> BASE["🧠 基础模型(Base Model)<br/>- 掌握语法、知识、推理<br/>- 特点:会续写,不会对话"]
    end

    subgraph "阶段2: 监督微调(SFT)— 学会对话"
        BASE --> INST["📋 高质量指令数据<br/>~100K 条人工标注的<br/>问答/指令/对话对"]
        INST --> SFT["🤖 指令跟随模型(SFT)<br/>- 学会理解用户意图<br/>- 特点:会对话,但可能不安全"]
    end

    subgraph "阶段3: 人类对齐(RLHF/DPO)— 学会安全"
        SFT --> PREF["👥 人类偏好数据<br/>对同一问题的多个回答<br/>标注哪个更好"]
        PREF --> ALIGN["✅ 对齐模型(Aligned)<br/>- 有用、诚实、无害<br/>- 特点:拒绝有害请求"]
    end

    style BASE fill:#3498db,color:#fff
    style SFT fill:#2ecc71,color:#fff
    style ALIGN fill:#e74c3c,color:#fff

RLHF 的奖励模型 ​

rθ(x,y)=奖励模型对回答 y 给输入 x 的评分

目标是最大化期望奖励同时不偏离 SFT 模型太远:

maxπEx∼D,y∼π(⋅|x)[rθ(x,y)−β⋅DKL(π(y|x)∥πSFT(y|x))]

拆解:公式中的两项是"推拉"关系:

  • rθ(x,y)(推):奖励模型打分,越高越好 → 推动模型生成高分回答
  • β⋅DKL(拉):新模型 π 和 SFT 模型 πSFT 的 KL 散度 → 阻止模型"变太多"导致输出乱码
  • β:平衡系数。β=0 时只追求高分(会出乱码);β 很大时几乎不动(等于没训)

DPO (Direct Preference Optimization) — RLHF 的更简单替代 ​

DPO 跳过显式训练奖励模型,直接从偏好数据优化策略。公式更简洁:

LDPO(πθ;πref)=−E(x,yw,yl)∼D[log⁡σ(βlog⁡πθ(yw|x)πref(yw|x)−βlog⁡πθ(yl|x)πref(yl|x))]

其中 yw 是更好的回答,yl 是较差的回答。

一句话拆成四句话理解:

  1. log⁡πθ(yw|x)πref(yw|x) — 好回答的"进步":新模型给好回答的概率 ÷ 旧模型(SFT)给好回答的概率,取对数。如果新模型更认可好回答,这个值 > 0。
  2. log⁡πθ(yl|x)πref(yl|x) — 差回答的"退步":同理。如果新模型对差回答更冷淡,这个值 < 0。
  3. β(⋯−⋯) — "相对优势":好回答的进步 − 差回答的进步。β 控制训练强度——β 越大,越强制新模型偏离旧模型。
  4. −log⁡σ(⋅) — 最终惩罚:σ(·) 接近 1(区分明显)→ loss 小;σ(·) 接近 0(好差不分)→ loss 大。

核心思想:不断拉大"好回答"和"差回答"在新模型眼中的概率差距。


5.3 关键概念速查 ​

概念定义影响
TokenLLM 的最小处理单位英文 ~0.75 词/Token,中文 ~0.5 字/Token
Context Window模型能同时"看到"的 Token 数GPT-5.6 256K,Claude Fable 200K,Gemini 3 2M
Temperature控制随机性,0 = 确定性,1+ = 创造性编码用 0,创意写作用 0.8-1.2
Top-p核采样,从累积概率 ≥ p 的 Token 中选p=0.9 是常用默认值
Top-k只从概率最高的 k 个 Token 中选防止选到极低概率的 Token
KV Cache缓存已计算的 Key/Value推理加速 2-5x,但大量占用显存
GQA/MQA分组/多查询注意力,减少 KV 头LLaMA 3/4 / Mistral / DeepSeek 使用,节省 KV Cache

深入学习路线 ​

mermaid
mindmap
  root((AI 深度学习路线))
    数学基础
      线性代数
      微积分与优化
      概率与统计学习
    经典网络
      感知机 → MLP
      反向传播
      优化器
      CNN 卷积网络
      正则化技术
      完整训练循环
    序列模型
      RNN / LSTM / GRU
      Seq2Seq + Attention
    Transformer 核心
      自注意力机制
      多头注意力
      位置编码
    预训练大模型
      BERT / GPT 对比
      Scaling Law
      SFT / RLHF / DPO
    工程专题
      本地 LLM 硬件加速
      AI Agent 架构
      RAG 检索增强
      Prompt 工程
专题核心问题详细文档
🧠 深入Transformer 完整推导Transformer 深度详解
🖥️ 部署本地 LLM 硬件加速Local LLM 与硬件加速
🔧 微调模型微调与对齐模型微调与对齐
⚡ 推理推理服务与性能优化推理服务与性能优化
🤖 AgentAI Agent 架构AI Agent 架构与工程化
🗄️ RAG检索增强生成RAG 检索增强生成
📝 PromptPrompt 工程与评测Prompt 工程与模型评测
🔧 实战构建完整的 Wiki Agent构建实战 Wiki AI Agent

参考资源 ​


🧭 学习导航 ​

← 上一阶段:nlp-sequence-models | 返回总览 | 深入阅读:transformer →

批注模式

💬 文章评论

暂无评论,来说点什么吧 👇

编程学习笔记