第 05 章埋下的那条暗线——“规模本身会带来能力”——在 2020 年被变成了一门精确的科学。

这一年,OpenAI 的 Jared Kaplan、Sam McCandlish 等人发表了《神经语言模型的 scaling laws》1。他们系统地训练了从很小到很大的一系列语言模型,改变参数量 NN、数据量 DD、训练算力 CC,记录每个模型的测试损失(交叉熵)。结果出乎意料地规整:损失随这三个量的增长,都呈现出幂律下降——而且这种规律横跨了七个以上的数量级1

以参数量为例,损失大致服从:

L(N)(NcN)αN+LL(N) \approx \left(\frac{N_c}{N}\right)^{\alpha_N} + L_\infty

其中 αN\alpha_N 是一个小指数(约 0.076),LL_\infty 是数据本身的不可约熵(语言固有的随机性,再大的模型也消不掉)。幂律的关键性质是:在对数-对数坐标下,它是一条直线。这意味着,你只要训练几个不同规模的小模型、拟合出这条直线,就能外推预测一个大得多的模型的损失——而不必先把它训练出来。

把它跑出来看(配套代码 code/11_scaling_rlhf.py):

代码 · 11_scaling_rlhf.py
展开代码 · 11_scaling_rlhf.py
"""
第 11 章配套代码:
(1) 幂律 scaling law 拟合与外推(损失 vs 参数量)
(2) Bradley-Terry 偏好模型(RLHF 奖励模型的数学核心)
Runnable with: numpy only.  python3 11_scaling_rlhf.py
"""
import numpy as np


def power_law_demo():
    """Kaplan 2020: L(N) ≈ (Nc / N)^alpha_N + L_inf (幂律)。
    在 log-log 坐标下是一条直线,这正是它能可靠外推的原因。
    """
    print("=== (1) 幂律 scaling: L(N) = (Nc/N)^a + L_inf ===")
    Nc, a, L_inf = 8.8e13, 0.076, 1.69   # Kaplan 式量级(示意常数)
    print("  参数量 N        预测损失 L     (规模每涨10倍, 损失稳定下降)")
    for N in [1e6, 1e7, 1e8, 1e9, 1e10, 1e11]:
        L = (Nc / N) ** a + L_inf
        print(f"  {N:.0e}     {L:.3f}")
    print("  关键: log-log 下近似直线 => 可外推预测更大模型的损失(GPT-3 据此规划)")


def chinchilla_optimal():
    """Chinchilla 2022: 同算力下,参数 N 与数据 D 应同比缩放(约50/50)。
    算力 C ≈ 6*N*D。给定 C,最优 N、D 各占一半。
    """
    print("\n=== (2) Chinchilla 计算最优分配 ===")
    print("  算力 C ≈ 6*N*D ; 最优时 N 翻倍则 D 也翻倍 (约 20 tokens/参数)")
    for C in [1e21, 1e22, 1e23]:
        # 简化: N_opt ∝ C^0.5, D_opt ∝ C^0.5
        N_opt = (C / 6) ** 0.5
        D_opt = (C / 6) ** 0.5
        print(f"  C={C:.0e} FLOPs -> N_opt~{N_opt:.2e} 参数, D_opt~{D_opt:.2e} tokens")
    print("  结论: GPT-3(175B,300B tokens) 欠训练; Chinchilla(70B,1.4T tokens) 同算力更优")


def sigmoid(x): return 1 / (1 + np.exp(-x))


def bradley_terry():
    """RLHF 奖励模型: 人类偏好 y_w > y_l 的概率 = sigmoid(r(y_w) - r(y_l))。
    训练奖励模型即最大化偏好对的对数似然。
    """
    print("\n=== (3) Bradley-Terry 偏好模型 (RLHF 奖励模型核心) ===")
    print("  P(回答A优于回答B) = sigmoid(r_A - r_B)")
    for rw, rl in [(2.0, 1.0), (2.0, 0.0), (3.0, -1.0), (1.0, 1.0)]:
        p = sigmoid(rw - rl)
        print(f"  r(优)={rw:>4} r(劣)={rl:>5} -> P(选优)={p:.3f}")
    print("  奖励模型损失 = -log sigmoid(r(优) - r(劣)),从人类排序里学出标量奖励")


if __name__ == "__main__":
    power_law_demo()
    chinchilla_optimal()
    bradley_terry()

↓ 下载 11_scaling_rlhf.py

参数量 N        预测损失 L
1e+06          5.706
1e+08          4.520
1e+10          3.684
1e+11          3.364     ← 规模每涨10倍, 损失稳定、可预测地下降

