深入解读缩放定律
缩放定律(Scaling laws)是深度学习领域最重要的经验发现之一。它的表述非常简单:随着模型规模 $N$、数据集规模 $D$ 和算力 $C$ 的增大,训练损失 $L$ 会遵循幂律曲线可预测地下降,在双对数图上表现为一条直线。我们可以把缩放定律视为一个描述算力、损失、模型规模和数据之间关系的框架;其核心在于如何将宝贵的算力在 $N$ 和 $D$ 之间进行最优分配。
这种可预测性使得缩放定律在实践中极具价值。常见的做法是:先用少量小规模实验拟合出缩放定律,然后外推以估算更大模型所需的 token 数量和算力。
| 符号 | 说明 |
|---|---|
| $N$ | 模型规模,以参数量计。 |
| $D$ | 训练数据集规模,通常以 token 数计。 |
| $C$ | 训练算力,以 FLOPs 计。一个常用的近似是 $C \approx 6ND$(Kaplan et al. 2020),其中 $2ND$ 对应前向传播,$4ND$ 对应反向传播。 |
| $E$ | 不可约损失(irreducible loss) |
| $L, \hat{L}(.)$ | 测试损失 / 测试损失预测函数;由于训练损失与测试损失强相关,也可代指训练损失。 |
| $\epsilon$ | 泛化误差。 |
早期:机器学习损失的可预测性#
在缩放定律成为主流概念之前,泛化误差随模型规模变化的可预测性就已经被研究过了。
Amari et al. (1992) 采用贝叶斯方法和退火近似,推导出了四类学习曲线。
- 确定性学习算法、无噪声数据、唯一解:$\epsilon \sim c \cdot D^{-1}$,其中 $c$ 为常数。
- 确定性学习算法、无噪声数据、多等价解:$\epsilon \sim c \cdot D^{-2}$;由于模型只需学到参数的最优流形,而不必精确定位到唯一点,因此每增加一个数据点,学习速度都更快。
- 确定性学习算法、有噪声数据:$\epsilon \sim c \cdot D^{-1/2}$;数据中的噪声使学习变得更难。
- 随机学习算法、有噪声数据:$\epsilon \sim c \cdot D^{-1} + E$;其中不可约损失 $E$ 是随机学习器无法继续降低的残差误差,例如模型在大量数据上容量耗尽时的情况。四类学习曲线都遵循幂律:
其中 $E$ 可以为 0,$\alpha = -2, -1, -1/2$。尽管他们的理论框架基于一个简化的二分类任务,但为构建经验性的机器学习损失预测模型指出了有益的方向。
Hestness 等人(2017)是最早的实证研究之一,阐述了泛化误差、模型规模和数据之间的关系。对于给定的训练数据规模,他们通过网格搜索找到最佳拟合的模型规模,然后绘制损失随训练数据集规模变化的曲线。在深度学习的四个不同领域(神经机器翻译、图像分类、语言建模和语音识别)中,观察到了反复出现的规律:
- 泛化误差在一组因素(例如数据规模)上呈幂律关系。
- 模型的改进会平移误差曲线,但似乎不会改变幂律指数。
- 有趣的是,架构会改变幂律拟合的偏移量($E$),但不改变指数($\alpha$)。幂律的斜率似乎是问题领域的属性,而非模型架构的属性。
- 拟合规模为 $D$ 的数据集所需的模型参数量 $N$ 也呈幂律关系。
一个概念性的图示将学习曲线划分为三个阶段。在小数据区域,由于学习信号不足,模型的表现仅略好于随机猜测。在中间("幂律区域"),我们观察到损失、数据和模型规模之间呈幂律关系。最后的不可约误差区域则可归因于数据噪声等因素。
Rosenfeld 等人(2020)更进一步,试图将误差建模为模型规模 $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$。
由此,他们可以构建一个参数形式为 $\boldsymbol{\theta} = \langle A, B, E, \alpha, \beta \rangle$ 的预测模型:只需在若干较小规模的训练配置 $(D, N)$ 上训练,就能预测超过某一阈值后 $(D, N)$ 的预期损失。
补充说明:这些早期工作借鉴了经典学习理论的直觉,例如用 VC 维(即模型能打散的最大点集基数)作为模型容量的代理度量。但在现代深度学习研究中,VC 维往往过于粗糙,无法解释实际观察到的行为;相比理论给出的最坏情况界,这些经验性的幂律反而更加简洁实用。
数据无上限区域的缩放定律#
Kaplan 等人的缩放定律#
Kaplan 等人(2020) 在语言建模领域推广了缩放定律的概念。他们发现,测试集交叉熵损失 $L$ 与模型规模 $N$(不含嵌入层)、数据集规模 $D$ 以及训练算力 $C$ 之间都呈幂律关系,且跨越多个数量级。该结论与上一节中的早期工作一致,但 Kaplan 等人以 Transformer 语言模型为对象,通过更大规模的实证实验(模型规模从 7.68 亿到 15 亿非嵌入参数,数据集规模从 2200 万到 230 亿 token)对这一概念进行了形式化。论文中所有训练都采用带 3000 步线性 warmup 的学习率调度,随后用余弦退火衰减至零。
关键结论一览:
- 损失 $L$ 与 $N$、$D$、$C$ 各自呈幂律关系;若要取得最优性能,三者必须同步放大。
- 训练曲线遵循可预测的幂律,其参数大致与模型规模无关。
- 更大的模型样本效率更高,即能用更少的优化步数和更少的数据点达到相同损失。
- 架构细节(宽度、长宽比等)远不如规模本身重要。
- 训练损失与测试损失正相关。(看似显然,却是预训练工作的基石。而预训练损失的提升能否迁移到后训练评估,则需要另行研究。)
- 在固定算力预算下,训练一个超大模型并在收敛前停止,比训练一个较小模型直至完全收敛更高效。这一结论是 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 等人发现 $N_\text{opt} \propto C^{0.73}$,认为模型规模的增长速度应当快于数据集。具体来说,他们建议算力增加 10 倍时,模型规模扩大约 5.5 倍,但训练 tokens 只增加约 1.8 倍。之后的 Chinchilla 论文推翻了这一建议,认为按照该比例缩放会导致大模型严重欠训练。
Kaplan 等人还做了一个有用的分析:基于 $D$ 和 $N$ 估算所需的训练 FLOPs,其中每次乘加运算计为约 2 FLOPs。
在标准配置下,$d_\text{attn} = d_\text{model} = d_\text{ff}/4$,且 $N$ 与逐 token 前向计算均不包含 embedding 层:
$$ \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{;不含 embedding 层}} \\ &= 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 计为前向传播的两倍,因为反向传播要分别对输入激活和权重做两次矩阵乘法。因此,训练时每个 token 的 FLOPs 总量约为 $6N$,在 $D$ 个 token 上训练的总 FLOPs 为 $C \approx 6ND$。
Chinchilla 缩放定律#
Chinchilla 论文(Hoffmann et al. 2022)以更细致的实验设计,研究了在固定算力预算 $C$ 下,最优模型规模 $N$(总参数量,包含 embedding)与 token 数 $D$ 之间的关系,得到的结论与 Kaplan 等人有所不同。
核心问题是:在约束 $\text{FLOPs}(N, D) = C \approx 6ND$ 下,资源应如何分配?换言之,当算力有限(给定数量的 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 倍。遍历模型规模即可勾勒出计算最优的前沿曲线。
方法一:固定模型规模,改变 token 预算#
对于每个参数量 $N$,用不同的 token 预算训练若干次,并记录每个 FLOP 预算 $C$ 下达到的最低损失。
方法二:IsoFLOP 曲线#
固定计算预算 $C$,把最终损失对参数量 $N$ 作图。每条等 FLOP 曲线在对数空间下大致呈抛物线,其最低点即为该计算预算下的最优模型规模。然后在不同预算下重复这一过程,就能在图中描出一条幂律直线。
方法三:参数化拟合#
直接拟合与 Rosenfeld et al. (2020) 相同的参数化函数:
$$ \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{因此}\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 损失(对离群点鲁棒;$\delta=10^{-3}$)和 L-BFGS 算法(适合参数较少的曲线拟合)。
$$ \begin{align} \min_{A,B,E,\alpha,\beta} \sum_{\text{runs }\{i\}} \text{Huber}_\delta (\log \hat{L}(N_i, D_i) - \log L_i) \\ \text{ 其中 }\text{Huber}_\delta (x) = \begin{cases}\frac{1}{2} x^2 & \text{当 }\vert x \vert \leq \delta \\ \delta \cdot (\vert x \vert - \frac{1}{2}\delta), & \text{否则。}\end{cases} \end{align} $$Chinchilla 通过三种相互补充的方法得出最终结果,三者结论一致,这正是该结果颇具说服力的部分原因。
Chinchilla 论文中关于大多数大模型(彼时约 2022 年)训练不足的论断,有一个著名的实验作为支撑:在与 Gopher(Rae et al. 2021;2800 亿参数,3000 亿 token)相同的算力预算下,他们训练了 Chinchilla(700 亿参数,1.4 万亿 token)。Chinchilla 的参数量缩小到 Gopher 的四分之一,但训练 token 数约为其四倍,并且在各项任务上全面超越了 Gopher。
调和 Kaplan 与 Chinchilla#
Chinchilla 的缩放定律与 Kaplan 等人的分歧体现在以下几点:
- 不是「模型增长速度应快于数据增长」($N_\text{opt} \propto C^{0.73}$),而是模型规模每翻一倍,训练 token 数也应相应翻一倍($N_\text{opt} \propto C^{0.5}$)。
- 不是「训练一个大模型但不充分收敛」,而是训练一个更小的模型、使用更多数据。
两篇论文所依据的基本原理其实是一致的,分歧仅在于最优的参数量与 token 数之间的权衡点。为何差异如此显著?
差异一:Kaplan 等人的实验主要在较小模型上进行。 Kaplan 等人的实验对象多为较小的模型,而 Chinchilla 论文的实验规模则覆盖了比其大十倍以上的模型。在对数坐标下进行外推时,拟合上的微小偏差就会被显著放大(参见示例模拟)。
差异二:嵌入参数数量对小模型有影响。 在小参数量阶段,嵌入参数占总参数的比例不可忽略,因此是否将其计入会对结果产生影响。Pearce 和 Song(2024)对此做了详尽分析。这里我们用 $N_{\setminus E}, C_{\setminus E}$ 表示排除嵌入后的模型规模和算力,用 $N, C$ 表示总参数对应的值。
- Kaplan 等人:$N^*_{\setminus E} \propto C^{0.73}_{\setminus E}$(排除嵌入)
- Chinchilla:$N^* \propto C^{0.50}$(包含嵌入)
为了桥接两者,他们拟合了总参数 $N$ 与非嵌入参数 $N_{\setminus E}$ 之间的关系,其中 $\omega$ 为常数:
$$ N = N_{\setminus E} + \omega\, N_{\setminus E}^{1/3}. $$这一形式具有良好的性质:严格递增,且 $\lim_{N \to \infty} N = N_{\setminus E}$(因为 $\frac{N}{N_{\setminus E}} = 1 + \omega {N_{\setminus E}}^{- \frac{2}{3}}, \lim_{N_{\setminus E} \to \infty} \frac{N}{N_{\setminus E}} = 1$)。
将其代入 Chinchilla 定律方程,
$$ \begin{align} L(N_{\setminus E}, C_{\setminus E}) &= A(N_{\setminus E} + \omega\, N_{\setminus E}^{1/3})^{-\alpha} + B \Big(\frac{C_{\setminus E}}{6}\Big)^{-\beta} N_{\setminus E}^\beta + E \\ L'(N_{\setminus E}, C_{\setminus E}) &= - \alpha A (N_{\setminus E} + \omega N_{\setminus E}^{1/3})^{-\alpha -1}(1 + \frac{\omega}{3}N_{\setminus E}^{-2/3}) + \beta B \Big(\frac{C_{\setminus E}}{6}\Big)^{-\beta} N_{\setminus E}^{\beta -1} = 0 & \small{\text{;对 }N_{\setminus E}\text{ 的导数应为零。}} \\ \text{整理得 }& \alpha A (N^{*}_{\setminus E} + \omega {N^{*}_{\setminus E}}^{1/3})^{-\alpha -1}(1 + \frac{\omega}{3} {N^{*}_{\setminus E}}^{-2/3}) = \beta B \Big(\frac{C_{\setminus E}}{6}\Big)^{-\beta} {N^{*}_{\setminus E}}^{\beta -1} \\ & 6^{-\beta}\frac{\alpha A}{\beta B} ({N^{*}_{\setminus E}} + \omega {N^{*}_{\setminus E}}^{1/3})^{-\alpha -1}(1 + \frac{\omega}{3}{N^{*}_{\setminus E}}^{-2/3}) {N^{*}_{\setminus E}}^{1 - \beta} = C_{\setminus E}^{-\beta} \\ & 6 \Big(\frac{\beta B}{\alpha A}\Big)^{\frac{1}{\beta}} ({N^{*}_{\setminus E}} + \omega {N^{*}_{\setminus E}}^{1/3})^{\frac{1 + \alpha}{\beta}} ({N^{*}_{\setminus E}} + \frac{\omega}{3}{N^{*}_{\setminus E}}^{1/3})^{-\frac{1}{\beta}} {N^{*}_{\setminus E}} = C_{\setminus E} \\ \end{align} $$上式中 $C_{\setminus E}$ 与 $N_{\setminus E}$ 的关系不再是一个干净的幂律,只能在局部近似为 $N^*_{\setminus E} \overset{\propto}{\sim} C_{\setminus E}^g$。这里的 $g$ 是基于一阶导数($\overset{\propto}{\sim}$)的局部指数,而非全局幂律指数,因此 $g = \frac{\mathrm{d} \log C_{\setminus E}}{\mathrm{d} \log N_{\setminus E}}$。指数 $g$ 的近似方法详见 Pearce & Song (2024) 的附录 A.1。
如上图所示,随着 $C_{\setminus E}$ 不断增大,$g$ 会收敛到 Chinchilla 估计值。利用上述公式生成合成训练曲线,在 768M 到 1.5B 的模型规模范围内(即 Kaplan 等人的设定),他们估计该区域的 $g$ 接近 Kaplan 系数 0.73。
为什么是幂律?#
幂律关系在 AI 之外的许多领域也普遍存在,例如 Zipf 定律、无标度网络、城市标度律,以及众多其他复杂系统。反复出现的模式是:大的事件稀少,小的事件常见,规模与频率之间的关系在双对数坐标下往往呈一条直线。
为什么 LLM 的标度律也呈现幂律形式?
部分受到不同领域表现出不同幂律指数这一现象的启发(例如 Hestness 等人 2017),Sharma & Kaplan(2020) 提出了一个早期解释,假设语言建模可以看作是在低维数据流形上做回归。更多的模型参数能带来对数据流形更精细的划分,从而减小泛化误差。简单来说,如果一个有效规模为 $N$ 的模型把一个 $d$ 维流形划分成 $O(N)$ 个区域,那么典型的线性分辨率大致按 $\sim N^{-1/d}$ 变化。这与上面提到的标度律具有同样的幂律形式。该理论在数据无限、欠拟合的设定下最为自洽,但现实中估计数据流形的内禀维度非常困难。
后来的一个假设(Michaud 等人 2023、Brill 2024)则认为知识或技能是以离散的"量子化"块被习得的,而这些技能的出现频率服从幂律分布。模型先学到常见技能,再学到稀有技能,因此 loss 呈现出平滑的幂律衰减。
这里只列举了两种假设,还有更多研究从数据谱尾、核函数特征值、自然语言统计特性、训练动力学中的相变等角度解释幂律标度的成因。
数据受限区域的标度律#
经典的 scaling law 实际上假设数据完全唯一且无限多,不存在重复,也不进行多 epoch 训练。随着模型规模急剧扩大,高质量唯一 token 正在被耗尽。事实上,关于 AI Scaling 还能持续多久的争论,核心就在于我们是否撞上了"数据墙"。
还有一点值得强调:$D$ 对应的数据集应该是已经清洗过的。预训练数据流水线通常在有效的预训练流程中占据很大比重,常见步骤包括去重(精确去重和模糊去重)、质量过滤、模板文本剔除、安全过滤、PII/版权信息遮蔽、基准测试去污染,以及根据语言、质量、内容类型等对数据配比进行细致的重新加权。即便两个数据集的 token 总数 $D$ 相同,高质量数据集和充斥着网络垃圾的数据集,在计算效率上也会产生天差地别的结果。
Hernandez 等人(2022)的研究聚焦于一种受控场景:数据集大部分唯一,但有一小部分是重复数据。具体做法是,从一个大数据集出发,保留 90% 不重复的内容,把剩下 10% 替换为原始数据中一小片段的重复。他们训练了一个 Transformer 模型 100B tokens,观察到了双重下降(double-descent)现象——也就是说,测试损失会随着重复数据被强调的程度先变差再变好,而且重复比例越大,这种效应越明显。
训练中段损失持平甚至上升的趋势,可能源于模型对重复数据的记忆。这类形态的学习曲线会让 scaling law 的拟合变得不够准确。他们的结论还包括:重复数据会损害部分 OOD 评估和下游微调效果。不过,他们的数据配比构造更接近实验室条件,而真实场景中的数据重复通常更为复杂(例如不同数据的重复程度不同、存在语义层面的重复等)。
比起简单断言"数据重复有害训练",我们更关心的问题是:既然高质量唯一数据并非无限,训练中几乎不可避免要复用数据,那么该如何拟合 scaling law?
Muennighoff 等人(2023)研究了一个问题:当模型训练受数据量限制时,计算资源应如何最优分配。具体而言,他们通过约 400 组实验,实证考察了数据重复的影响,参数规模从 1000 万到 90 亿不等,数据量最高达 9000 亿 token,训练轮数最高达 1500 轮。每个 epoch 使用完全相同的数据集,仅在 epoch 之间进行打乱,并在留出的测试集上评估。
其核心建模调整是将总 token 数 $D$ 分解为两部分:(i)唯一 token 数 $U_D$ 和(ii)重复次数 $R_D$(即 epoch 数 - 1)。因此 $D = U_D(1 + R_D)$。在唯一数据预算 $D_\text{uniq}$ 下,$U_D = \min \{ D_\text{uniq}, D\}$,$R_D = (D / U_D) - 1$。他们利用 Chinchilla 扩展法则为拟合 $U_D$ 找到最优模型规模 $U_N$,并通过重复来定义超出部分的模型规模 $R_N = (N / U_N) - 1$。
随后,他们对 Chinchilla 的参数化拟合(方法 3)进行了更新,用经过折减的有效数据 $D’$ 和有效模型规模 $N’$ 替换原始量:
$$ \hat{L}(N, D) = \frac{A}{N'^\alpha} + \frac{B}{D'^\beta} + E \quad\text{ 其中 } D' = U_D + U_D\, r_D\left(1 - \exp\!\left(-\frac{R_D}{r_D}\right)\right). $$其直观解释是:token 的价值随重复次数呈指数衰减。在他们的模型中,每次重复都会使该 token 损失 $(1 - 1/r_D)$ 比例的剩余价值,其中 $r_D$ 是一个可学习的"半衰期"参数。当 $R_D = 0$ 或 $R_D \ll r_D$ 时,$D’ \approx D$。
模型规模超出部分也采用了对称的公式 $N’ = U_N + U_N r_N(1 - \exp(-R_N / r_N))$,其思想是"更大的模型在重复数据上过拟合得更快"以及"模型可能相对于其数据集过大"。这部分不太直观,我也没能找到令人满意的解释来说明为何模型规模需要以这种与重复数据对称的形式出现。Lovelace 等人(2026)的后续工作改变了这一假设。
他们的实证拟合发现,多余参数的价值衰减速度比重复数据更快,即 $r_N < r_D$,因此我们应该把更多资源投入到增加训练轮数上,而不是堆更多的模型参数。正如作者本人也指出的,这个建模有一个明显的弱点:它严重低估了失败模型(即训练中途损失反而上升的模型,比如训练了 44 轮的模型)的最终测试损失。
最近,Lovelace 等人(2026)用另一种思路重新审视了同一个问题。他们没有把过参数化建模成有效模型规模上的边际收益递减,而是直接对模型规模 $\times$ 数据重复之间的交互作用进行建模。他们在实验中训练了大约 300 个模型,参数规模从 1500 万到 10 亿,唯一 token 数从 5000 万到 60 亿不等。
当他们在固定模型规模下,绘制不同数据重复水平上的拟合残差时,观察结果十分直观:训练轮数越多,损害越大;而且有意思的是,更大的模型对重复更敏感。这暗示损失惩罚很可能同时是模型规模和数据规模的函数。
他们引入了一个显式的过拟合惩罚项,其核心是容量比 $N / U_D$(参数量相对于唯一 token 数的比值):
$$ \hat{L}(N, U_D, R_D) = E + \frac{A}{N^\alpha} + \frac{B}{\big(U_D (1 + R_D)\big)^\beta} + \color{red}{P \cdot R_D^\delta \cdot \left(\frac{N}{U_D}\right)^\kappa} $$其中:
- $R_D$ 是重复次数;
- 标量 $P$ 是一个可学习参数;
- 指数 $\kappa$(第二个可学习参数)让惩罚能够随容量比 $N / U_D$ 非线性地缩放;
- 独立的指数 $\delta$(第三个可学习参数)作用于重复次数,它将重复次数的非线性与 $\kappa$ 解耦。
新加的这项(图中红色部分)是一个直接的过拟合惩罚项,它会随着数据重复次数以及模型相对于可用唯一数据的过参数化程度而增长。
他们还做了一个关于权重衰减如何影响有限数据约束下训练的案例研究,发现强权重衰减能够减弱由数据重复导致的过拟合惩罚。
Muennighoff 等人和 Lovelace 等人的这两种建模方法都是基于经验曲线拟合构建的,因此数据受限下的 scaling law 为什么恰好具有这些形式、为什么需要每一个自由参数,目前仍不清楚。期待更多沿着这条线索展开的理论工作。
现实中拟合 scaling law 的棘手之处#
尽管 scaling law 的形式很干净,但在实践中,它的拟合过程对看似微不足道的程序性选择却异常敏感,比如如何统计参数量、如何对精度进行取整、如何对损失求和或求平均等等。
这是因为 scaling law 只在我们负担得起训练的(相对较小、相对便宜的)模型上进行拟合,然后外推去预测规模大好几个数量级的模型。在这种情况下,看起来像舍入误差的选择,可能会导致预测结果出现巨大差异。
同时,scaling law 的拟合假设唯一变化的因素只有规模,也就是说模型架构、优化器、学习率调度、batch ramp、数据配比、分词器以及其他设计选择都应当保持不变。还有一个隐含假设是,所有这些设置都应当经过仔细调优,因为像模型欠训练这样的情况可能会得出不同的结论。
Kaplan 等人和 Chinchilla 之间的结果分歧,就是展示 scaling law 拟合之棘手的一个例子。
第二个例子是一项后续分析,探讨了 Chinchilla 的方法 3为何与其他两种方法略有出入。Besiroglu 等人(2024)从 Hoffmann 等人(2022)的图 4 中提取了原始的 $(N, D, L)$ 数据点,并重新运行了方法 3 的参数拟合。他们发现了几个具体问题:- L-BFGS-B 求解器中的损失尺度过大,这是因为对样本的 Huber loss 取了平均值而非求和,导致优化提前终止。无论是原始拟合还是自助法(bootstrapping)中损失最小化的提前停止,都会产生不一致的估计以及不合理地窄的置信区间。
- 报告的 $\alpha$ 和 $\beta$ 被四舍五入到 2 位有效数字,这使得由此推导出的 $A, B$ 看起来偏差比实际更大。
玩具仿真#
下面是一个由 ChatGPT 创建的玩具仿真组件,用来演示三种特定的失效模式。
我们假设真实函数为:
$$ \hat{L}(N, D) = 482.01 \cdot N^{-0.3478} + 2085.43 D^{-0.3658} + 1.8172 $$因此 $N_\text{opt} \propto C^{0.5126}, D_\text{opt} \propto C^{0.4874}$。这是 Besiroglu 等人(2024)给出的估计。
该仿真绘制了损失预测 $\hat{L}$ 与数据集大小 $D$ 的关系图,并提供了一组滑块来展示以下情况:
- 损失精度:将损失从高精度四舍五入到低精度小数位会改变拟合的参数值。
- 损失噪声:仅以 milli-loss(0.001)单位的倍数对损失值施加扰动,就会得到不同的拟合结果。
- 拟合区域敏感性:只拟合小模型、只拟合中等模型、或拟合所有模型,所呈现出的标度律会各不相同。
引用#
请按以下方式引用本文:
Weng, Lilian. "Scaling Laws, Carefully". Lil'Log(2026 年 6 月). https://lilianweng.github.io/posts/2026-06-24-scaling-laws/
或使用 BibTeX 引用:
@article{weng2026scaling,
title = {Scaling Laws, Carefully},
author = {Weng, Lilian},
journal = {lilianweng.github.io},
year = {2026},
month = {June},
url = "https://lilianweng.github.io/posts/2026-06-24-scaling-laws/"
}
参考文献#
[1] S. Amari, N. Fujita, and S. Shinomoto. "Four Types of Learning Curves." Neural Computation. 4(4):605–618, 1992.
[2] Hestness 等. "Deep Learning Scaling is Predictable, Empirically." arXiv preprint arXiv:1712.00409, 2017.
[3] Rosenfeld 等. "A Constructive Prediction of the Generalization Error Across Scales." ICLR 2020.
[4] Kaplan 等. "Scaling Laws for Neural Language Models." arXiv preprint arXiv:2001.08361, 2020.
[5] Hoffmann 等. "Training Compute-Optimal Large Language Models." NeurIPS 2022.
[6] Pearce 和 Song. "Reconciling Kaplan and Chinchilla Scaling Laws." TMLR 2024.
[7] Bahri 等. "Explaining Neural Scaling Laws." arXiv preprint arXiv:2102.06701, 2021.
[8] Sharma 和 Kaplan. "A Neural Scaling Law from the Dimension of the Data Manifold." arXiv preprint arXiv:2004.10802, 2020.
[9] Hernandez 等. "Scaling Laws and Interpretability of Learning from Repeated Data." arXiv preprint arXiv:2205.10487, 2022.
[10] Muennighoff 等. "Scaling Data-Constrained Language Models." NeurIPS 2023.
[11] Lovelace 等. "Prescriptive Scaling Laws for Data Constrained Training." arXiv preprint arXiv:2605.01640, 2026.
[12] Besiroglu 等. "Chinchilla Scaling: A Replication Attempt." arXiv preprint arXiv:2404.10102, 2024.
[13] Michaud 等. "The Quantization Model of Neural Scaling." NeurIPS 2023.
[14] Brill. "Neural Scaling Laws Rooted in the Data Distribution." arXiv preprint arXiv:2412.07942, 2024.
[15] Rae 等. "Scaling Language Models: Methods, Analysis & Insights from Training Gopher." arXiv preprint arXiv:2112.11446, 2021.