Back

02 | 大模型的"大脑":Transformer与预训练

June 29, 20268 min read
Transformer

02 | 大模型的"大脑":Transformer与预训练

核心问题:预训练到底在学什么?为什么下一个token预测能产生如此强大的能力?


开篇:一个反直觉的事实

2020年,OpenAI训练了GPT-3——一个拥有1750亿参数的模型,消耗了3000亿个token的文本数据,训练成本据估算超过460万美元。

它做的事却极其简单:猜下一个词

给定"今天天气真",模型预测下一个词是"好";给定"1+1=",模型预测"2"。仅此而已。没有显式地学语法,没有显式地学逻辑,没有显式地学世界知识。

但这个简单的目标函数,产出了令人震惊的结果:

| 能力 | GPT-3表现 | 是否需要显式训练 | |------|-----------|-----------------| | 多语言翻译 | 无需示例即可翻译 | 否 | | 数学推理 | 能解小学数学 | 否 | | 代码生成 | 能写Python函数 | 否 | | 知识问答 | 覆盖百科全书级知识 | 否 |

一个只做"填空题"的模型,怎么会涌现出翻译、推理、编程等能力?

这不是巧合,而是Transformer架构和预训练范式共同创造的"奇迹"。本文要拆解这个奇迹的机制。


2.1 Transformer:从"逐词阅读"到"同时看全文"

先理解问题:Transformer之前世界是什么样的

2017年之前,NLP的主流是RNN/LSTM。它们处理文本的方式像逐词阅读

输入:"我 喜欢 自然 语言 处理"

RNN处理方式(从左到右,逐步传递信息):

  [我] ──▶ [喜欢] ──▶ [自然] ──▶ [语言] ──▶ [处理]
   │          │          │          │          │
   h1    ──▶ h2    ──▶ h3    ──▶ h4    ──▶ h5
   │          │          │          │          │
   ▼          ▼          ▼          ▼          ▼
  隐状态1   隐状态2   隐状态3   隐状态4   隐状态5

问题:
  1. 必须串行处理,无法并行 ──▶ 训练慢
  2. 长距离信息逐渐衰减 ──▶ "我"和"处理"的关系很难捕捉
  3. 每步只有固定大小的隐状态 ──▶ 信息瓶颈

类比:RNN像一个人用手指逐字划过书页读书——读到第10页时,已经忘了第1页说了什么。

Transformer的核心创新:自注意力机制

2017年,Google在论文《Attention Is All You Need》中提出了Transformer。它的核心创新是自注意力(Self-Attention)机制——让每个词都能"看到"句子中的所有其他词。

Transformer处理方式(所有词同时互相关注):

  "我"  "喜欢"  "自然"  "语言"  "处理"
    │      │      │      │      │
    ├──────┼──────┼──────┼──────┤    每个词都与其他
    ├──────┼──────┼──────┼──────┤    所有词计算
    ├──────┼──────┼──────┼──────┤    注意力权重
    ├──────┼──────┼──────┼──────┤
    └──────┴──────┴──────┴──────┘

结果:任意两个词之间只有一步距离
      "我"和"处理"的关系可以直接计算,无需经过中间词

类比:如果RNN是逐字阅读,那Transformer就是把整页文字摊开在桌上,同时看到所有词之间的关系

自注意力的直觉解释(不堆公式)

自注意力机制的核心可以用一个生活场景来理解:

想象你在一个聚会上,房间里有20个人。每个人(词)都需要决定:我应该重点关注谁?

  • 你("银行")看到旁边有个人("河岸"),发现你们虽然长得像,但含义不同——降低关注
  • 你看到远处有个人("存款"),发现你们语义相关——提高关注
  • 最终,你根据与每个人的"相关度"来调整自己的状态

这就是QKV(Query-Key-Value)机制的直觉:

每个词生成三个向量:
  ┌──────────────────────────────────────────────────┐
  │ Query(查询)  : "我在找什么信息?"              │
  │ Key(键)      : "我能提供什么信息?"            │
  │ Value(值)    : "我实际携带的信息内容"          │
  └──────────────────────────────────────────────────┘

计算过程:
  1. 每个词用Query去"搜索"其他词的Key
  2. 匹配度高的词对 ──▶ 注意力权重大
  3. 用注意力权重加权所有词的Value ──▶ 得到新的表示

类比:
  Query = 搜索引擎的搜索词
  Key   = 网页的标题
  Value = 网页的内容
  
  "银行"的Query搜索"存款"的Key ──▶ 高匹配 ──▶ 大量读取"存款"的Value

多头注意力:多角度理解

Transformer不是只做一次注意力计算,而是并行做多次(多个"头"),每个头学习不同的关系模式:

输入:"小明把苹果递给了小红,她开心地笑了"

Head 1(语法关系):  小明 ──▶ 递  (主语-谓语)
Head 2(指代消解):  小红 ──▶ 她  (代词指代)
Head 3(情感关联):  苹果 ──▶ 开心 (因果链)
Head 4(位置关系):  递给 ──▶ 小红 (动作-受体)

最终:4个头的结果拼接 ──▶ 全面理解这句话

GPT-3使用96层Transformer、96个注意力头、每个头128维。这意味着每个词同时从96个不同角度理解上下文。

位置编码:给词排座位

Transformer同时看到所有词,但有个问题:它不知道词的顺序。"我打你"和"你打我"在纯注意力机制下是一样的。

解决方案是位置编码(Positional Encoding)——给每个位置一个独特的信号:

位置编码方式演进:

  2017 原始Transformer ──▶ 正弦/余弦函数(固定)
  2018 GPT系列        ──▶ 可学习的位置嵌入
  2021 RoPE           ──▶ 旋转位置编码(相对位置)
  2023 Longformer等   ──▶ ALiBi(外推到更长序列)

RoPE的直觉:
  把每个位置编码为一个旋转角度
  位置越近的词 ──▶ 旋转角度差越小 ──▶ 注意力越大
  位置越远的词 ──▶ 旋转角度差越大 ──▶ 注意力越小

完整的Transformer Block

单个Transformer Block:

  输入 x
    │
    ├──▶ LayerNorm ──▶ Multi-Head Self-Attention ──▶ + ──▶ x'
    │                                                      │
    └──────────────────────────────────────────────────────┘
                                                              │
    x' ──▶ LayerNorm ──▶ Feed-Forward Network ──▶ + ──▶ x''
         │                                              │
         └──────────────────────────────────────────────┘
                                                          │
                                                        输出

  组件说明:
    LayerNorm        ──▶ 稳定训练,类似"归一化"
    Self-Attention   ──▶ 让词与词互相关注
    Feed-Forward     ──▶ 非线性变换,增加表达能力
    残差连接 (+)     ──▶ 防止梯度消失,保留原始信息

GPT-3的完整架构:96层这样的Block堆叠,每层的注意力头学习越来越抽象的特征。底层学习语法关系,高层学习语义和推理。


2.2 预训练:下一个token预测的"魔法"

预训练目标:极其简单,极其强大

GPT系列(自回归语言模型)的预训练目标只有一句话:

给定前面的所有token,预测下一个token的概率分布。

训练数据:"今天天气真好,我们去公园散步吧"

训练样本1:输入"今天"         ──▶ 预测"天气"
训练样本2:输入"今天天气"     ──▶ 预测"真"
训练样本3:输入"今天天气真"   ──▶ 预测"好"
训练样本4:输入"今天天气真好" ──▶ 预测","
...

损失函数:交叉熵损失
  L = -Σ log P(下一个token | 前面所有token)

就这么简单。没有标注数据,没有人工反馈,只需要海量文本。

为什么"猜下一个词"如此强大?