Kaplan 的论文还发现一件对实践极重要的事:在很宽的范围内,网络的宽度、深度等结构细节影响很小,真正决定损失的是规模(参数、数据、算力)1。这等于说:“别纠结架构调参了,把规模放大。”这个结论直接成了 GPT-3 的规划手册——OpenAI 据此预测,把模型放大到 1750 亿参数会带来什么,然后真的去训了,并在 GPT-3 上验证了少样本上下文学习的惊人能力2


scaling laws 之所以是范式级的发现,在于它把“做更强的 AI”从一门玄学变成了一门工程。

在它之前,提升模型靠的是发明新架构、调超参、试各种技巧,回报不确定。scaling laws 说:有一条平滑、可预测的曲线,沿着它放大规模,损失就会可靠地下降。于是研究策略变了——与其赌一个新点子,不如沿着这条确定的曲线投入算力。这也解释了 2020 年后 AI 竞赛为何迅速变成一场“算力与数据的军备竞赛”:当回报可预测,理性的玩家就会把资源压在放大上。

但 Kaplan 的具体配方很快被修正。2022 年,DeepMind 的 Hoffmann 等人发表了《训练计算最优的大语言模型》,即著名的 Chinchilla 工作3。他们问了一个更精细的问题:给定固定的算力预算 CC(约等于 6ND6ND),应该把它怎么分配给“更大的模型”和“更多的数据”?

Kaplan 2020 的结论偏向参数——约 73% 算力给参数、27% 给数据。Chinchilla 重新做了更细致的实验,得出相反的结论:参数量和数据量应该按相同比例缩放——模型每翻一倍,训练数据也该翻一倍,大致是 50/50 分配3。这个修正的杀伤力在于它揭示:当时几乎所有大模型都“过大而欠训练”——它们参数堆得很多,但喂的数据太少,没把参数喂饱。为证明这点,DeepMind 训了一个只有 700 亿参数、但用了 4 倍数据的 Chinchilla,在相同算力下全面超过了 2800 亿参数的 Gopher、1750 亿的 GPT-3、5300 亿的 Megatron-Turing NLG3

跑一下计算最优分配(code/11_scaling_rlhf.py):

算力 C ≈ 6*N*D ; 最优时 N 翻倍则 D 也翻倍 (约 20 tokens/参数)
C=1e+22 FLOPs -> N_opt~4.08e10 参数, D_opt~4.08e10 ...
结论: GPT-3(175B,300B tokens) 欠训练; Chinchilla(70B,1.4T tokens) 同算力更优

Chinchilla 之后,“小一点的模型 + 多得多的数据”成了新共识,直接影响了后续 LLaMA 等模型的设计哲学——用相对小的参数、海量数据,做出又强又便宜部署的模型。Kaplan 与 Chinchilla 之争,是 scaling 这门年轻科学自我修正的一个范例:两者都对幂律成立,分歧只在最优分配的系数上。


但 scaling 只解决了“能力”,没解决“有用”。一个用海量文本训练的语言模型,学会的是模仿互联网文本的分布——它会续写、会模仿任何风格,但它不天然地有帮助、诚实、无害。问它问题,它可能续写出一个更长的问题列表(因为训练数据里问题常成堆出现);它会一本正经地编造、会顺着有害请求往下写。预训练模型是个博学但不听话的“续写机器”,不是一个助手。

把它变成助手,需要对齐(alignment)——让模型的行为符合人类的意图和价值。对齐的关键技术,是基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)。

RLHF 的思想源头是 2017 年 Christiano 等人的《从人类偏好做深度强化学习》4。他们的洞察是:很多我们想要的行为,很难写成数学奖励函数,但人类一眼就能比较哪个更好。比如“什么是好的回答”无法精确定义,但给人看两个回答,他能说出更喜欢哪个。于是不去手写奖励函数,而是从人类的成对偏好里学出一个奖励函数。Christiano 等人证明,仅用不到 1% 的交互让人类提供偏好反馈,就能训练智能体解决 Atari 游戏和模拟机器人运动这类难以指定奖励的任务4

2022 年,OpenAI 的 Ouyang 等人在《训练语言模型遵循指令》(InstructGPT)里,把 RLHF 系统地用到了语言模型上5。这就是 ChatGPT 背后的核心训练方法。


InstructGPT 的 RLHF 是一个清晰的三步流程5

第一步,监督微调(SFT):先收集一批人类写的高质量示范——给定指令,人类示范应该怎么回答。用这些“指令-理想回答”对,对预训练模型做有监督微调,让它先学会“回答指令”这种格式,而不是漫无目的地续写。

