扩展定律,谨慎解读(25分钟阅读)
摘要
全面概述深度学习中的扩展定律,追溯其理论基础和实证发现,并解释损失如何随模型大小、数据和计算量可预测地降低。
扩展定律是深度学习中最重要的实证发现之一。它们可以作为一个框架,用于描述计算量、损失、模型大小和数据之间的关系。其可预测性使它们在实践中极具价值。本文讨论了扩展定律、如何利用它们优化计算分配以及它们的缺陷。
查看缓存全文
缓存时间: 2026/06/26 17:10
# 缩放定律,审慎解读
来源:https://lilianweng.github.io/posts/2026-06-24-scaling-laws/
缩放定律是深度学习中最重要的实证发现之一。其观察形式简洁:随着模型规模 $N$、数据集大小 $D$ 和计算量 $C$ 的扩大,训练损失 $L$ 会按幂律曲线可预测地下降,在对数-对数图上表现为一条直线。我们可以将缩放定律视为描述计算量、损失、模型规模和数据集大小之间关系的框架;其核心在于如何在 $N$ 和 $D$ 之间最优分配宝贵的计算资源。
这种可预测性使得缩放定律在实践中极具价值。常见的做法是在少量小规模运行上拟合缩放定律,然后外推以估计更大模型所需的 token 数和计算量。
符号说明
符号 说明
$N$ 模型大小,以参数量计。
$D$ 训练数据集大小,通常以 token 数计。
$C$ 训练计算量,单位为 FLOPs。一个有用的近似为 $C \approx 6ND$ (Kaplan et al. 2020 (https://arxiv.org/abs/2001.08361)),其中 $2ND$ 用于前向传播,$4ND$ 用于反向传播。
$E$ 不可约损失
$L, \hat{L}(.)$ 测试损失 / 测试损失预测函数;也可指训练损失,因为两者高度相关。
$\epsilon$ 泛化误差。
## 早期:机器学习损失的可预测性
在缩放定律成为主流概念之前,泛化误差随规模扩大的可预测性就已得到研究。
Amari et al. (1992) (https://ieeexplore.ieee.org/document/6796972) 使用贝叶斯方法和退火近似推导了四种学习曲线类型。
1. 确定性学习算法,无噪声数据,唯一解:$\epsilon \sim c \cdot D^{-1}$,其中 $c$ 为常数。
2. 确定性学习算法,无噪声数据,多个等价解:$\epsilon \sim c \cdot D^{-2}$;每个新数据点的学习速度更快,因为模型只学习参数的最优流形,而非寻找单一解点。
3. 确定性学习算法,有噪声数据:$\epsilon \sim c \cdot D^{-1/2}$;数据中的噪声使学习变得困难。
4. 随机学习算法,有噪声数据:$\epsilon \sim c \cdot D^{-1} + E$;这里不可约损失 $E$ 是随机学习器无法进一步降低的残差误差,例如当模型在大数据上耗尽容量时。四种学习曲线均遵循幂律:
$$ \epsilon \sim c \cdot D^\alpha + E $$
其中 $E$ 可以为 0,$\alpha = -2, -1, -1/2$。尽管其理论设置基于简化的二分类任务,但为构建经验性的机器学习损失预测模型指明了有用方向。
最早的经验性研究之一来自 Hestness et al. (2017) (https://arxiv.org/abs/1712.00409),他们解释了泛化误差、模型规模和数据集大小之间的关系。对于给定的训练数据大小,他们通过网格搜索确定最佳拟合的模型大小,然后将损失与训练数据集大小作图。在深度学习的四个不同领域(神经机器翻译、图像分类、语言建模和语音识别)中,观察到了一个反复出现的模式:
- 泛化误差随一组因素(如数据大小)呈幂律缩放。
- 模型改进会移动误差曲线,但似乎不影响幂律指数。
- 有趣的是,架构会改变幂律拟合的偏移量 ($E$),但不会改变指数 ($\alpha$)。幂律的斜率似乎是问题领域的属性,而非模型架构的属性。
- 拟合大小为 $D$ 的数据集所需的模型参数量 $N$ 也呈幂律缩放。
(左)Deep-Speech-2 (DS2) 和注意力语音模型的学习曲线,以及(右)不同大小的 DS2 模型的学习曲线。当训练数据变大时,小模型的损失会出现平台期。(图片来源:Hestness et al. 2017)
一个概念性图示将学习曲线分为三个阶段。在小数据区,当学习信号不足时,模型表现仅略优于随机猜测。在中间区域(“幂律区”),我们观察到损失、数据和模型大小之间存在幂律关系。最终不可约误差区域可归因于数据中的噪声等因素。
幂律学习曲线阶段示意图(图片来源:Hestness et al. 2017)
Rosenfeld et al. (2020) (https://arxiv.org/abs/1909.12673) 进一步推进了这一研究,尝试将误差建模为模型大小 $N$ 和数据大小 $D$ 的联合函数,涵盖了多种架构(ResNet、WRN、LSTM、Transformer)和优化器(Adam、SGD 变体)。经验上他们观察到,固定一个轴,误差在另一个轴上呈幂律衰减:
$$ \hat{L}(D,N) \approx \frac{A}{N^{\alpha}} + E_N,\quad \hat{L}(D,N) \approx \frac{B}{D^{\beta}} + E_D $$
可以结合成联合形式:
$$ \hat{L}(D, N) \approx \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}} + E $$
其中 $A > 0, B > 0, \alpha \geq 0, \beta \geq 0$ 是标量常数,$E$ 不依赖于 $N$ 或 $D$。
数据大小、模型大小和泛化误差的三维等高线图(对数-对数-对数尺度)。蓝点来自经验实验,曲面是蓝点之间的线性插值。(图片来源:Rosenfeld et al. 2020)
因此,他们可以构建一个形式为 $\boldsymbol{\theta} = \langle A, B, E, \alpha, \beta \rangle$ 的简单参数函数的预测模型,仅通过在较小训练配置集 $(D, N)$ < 某些阈值上进行训练,来预测 $(D, N)$ > 某些阈值时的预期损失。
在小规模配置上拟合参数化误差模型并外推到更大模型/数据区域:(a) 实验设置示意图;(b) ImageNet、(c) WikiText-103 和 (d) CIFAR100 上的实验结果,使用三种架构(WRN、VGG、DenseNet)和两种优化器(SGD、Adam)进行误差估计。(图片来源:Rosenfeld et al. 2020)
旁注:这些早期工作依赖于经典学习理论直觉,如VC维 (https://en.wikipedia.org/wiki/Vapnik%E2%80%93Chervonenkis_dimension)(模型能够打散的最大点集的大小)作为容量的代理,但在现代深度学习工作中,VC 维通常过于粗糙,无法解释行为,而经验性的幂律被证明比理论提供的最坏情况界限更清晰、更实用。
## 数据无限区域的缩放定律
### Kaplan et al. 的缩放定律
Kaplan et al. (2020) (https://arxiv.org/abs/2001.08361) 在语言建模社区普及了缩放定律的概念。他们发现交叉熵测试损失 $L$ 分别随模型大小 $N$(排除嵌入层)、数据集大小 $D$ 和训练计算量 $C$ 在多个数量级上呈幂律缩放。这些发现与上一节的早期工作一致,但 Kaplan 等人通过关注 Transformer 语言模型和更大规模的经验实验(模型大小从 768M 到 1.5B 非嵌入参数,数据集大小从 22M 到 23B 个 token)将该概念形式化。论文中的所有训练运行都使用了一个学习率调度:3000 步线性预热,然后余弦衰减至零。
关键发现列表:
- 损失 $L$ 分别随 $N$、$D$ 和 $C$ 呈幂律缩放;为获得最优性能,三者必须同步扩展。
- 训练曲线遵循可预测的幂律,其参数大致独立于模型大小。
- 更大的模型样本效率更高,意味着它们可以用更少的优化步数和更少的数据点达到给定的损失。
- 架构细节(宽度、宽高比等)不如纯粹规模重要。
- 训练损失和测试损失呈正相关。(听起来很 trivial,但这是预训练工作的基础。另一方面,预训练损失的改善是否能迁移到后训练评估中,还需要单独研究。)
- 给定固定计算预算,训练一个非常大的模型并在*收敛前*停止,比训练一个较小的模型直到收敛更有效。**这一发现与 Chinchilla 缩放定律(下一节)相悖:Kaplan 等人高估了最优模型大小,因为他们的拟合指数更大。**
他们将 $N$ 和 $D$ 的联合依赖关系总结为一个方程:
$$ \hat{L}(N,D) = \left[ \left(\frac{a}{N}\right)^{\frac{\alpha}{\beta}} + \frac{b}{D} \right]^{\beta} $$
这种形式的一个良好特性是过拟合程度(即模型复杂或数据较小)主要取决于比值 $N^{\alpha / \beta} / D$,这表明数据需要以特定比例随模型大小增长,以避免训练受数据限制。
测试损失作为计算量、数据集大小和参数的幂律函数,跨越多个数量级。(图片来源:Kaplan et al. 2020)
最具影响力、事后看来争议最大的结论是计算最优分配。Kaplan 等人发现 $N_{\text{opt}} \propto C^{0.73}$,并得出结论:模型大小应比数据集大小增长得更快。具体来说,对于 10 倍的计算量增加,他们建议将模型大小扩大约 5.5 倍,但训练 token 仅扩大约 1.8 倍。Chinchilla 论文后来推翻了这一建议,认为这会导致大模型严重*欠训练*。
Kaplan 等人论文中的另一个有用分析是基于 $D$ 和 $N$ 近似计算所需的训练 FLOPs。每次乘法-加法计为约 2 个 FLOPs。
不同 Transformer 架构组件的参数和计算量估算,给定层数 $n_{\text{layer}}$、模型宽度 $d_{\text{model}}$(= $d_{\text{embed}}$;原始表格中符号不一致)、前馈层维度 $d_{\text{ff}}$(通常等于 $4 d_{\text{model}}$)、注意力维度 $d_{\text{attn}}$(通常等于 $d_{\text{model}}$)、上下文长度 $n_{\text{ctx}}$ 和词汇量 $n_{\text{vocab}}$。(图片来源:Kaplan et al. 2020)
给定标准配置,其中 $d_{\text{attn}} = d_{\text{model}} = d_{\text{ff}}/4$,并且从 $N$ 中排除嵌入层以及每个 token 的前向计算:
$$ \begin{align} N &= n_{\text{layer}} d_{\text{model}} 3 d_{\text{attn}} + n_{\text{layer}} d_{\text{attn}} d_{\text{model}} + n_{\text{layer}} 2 d_{\text{model}} d_{\text{ff}} & \small{\text{; 无嵌入层}} \\ &= 2\;n_{\text{layer}} d_{\text{model}}(2d_{\text{attn}} + d_{\text{ff}}) & \\ &= 12\;n_{\text{layer}} d_{\text{model}}^2 & \\ \\ C_{\text{fwd}} &= 2 n_{\text{layer}} (d_{\text{model}} 3 d_{\text{attn}} + n_{\text{ctx}}d_{\text{attn}} + d_{\text{attn}}d_{\text{embed}} + 2 d_{\text{model}} d_{\text{ff}}) & \\ &= 2 n_{\text{layer}} (12 d_{\text{model}}^2 + n_{\text{ctx}}d_{\text{attn}}) & \\ &= 2N + 2 n_{\text{layer}}n_{\text{ctx}}d_{\text{attn}} & \\ &\approx 2N \quad\quad \small{\text{; 假设 }n_{\text{ctx}} < 12 d_{\text{model}} \text{ 且 }n_{\text{ctx}}\text{ 项相对较小。}}\\ \end{align} $$
然后我们将反向传播 FLOPs 计为前向传播 FLOPs 的两倍,因为反向传播运行两次矩阵乘法,分别针对输入激活和权重的梯度。因此,每个 token 的训练 FLOPs 大约为 $6N$,在 $D$ 个 token 上训练的总 FLOPs 为 $C \approx 6ND$。
### Chinchilla 缩放定律
Chinchilla 论文 (Hoffmann et al. 2022 (https://arxiv.org/abs/2203.15556)) 研究了在*固定*计算预算 $C$ 下,最优模型大小 $N$(总参数,*包括*嵌入)与 token 数量 $D$ 之间的关系,采用了更谨慎的实验设计,得出了与 Kaplan 等人略有不同的答案。
你应该知道 Chinchilla 的样子 😊(图片来源:ChatGPT 生成)
核心问题是在约束 $\text{FLOPs}(N, D) = C \approx 6ND$ 下,如何最佳分配资源。换句话说,当我们只有有限的 FLOPs(给定数量的 GPU 运行给定时间)时,我们应该如何在更多数据 token 和更多模型参数之间做出选择?
$$ N_{\text{opt}}(C), D_{\text{opt}}(C) = \operatorname*{arg\,min}_{\text{s.t. } \text{FLOPs}(N,D) = C} \hat{L}(N, D) $$
Chinchilla 论文提出了三种精心设计的缩放定律拟合方法。
经验实验扫描了超过 400 个模型,参数范围从 70M 到超过 16B,训练 token 从 5B 到 500B。实验假设每个训练 token 都是唯一的(无限数据区域)。所有运行都使用了余弦学习率调度,在训练周期内衰减 10 倍。扫描不同的模型大小描绘出计算最优边界。
#### 方法 1:固定模型大小,变化 token 预算
对于每个参数量 $N$,使用不同的 token 预算训练多次运行,并记录每个 FLOP 预算 $C$ 下实现的最小损失。
Chinchilla 方法 1:不同模型大小下,训练损失曲线随 FLOP 预算的变化。(图片来源:Hoffmann et al. 2022)
#### 方法 2:IsoFLOP 轮廓
固定计算预算 $C$,绘制最终损失随参数量 $N$ 的变化图。每条 iso-FLOP 曲线在对数空间中大致呈抛物线,其最小值标志着该计算预算下的最优模型大小。然后在不同预算间重复,在图中描绘出一条幂律线。
Chinchilla 方法 2:IsoFLOP 抛物线;每条曲线的最小值是该预算下的计算最优模型大小。(图片来源:Hoffmann et al. 2022)
#### 方法 3:参数拟合
直接拟合与 Rosenfeld et al. (2020) (https://arxiv.org/abs/1909.12673) 相同的参数函数:
$$ \hat{L}(N, D) = \frac{A}{N^\alpha} + \frac{B}{D^\beta} + E $$
实际上,我们可以通过在约束 $\text{FLOPs}(N,D) = C \approx 6ND$ 下最小化 $\hat{L}(N, D)$,得到最优 $N_{\text{opt}}(C)$ 和 $D_{\text{opt}}(C)$ 的闭式近似。
首先将表达式简化为仅含 $N$ 的形式:
$$ \begin{align} \hat{L}(N) &= A N^{-\alpha} + B \Big(\frac{C}{6}\Big)^{-\beta} N^\beta + E \\ \hat{L}'(N) &= -\alpha A N^{-\alpha-1} + \beta B \Big(\frac{C}{6}\Big)^{-\beta} N^{\beta-1} = 0 & \small{\text{; 对 }N\text{ 的导数应为零。}} \\ \text{Thus}\quad & \alpha A N^{-\alpha-1} = \beta B \Big(\frac{C}{6}\Big)^{-\beta} N^{\beta-1} \\ & \alpha A = \beta B \Big(\frac{C}{6}\Big)^{-\beta} N^{\alpha + \beta} \\ & N_{\text{opt}} = \Big(\frac{\alpha A}{\beta B}\Big)^{\frac{1}{\alpha + \beta}} \Big(\frac{C}{6}\Big)^{\frac{\beta}{\alpha+\beta}} \\ & D_{\text{opt}} = \frac{C}{6 N_{\text{opt}}} = \Big(\frac{\beta B}{\alpha A}\Big)^{\frac{1}{\alpha + \beta}} \Big(\frac{C}{6}\Big)^{\frac{\alpha}{\alpha+\beta}} \end{align} $$
当 $\alpha \approx \beta$ 时,模型大小和训练 token 应以相同速率缩放。
为了找到最优的 $\boldsymbol{\theta} = \langle A, B, E, \alpha, \beta\rangle$,Chinchilla 论文采用了 Huber 损失 (https://en.w
相似文章
@lilianweng: 一篇超级迟到的(3年以上?)关于扩展定律的帖子。计算很昂贵。扩展定律是一种帮助我们推理…
Lilian Weng的博客文章全面概述了深度学习中的扩展定律,涵盖了它们的推导、计算最优分配以及Kaplan等人与Chinchilla之间的争论。
统一神经缩放定律
提出了一种统一神经缩放定律,能够精确建模深度神经网络在多个维度(包括参数量、数据集大小、训练步数和计算量)上的缩放行为,并在多种架构和任务上得到验证。
2023-2031年模型规模扩展(阅读时间21分钟)
一篇关于AI模型规模扩展趋势的分析,发布于LessWrong,时间跨度为2023年至2031年。
神经语言模型的缩放规律
基础性实证研究,展示了语言模型性能与模型规模、数据集大小和计算预算之间的幂律缩放关系,对最优训练资源分配和样本效率有重要启示。
统一神经缩放定律
本文提出了统一神经缩放定律(UNSL),这是一种函数形式,能够准确建模和推断深度神经网络在多个维度(如参数、数据和步骤)同时变化时的缩放行为,相较于之前的缩放定律有所改进。