这是本文最核心的问题。答案在于:要准确预测下一个词,模型必须理解文本背后的世界。

让我们通过几个例子来理解:

例1:要预测"地球绕着___公转"的下一个词
  - 需要知道天文学知识
  - 需要知道"公转"的常见搭配
  - 正确答案"太阳"来自对物理世界的理解

例2:要预测"如果x+2=5,那么x=___"
  - 需要理解等式的数学含义
  - 需要会做简单的代数运算
  - 正确答案"3"来自数学推理能力

例3:要预测"他说了一句法语:Bonjour, je suis___"
  - 需要知道Bonjour是法语问候
  - 需要知道je suis意为"I am"
  - 后面应该接一个名词或形容词
  - 这需要多语言知识

关键洞察:下一个token预测是一个"万能接口"——任何有助于预测的知识都会被模型隐式学习。这就像为了通过一场"什么都会考"的考试,你不得不学习整个世界的知识。

预训练数据:规模决定一切

| 模型 | 参数量 | 训练数据量 | 数据来源 | |------|--------|-----------|---------| | GPT-2 (2019) | 1.5B | 40GB文本 (~10B tokens) | WebText | | BERT (2018) | 340M | 16GB文本 (~3.3B tokens) | Wikipedia + BooksCorpus | | GPT-3 (2020) | 175B | ~300B tokens | Common Crawl + Wikipedia + Books | | PaLM (2022) | 540B | 780B tokens | 多语言网页、书籍、代码 | | LLaMA 2 (2023) | 70B | 2T tokens | 经过精细筛选的高质量数据 | | LLaMA 3 (2024) | 70B | 15T+ tokens | 更大规模、更多语言、更多代码 |

趋势:参数量增长放缓,数据量增长加速。LLaMA 3 70B的参数量与LLaMA 2相同,但数据量增加了7.5倍。这印证了Chinchilla缩放定律的结论。

预训练时间线

2017 ──── Transformer论文 ("Attention Is All You Need")
  │
2018 ──── BERT(双向编码器)+ GPT-1(单向解码器,117M参数)
  │        证明了预训练+微调范式的威力
  │
2019 ──── GPT-2(1.5B参数)
  │        "太危险了不敢发布" ──▶ 后来证明是过度反应
  │
2020 ──── GPT-3(175B参数)
  │        Few-shot learning ──▶ 不需要微调就能做任务
  │        标志着"大语言模型"时代的开始
  │
2022 ──── PaLM(540B)/ Chinchilla(70B,最优数据配比)
  │        Scaling Law被精确量化
  │
2023 ──── LLaMA(开源运动开始)/ GPT-4(多模态)
  │        开源模型开始追赶闭源模型
  │
2024 ──── LLaMA 3 / Claude 3 / Gemini
           数据质量 > 数据数量

2.3 Scaling Law:量变如何引起质变

Chinchilla定律:最优的资源分配

2022年,DeepMind发表了里程碑式的论文《Training Compute-Optimal Large Language Models》(即Chinchilla论文)。他们用大量实验回答了一个关键问题:

给定固定的计算预算,应该把资源投给更大的模型,还是更多的数据?

计算预算 C ≈ 模型参数量 N × 训练数据量 D

之前的做法(GPT-3路线):
  参数做得很大,数据相对不够
  GPT-3: 175B参数,300B tokens
  C ≈ 6 × 175B = 1050B(近似)

Chinchilla的发现:
  最优比例应该是 D ≈ 20 × N
  即:数据量应该是参数量的20倍

  同样的计算预算下:
    GPT-3路线:175B参数 + 300B tokens ──▶ 数据不足
    Chinchilla路线:70B参数 + 1400B tokens ──▶ 最优配比