第二步,训练奖励模型(RM):让 SFT 模型对同一个指令生成多个回答,请人类排序(这个比那个好)。用这些人类排序,训练一个奖励模型——它输入一个回答,输出一个标量分数,分数高低反映人类偏好。这一步的数学核心是 Bradley-Terry 偏好模型:人类偏好回答 ywy_w 胜过 yly_l 的概率,被建模为两者奖励之差的 sigmoid:

P(ywyl)=σ(r(yw)r(yl))P(y_w \succ y_l) = \sigma\big(r(y_w) - r(y_l)\big)

训练奖励模型就是最大化所有人类偏好对的对数似然,即最小化 logσ(r(yw)r(yl))-\log \sigma(r(y_w) - r(y_l))。跑一下(code/11_scaling_rlhf.py):

P(回答A优于B) = sigmoid(r_A - r_B)
r(优)=2.0 r(劣)=1.0 -> P(选优)=0.731
r(优)=3.0 r(劣)=-1.0 -> P(选优)=0.982
r(优)=1.0 r(劣)=1.0 -> P(选优)=0.500   ← 奖励相等则各半

奖励差越大,模型对“哪个更好”越确信;这个可微的偏好模型,把离散的人类排序变成了一个连续的、可优化的奖励信号。

第三步,强化学习优化(PPO):把奖励模型当作奖励信号,用强化学习(近端策略优化, PPO)继续训练语言模型——让它生成的回答尽可能获得奖励模型给的高分。同时加一个约束(KL 惩罚),防止模型为了刷高奖励而偏离原来的语言能力太远(否则它会发现一些钻奖励模型空子的怪异输出)。

三步走完,模型从“博学的续写机”变成了“听话、有帮助的助手”。InstructGPT 的一个惊人结果是:经过 RLHF 的 13 亿参数小模型,其输出被人类偏好的程度,超过了未对齐的 1750 亿参数 GPT-35——参数小了 100 多倍,却更有用。这说明对齐带来的“有用性”提升,和单纯放大规模是两个正交的维度:规模给你原始能力,对齐把能力导向人类想要的方向。


把这两件事的关系想清楚,是理解今天大模型的关键。scaling 负责“聪明”,对齐负责“有用”——缺一不可。

只有 scaling,你得到一个能力惊人但不受控的续写引擎(GPT-3 那样,需要精心设计提示词才能驾驭)。只有对齐而没有足够规模,你得到一个听话但没什么本事的小模型。2022 年底的 ChatGPT,正是两者合流的产物:一个被 scaling 推到足够大、又被 RLHF 对齐得足够听话的模型,第一次让普通人能用自然语言流畅地使唤一个 AI。它在两个月内达到一亿用户,把这部从 1943 年开始的技术史,第一次推到了全人类的日常生活里。

值得强调的是,对齐远未“解决”。RLHF 有已知的局限:人类反馈本身有偏差和不一致,奖励模型会被钻空子(reward hacking),模型可能学会“听起来对”而非“真的对”(谄媚、自信地胡说)。如何让 AI 在变得更强的同时仍然诚实、可控、价值对齐,是一个开放的、且随能力增长而愈发紧迫的问题——它催生了 RLHF 的各种改进(如直接偏好优化 DPO、宪法式 AI、可扩展监督等)和整个 AI 安全研究领域。这部技术史在这里抵达它的现在进行时。


用一张图把规模与对齐这两条最前沿的主线收束:

【规模 (scaling) — 负责"聪明"】
  预测下一个词 + 放大(N,D,C) ──► 损失幂律下降 L(N)=(Nc/N)^α+L∞
     Kaplan 2020: 偏参数(73/27),规划了 GPT-3
     Chinchilla 2022: 参数与数据同比(50/50),多数模型"欠训练"
     => 得到强大但不听话的"续写引擎"


【对齐 (RLHF) — 负责"有用"】
  ① SFT: 人类示范 → 学会"回答指令"
  ② RM:  人类排序 → Bradley-Terry: P(优于)=σ(r_w−r_l) → 学出标量奖励
  ③ PPO: 用奖励模型 + KL约束 强化学习 → 优化到"人类偏好"
     => 1.3B 对齐模型 被偏好 > 175B 未对齐 GPT-3


              ChatGPT (2022) = 足够大 × 足够对齐