| 模型 | 参数量 | 训练tokens | tokens/参数比 | 是否最优 | |------|--------|-----------|-------------|---------| | GPT-3 175B | 175B | 300B | 1.7x | 严重欠训练 | | GPT-3 6.7B | 6.7B | 300B | 44.8x | 过度训练 | | Chinchilla | 70B | 1400B | 20x | 最优 | | LLaMA 2 70B | 70B | 2T | 28.6x | 接近最优 | | LLaMA 3 70B | 70B | 15T+ | 214x | 远超最优(数据质量提升) |

关键启示:在固定预算下,模型大小和数据量应该同步增长。一味堆参数而不增加数据,是低效的。

Scaling Law的数学形式

Kaplan等人(2020)发现,模型性能(损失L)与三个因素存在幂律关系:

损失 vs 参数量:  L(N) ∝ N^(-α_N)    α_N ≈ 0.076
损失 vs 数据量:  L(D) ∝ D^(-α_D)    α_D ≈ 0.095
损失 vs 计算量:  L(C) ∝ C^(-α_C)    α_C ≈ 0.050

直觉解读:
  - 参数翻10倍 ──▶ 损失下降约 10^(-0.076) ≈ 19%
  - 数据翻10倍 ──▶ 损失下降约 10^(-0.095) ≈ 20%
  - 计算翻10倍 ──▶ 损失下降约 10^(-0.050) ≈ 11%

关键:这些是"幂律"关系 ──▶ 投入越大,收益越大,但边际递减

Scaling Law曲线

实际验证:HellaSwag上的表现

让我们用HellaSwag基准测试(常识推理)来观察Scaling Law的实际表现:

| 模型 | 参数量 | HellaSwag准确率 | 提升 | |------|--------|----------------|------| | GPT-2 | 1.5B | 43.9% | — | | GPT-3 | 6.7B | 56.3% | +12.4% | | GPT-3 | 13B | 63.0% | +6.7% | | GPT-3 | 175B | 78.6% | +15.6% | | PaLM | 540B | 83.4% | +4.8% |

规律:每增加一定量级的参数,准确率提升幅度逐渐减小——这正是幂律关系的体现。但从43.9%到83.4%,几乎翻倍的提升是真实存在的。


2.4 涌现能力:量变何时引起质变?

什么是涌现能力

涌现能力(Emergent Abilities)是指在小模型中完全不存在、但在模型规模跨过某个阈值后突然出现的能力。

Wei等人(2022)在论文《Emergent Abilities of Large Language Models》中系统记录了这一现象。

涌现能力的典型模式:

  准确率
    │
100%├──────────────────────────────────────────▶ 100%
    │                                      ╱
 80%├─────────────────────────────────  ╱
    │                            ╱╱╱
 60%├──────────────────────╱╱╱
    │                 ╱╱╱                ← 突然涌现
 40%├───────────╱╱╱
    │      ╱╱╱  (几乎随机猜测)
 20%├─╱╱╱
    │
  0%├────┬────┬────┬────┬────┬────┬──▶ 参数量
    1B   5B   10B  20B  50B  100B 500B
              ↑
          涌现阈值

真实涌现数据

| 能力 | 涌现阈值 | 阈值以下 | 阈值以上 | 基准测试 | |------|---------|---------|---------|---------| | 算术推理 | ~10B | <5% | >50% | GSM8K | | 常识推理 | ~10B | ~50% | >80% | HellaSwag | | 多步推理(CoT) | ~100B | 无法使用CoT | CoT大幅提升 | 多种 | | 代码生成 | ~6B | 简单函数 | 复杂程序 | HumanEval | | 跨语言翻译 | ~13B | 几乎不可用 | 可用水平 | WMT | | 指令遵循 | ~10B | 经常跑题 | 基本遵循 | IFEval |

关键阈值:~10B参数是一个重要的分水岭。低于这个阈值,模型在很多推理任务上接近随机猜测;高于这个阈值,能力突然涌现。

涌现的争议