配套的 manim 动画 assets/manim/ch11_scaling_rlhf.pyScalingLawRLHFPreference 两个 Scene)把两块基石演出来:前者展示损失在 log-log 坐标下随规模下降成一条可外推的直线(幂律),散点落在线上、虚线把它延伸去预测更大的模型——规模可预测;后者展示 RLHF 的链条,人给出“A 比 B 好”的成对偏好,训出奖励模型,策略分布随之被推向高奖励区。两段动画分别对应“规模可预测”与“偏好可量化”——大模型时代的数学基石。

从 1943 年 McCulloch 和 Pitts 把神经元写成一个逻辑命题,到 2022 年 ChatGPT 用人类反馈学会对话,这条线走了将近八十年。它的每一步——可计算(M-P)、可学习(感知机)、可训练多层(反向传播)、可编码结构先验(CNN/LSTM)、可大规模运行(数据+算力+地基)、可统一为注意力(Transformer)、可大规模预训练(BERT/GPT)、可预测地放大(scaling laws)、可对齐于人(RLHF)——都是在回答同一个问题的一个侧面:如何让一台只会做加法和乘法的机器,逐步逼近“理解”与“生成”。这条感知与生成的主线走到今天的逻辑,已经清晰可辨;而另一条关于“决策与行动”的主线,将从下一章重新展开,并最终与它合流。


本质

scaling laws 与 RLHF 解决的是两个截然不同、却同样根本的问题。scaling laws 把“做更大的模型值不值得”从一场昂贵的赌博,变成了一道可外推的工程预算题——损失随规模的下降是一条幂律直线,于是你能在投入巨额算力之前就预测它会换来多少性能,这是 GPT-3 之后所有大模型敢于持续投入的底气。RLHF 解决的则是另一回事:预训练让模型学会了“人类文本的分布”,但“最可能的下一个词”并不等于“人类真正想要的回答”。它的办法是把难以写成损失函数的人类偏好,转译成一个可优化的奖励信号——人只需说“A 比 B 好”,就能训出一个会打分的奖励模型,再用强化学习把策略推向高分区。一个让能力可预测地变强,一个让变强的能力对齐到人的意图;正是后者第一次把第十二章起的那条强化学习主线,借进了语言模型的世界。


参考文献

  1. Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J., & Amodei, D. (2020). Scaling Laws for Neural Language Models. 幂律 L(N)、跨 7+ 数量级、结构细节影响小、算力最优分配(~73/27)。arXiv:https://arxiv.org/abs/2001.08361

  2. Brown, T. B., et al. (2020). Language Models are Few-Shot Learners(GPT-3, 175B 参数, 上下文学习)。arXiv:https://arxiv.org/abs/2005.14165 ;NeurIPS 2020:https://papers.nips.cc/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.html

  3. Hoffmann, J., et al. (2022). Training Compute-Optimal Large Language Models(Chinchilla)。参数与数据同比缩放、多数模型欠训练、70B Chinchilla 胜 280B/175B/530B。arXiv:https://arxiv.org/abs/2203.15556

  4. Christiano, P. F., Leike, J., Brown, T. B., Martic, M., Legg, S., & Amodei, D. (2017). Deep Reinforcement Learning from Human Preferences. 从成对偏好学奖励、<1% 反馈解 Atari/机器人。arXiv:https://arxiv.org/abs/1706.03741

  5. Ouyang, L., et al. (2022). Training Language Models to Follow Instructions with Human Feedback(InstructGPT)。三步 SFT→RM→PPO、Bradley-Terry 偏好、1.3B 对齐胜 175B GPT-3、ChatGPT 技术底座。arXiv:https://arxiv.org/abs/2203.02155 ;PDF:https://arxiv.org/pdf/2203.02155

幂律的本质:线性坐标看不出规律,换到 log-log 坐标损失随规模排成一条可外推的直线,只训几个小模型就能预测大模型;末尾用「一年?一万年?不,1亿年」的设问-悬念-反转点出算力代价。
固定算力预算 C≈6ND 是一条等值双曲线,Kaplan(偏参数73/27)与 Chinchilla(参数数据同比50/50)落在同一线上;同算力下喂饱数据的 70B Chinchilla 损失条最短,胜过参数多几倍的 GPT-3/Gopher/MT-NLG。
RLHF 三阶段闭环 SFT→RM→PPO 的原创可视化:人类示范教格式、Bradley-Terry 把成对偏好 P(A≻B)=σ(r_A−r_B) 变成可优化标量奖励、PPO 把策略分布推向高奖励区并用 KL 弹簧拴住,终得 1.3B 对齐模型被偏好程度超过 175B 未对齐 GPT-3。