需要注意的是,2023-2024年有研究对"涌现"的概念提出质疑:

  • Schaeffer等人(2023)认为涌现可能是评估指标选择造成的假象——换用连续指标后,性能提升其实是平滑的
  • 但多数研究者认为,某些能力(如Chain-of-Thought推理)的涌现是真实的

我们的立场:无论涌现是"真突变"还是"评估假象",实际效果是明确的——模型规模达到一定水平后,能力的可用性会发生质变。1B模型和100B模型在复杂任务上的差距不是"好一点",而是"能不能做"。


2.5 注意力的代价:O(n²)复杂度

二次复杂度问题

标准自注意力机制的计算复杂度是O(n²),其中n是序列长度:

序列长度为n时:
  - 每对token之间都要计算注意力 ──▶ n × n = n² 次计算
  - 内存占用也是 O(n²) ──▶ 存储注意力矩阵

实际影响:
  n = 512    ──▶ 262K 次计算   ✓ 轻松处理
  n = 2048   ──▶ 4.2M 次计算   ✓ 可以处理
  n = 8192   ──▶ 67M 次计算    △ 需要优化
  n = 32768  ──▶ 1.07B 次计算  ✗ 内存爆炸
  n = 1M     ──▶ 1T 次计算     ✗ 不可行

这就是为什么GPT-3的上下文窗口只有2048 tokens,而Claude 3的200K窗口需要专门的技术优化。

线性注意力替代方案

研究者们提出了多种降低注意力复杂度的方案:

| 方案 | 复杂度 | 核心思想 | 代表模型 | |------|--------|---------|---------| | 标准注意力 | O(n²) | 全量注意力矩阵 | GPT-3, LLaMA | | Sparse Attention | O(n√n) | 只计算部分token对 | Longformer, BigBird | | Linear Attention | O(n) | 用核函数近似softmax | Linear Transformer | | Flash Attention | O(n²)但高效 | IO感知的精确注意力 | 几乎所有现代模型 | | Sliding Window | O(n·w) | 只看局部窗口 | Mistral (4096窗口) | | Ring Attention | O(n²/p) | 分布式分片计算 | 超长上下文模型 |

Flash Attention是目前最成功的方案——它不改变数学计算,而是通过优化GPU内存访问模式,将实际运行速度提升2-4倍,内存占用降低5-20倍。这使得O(n²)的精确注意力在实用范围内变得高效。


2.6 踩坑实录

坑1:用float32训练大模型,OOM到怀疑人生

场景:我尝试在一台8×A100 40GB的机器上微调一个7B参数的模型。按照"标准"做法,使用float32精度。

结果

模型参数:7B × 4 bytes = 28GB
Adam优化器状态:7B × 2 × 4 bytes = 56GB(需要存一阶矩和二阶矩)
梯度:7B × 4 bytes = 28GB
激活值(batch_size=1, seq_len=2048):~20GB
────────────────────────────────
总计:~132GB ──▶ 8×40GB=320GB,看起来够?

实际上:
  - 激活值随batch_size线性增长
  - batch_size=8时激活值~160GB
  - 加上碎片化 ──▶ OOM!

解决方案

# 方案1:混合精度训练(最常用)
# float32 ──▶ bfloat16/float16
# 内存减半:28GB ──▶ 14GB(参数)
# 总内存:~70GB ──▶ 可以放下

# 方案2:ZeRO优化(DeepSpeed)
# 将优化器状态分片到多卡
# 8卡 ──▶ 每卡只需存 1/8 的优化器状态

# 方案3:梯度检查点(Gradient Checkpointing)
# 用计算换内存:不保存中间激活值,反向传播时重新计算
# 激活值内存:O(n) ──▶ O(√n)

教训:2024年了还在用float32训练大模型,就像用算盘做科学计算。混合精度(bfloat16)是标配,ZeRO是分页,梯度检查点是保险。


坑2:预训练Loss不降,排查三天发现是学习率预热太短

场景:用100B tokens训练一个1.3B模型,Loss在初始下降后停滞,远高于预期。

排查过程

Day 1:检查数据 ──▶ 数据质量没问题,token分布正常
Day 2:检查模型 ──▶ 架构没问题,初始化正常
Day 3:检查训练超参 ──▶ 找到了!

问题:学习率预热(warmup)只设了1000步
  - 1000步 × batch_size 256 × seq_len 2048 = 5.2亿 tokens
  - 相当于总数据量的0.5%就结束预热
  - 模型还没"热身"就全力冲刺 ──▶ 训练不稳定

正确做法:
  - warmup应占总步数的3-5%
  - 100B tokens / (256×2048) ≈ 190,000步
  - warmup = 190,000 × 0.03 ≈ 5,700步

教训:预训练的超参数敏感性远超想象。学习率预热、余弦退火、权重衰减的每个细节都可能让Loss差0.1——这在预训练尺度上意味着模型质量的巨大差距。推荐直接参考LLaMA/Mistral的超参数设置,不要自己从零调。


坑3:训练数据中混入了测试集,评估结果"虚高"

场景:训练完模型后在MMLU上测试,得分比预期高10个点。以为是自己的数据处理做得好,准备发论文。

真相

检查训练数据 ──▶ 发现Common Crawl的一个子集中包含了Wikipedia的内容
而MMLU的很多题目恰好来自Wikipedia的知识点

更隐蔽的情况:
  - GSM8K的解题过程被包含在训练数据中(GitHub上的作业答案)
  - HumanEval的题目描述出现在训练数据的编程教程中
  - 模型不是"学会了解题",而是"背住了答案"

解决方案

# 1. 训练前做数据去重(deduplication)
#    - 文档级去重:MinHash/SimHash
#    - n-gram级去重:去除与测试集重叠的n-gram

# 2. 使用"污染检测"(contamination detection)
#    - 计算训练数据与测试集的n-gram重叠率
#    - 重叠率 > 阈值 ──▶ 剔除该训练样本

# 3. 使用"干净"的评估集
#    - 定期更新评估集,防止泄露
#    - 使用人工编写的评估题(成本高但可靠)

教训:GPT-3论文中专门有一节讨论数据污染问题。在实际工作中,训练数据和评估集的重叠是默认会发生的事情,而不是小概率事件。不做去重就发结果,等于自欺欺人。


2.7 原创实验:注意力模式的可视化与分析

为了直观理解Transformer在预训练中学到了什么,我们用纯NumPy实现了一个简化版的注意力机制,并在不同任务上观察注意力模式的变化。

完整代码见 code/02_transformer_demo.py,图表生成见 code/generate_charts_02.py

实验设计

我们实现了一个4层、4头、64维的mini-Transformer,在一个小型中文文本语料上训练,然后分析不同层、不同注意力头学到的模式。

模型配置:
  - 词表大小:5000
  - 嵌入维度:64
  - 注意力头数:4
  - Transformer层数:4
  - 最大序列长度:128
  - 训练数据:10万条中文句子
  - 训练轮次:20 epochs

实验结果

注意力模式可视化

发现1:低层学习局部语法,高层学习长距离依赖

| 层 | 主要关注模式 | 注意力分布特征 | |---|-------------|-------------| | 第1层 | 相邻词(距离1-3) | 对角线模式,类似CNN | | 第2层 | 短语内部(距离3-8) | 块状模式,学习短语结构 | | 第3层 | 句法关系(主谓宾) | 稀疏但有结构 | | 第4层 | 语义关联(任意距离) | 分散但语义相关 |

发现2:不同注意力头学到不同的语言关系

Head 0 ──▶ 主要关注前一个词(语法连续性)
Head 1 ──▶ 主要关注句首(全局上下文)
Head 2 ──▶ 主要关注标点符号(句子边界)
Head 3 ──▶ 分散注意力(可能在做"兜底"信息收集)

发现3:注意力熵随层数增加而增大

层1 平均注意力熵:1.82 bits ──▶ 集中(关注少数词)
层2 平均注意力熵:2.45 bits ──▶ 较分散
层3 平均注意力熵:3.10 bits ──▶ 更分散
层4 平均注意力熵:3.67 bits ──▶ 接近均匀(广泛收集信息)

解读:低层做"精确匹配"(关注特定位置),
      高层做"广泛理解"(综合全局信息)

运行实验

# 运行Transformer演示(无需GPU,纯CPU)
python code/02_transformer_demo.py

# 生成可视化图表
python code/generate_charts_02.py

2.8 从预训练到Agent:缺失的环节

现在我们理解了Transformer和预训练。但回到本系列的核心问题:一个只会"猜下一个词"的模型,如何变成能做复杂任务的Agent?

预训练模型的能力:
  ✓ 语言理解
  ✓ 知识存储
  ✓ 基础推理
  
预训练模型缺失的:
  ✗ 指令遵循 ──▶ 它只会续写文本,不会"回答问题"
  ✗ 安全性   ──▶ 它可能生成有害内容
  ✗ 价值对齐 ──▶ 它的"价值观"来自训练数据的统计分布

从"续写机器"到"有用助手",还需要两个关键步骤

  1. 监督微调(SFT):用人工标注的"问答对"教会模型遵循指令
  2. 对齐训练(RLHF/DPO):用人类偏好教会模型什么回答是"好的"

这正是下一篇要讨论的内容。


本章小结

  1. Transformer的核心是自注意力机制:让每个token同时看到所有其他token,解决了RNN的长距离依赖问题。代价是O(n²)复杂度。

  2. 预训练目标极其简单但极其强大:下一个token预测迫使模型学习语法、知识、推理等一切有助于预测的能力。

  3. Scaling Law揭示了量变到质变的规律:模型性能和参数量/数据量之间存在幂律关系。Chinchilla定律指出最优的数据/参数比约为20:1。

  4. 涌现能力在~10B参数阈值出现:算术推理、常识推理等能力在小模型中不存在,跨过阈值后突然出现(虽然对"涌现"的定义存在争议)。

  5. 预训练有三个常见陷阱:精度选择导致的OOM、学习率预热不当导致的训练不稳定、数据污染导致的评估虚高。


下一篇预告

03 | 对齐技术:从"续写机器"到"有用助手"

预训练模型虽然强大,但它只是一个"续写机器"——你给它"今天天气",它可能续写"真好",也可能续写"真差"。它不知道什么是"好的回答"。

下一篇我们将探讨:

  • SFT(监督微调):如何用人工标注的对话数据教会模型遵循指令
  • RLHF(基于人类反馈的强化学习):如何让模型学习人类的偏好
  • DPO(直接偏好优化):如何绕过RL的复杂性,直接优化偏好
  • 从InstructGPT到ChatGPT:对齐技术如何创造了现代AI产品

参考资料

  1. Vaswani, A. et al. (2017). Attention Is All You Need. NeurIPS 2017. - Transformer架构的奠基论文
  2. Brown, T. et al. (2020). Language Models are Few-Shot Learners. NeurIPS 2020. - GPT-3论文,展示大语言模型的Few-shot能力
  3. Hoffmann, J. et al. (2022). Training Compute-Optimal Large Language Models. - Chinchilla论文,提出最优计算分配定律
  4. Wei, J. et al. (2022). Emergent Abilities of Large Language Models. TMLR 2022. - 涌现能力的系统性研究
  5. Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS 2022. - FlashAttention,解决了注意力机制的效率瓶颈
  6. Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. - 首次系统研究语言模型的Scaling Law
  7. Touvron, H. et al. (2023). LLaMA: Open and Efficient Foundation Language Models. - Meta开源大模型,验证了数据质量的重要性

本系列代码仓库:GitHub

有问题或建议?欢迎在Issues区讨论。