尺度定律(Scaling Law),指的是模型能力与模型尺度之间的渐近关系。具体来说,模型能力我们可以简单理解为模型的损失函数,模型尺度可以指模型参数量、训练数据量、训练步数等,所谓尺度定律,就是研究损失函数跟参数量、数据量、训练步数等变量的大致关系。《Scaling Laws for Neural Language Models》《Training Compute-Optimal Large Language Models》等工作的实验结果表明,神经网络的尺度定律多数呈现“幂律(Power law)”的形式。

为什么会是幂律呢?能否从理论上解释呢?论文《The Quantization Model of Neural Scaling》基于“量子化”假设给出了一个颇为有趣的推导。本文一同来欣赏一下。

推导假设 #

首先,我们假设对于一个特定的任务,存在一个“完美模型”,我们所训练的模型,都是这个“完美模型”的一个逼近。进一步地,假设“完美模型”是由“量子(Quanta)”组成的,每个量子代表一种能力(注意,这里的量子主要是指虚拟的能力单位,并非我们能叫出名字的具体能力)。

为了完成任务,往往需要多种能力,所以不失一般性,我们假设“完美模型”包含无穷多个能力量子,不同的量子负责解决不同难度的样本。通常来说,简单样本会占多数,困难样本是少数,所以这些能力量子可以按照出现频率从高到低进行排序,分别标记为$1,2,\cdots,k,\dots$,对应的出现频率则为$p_1,p_2,\cdots,p_k,\cdots$。

最后,我们假设这些能力量子的频率服从“Zipf定律(Zipf's law)”,即
\begin{equation}p_k = \frac{k^{-\gamma - 1}}{Z_{\gamma}}\end{equation}
其中$\gamma > 0$,$Z_{\gamma}$是归一化因子$\sum\limits_{k=1}^{\infty}k^{-\gamma - 1}$。

Zipf定律 #

可能读者想问,为什么是Zipf定律呢?Zipf定律是Zipf在1949年发表的经验定律,他的原始发现是一个单词出现的频率大致与它在频率表里的排名成反比,后来人们把它一般化为跟“排名的幂”成反比,并且发现在很多地方都能观察到Zipf定律。

Zipf本人以及一些后来者都尝试在一些更贴近本质的假设之下对Zipf定律进行推导,相关工作可以在维基百科找到,这里就不展开了。对于笔者来说,选择Zipf定律的最重要原因其实是——也没其他可选了。

别忘了,$p_k$已经从高到低排序过了,所以$p_k$是一个单调递减函数,我们能想到的非负的、单调递减的函数有啥呢?无外乎就指数函数和幂函数了吧,指数函数衰减得很快,所以没有长尾现象,而幂函数衰减慢一些,相对来说更加长尾。所以选哪个,取决于我们对尾部重要性的先验认知。对于前面的能力量子假设,我们认为每一种能力都很关键,所以只能选择幂函数了,结果也就是Zipf定律。

基本结果 #

回到正题。前面假设理想模型有无穷多个能力量子,而对于一个容量有限的现实模型,它只能学习到$n$个量子,为了能够覆盖更多的样本,模型应该去学习前$n$个量子。假设每个量子都能够将它对应的样本的损失从$b$降低到$a$,那么可以预估模型的平均损失为
\begin{equation}L = a \sum_{k=1}^n p_k + b \sum_{k=n+1}^{\infty} p_k\end{equation}
前$n$个量子已经被学习到了,所以这部分样本的损失都为$a$,后面的量子没有被学习到,所以损失为$b$。这个假设看起来有点强,将$a,b$设为$k$的函数可能更合理些,但结果已经有代表性了(参考原论文附录)。对于上式,我们可以完成一个渐近估计:
\begin{equation}\begin{aligned}
L =&\, a \sum_{k=1}^{\infty} p_k + (b - a) \sum_{k=n+1}^{\infty} p_k \\
=&\, a + (b - a) \sum_{k=n+1}^{\infty} \frac{k^{-\gamma-1}}{Z_{\gamma}} \\
\sim&\, a + (b - a) \int_n^{\infty} \frac{k^{-\gamma-1}}{Z_{\gamma}} dk \\
=&\, a + \frac{b - a}{\gamma Z_{\gamma}} n^{-\gamma} \\
\end{aligned}\end{equation}
它表明模型的能力(损失函数)跟能力量子的数目$n$的关系呈现幂律$n^{-\gamma}$的形式。显然,这里的$a$就代表损失函数的最小值,如果$a=0$,那么就有$L\sim \mathcal{O}(n^{-\gamma})$。下面我们都假设$a=0$。

尺度定律 #

基本结果中的$n$,是模型学到的能力量子的数目,到目前为止还只是一个虚拟的概念,接下来我们将它跟模型常见的变量联系起来。

参数量:假设模型的参数量为$N$,然后假设平均每$C$个参数才能学到一个能力量子(假设$C$是常数),那么很显然有$n\propto N$,以及
\begin{equation}L\sim \mathcal{O}(N^{-\gamma})\end{equation}

数据量:假设训练集的总样本数为$D$,由于我们假设不同的量子负责解决不同难度的样本,所以我们可以很自然地认为由量子$1$解决的样本数为$Dp_1$、由量子$2$解决的样本数为$Dp_2$、由量子$3$解决的样本数为$Dp_3$、...,然后我们假设学习一个量子至少需要$\tau$个样本,那么$Dp_k < \tau$的量子都无法学到。于是由$\tau=D p_n$我们可以解得$n\propto D^{1/(\gamma + 1)}$,代入得到
\begin{equation}L\sim \mathcal{O}(D^{-\gamma/(\gamma + 1)})\end{equation}

训练量:假设模型的参数量和训练集的样本数都无上限,那么模型学到的量子数$n$就取决于训练步数$S$了。假设批大小为$B$,那么平均来说学习量子$1$的样本数为$Bp_1$、学习量子$2$的样本数为$Bp_2$、学习量子$3$的样本数为$Bp_3$、...,同样假设学习一个量子至少需要学习$\tau$个样本,那么经过$S$步训练后,量子$n$共学习了$SBp_n$个样本,于是由$\tau=SB p_n$可以解得$n\propto S^{1/(\gamma + 1)}$,代入得到
\begin{equation}L\sim \mathcal{O}(S^{-\gamma/(\gamma + 1)})\end{equation}

可以看到,虽然结果都是幂律,但是因为$\gamma > \gamma/(\gamma + 1) \in (0, 1)$,所以很显然参数量对模型能力的影响更加大一些。

涌现现象 #

可能有读者想问,能力量子化假设是否可以用来解释大模型的涌现(Emergency)现象呢?

一定程度上可以。前面我们假设完美模型应该具有无穷多个能力量子,如果将这个无穷改为有限,那么通过增加参数量,模型总会有机会覆盖所有的能力量子,达到理论最优的完美模型,这就是涌现。又或者说,完美模型还是应该具有无穷多个能力量子,但人类对智能的“分辨力”只有有限个量子(人类本身未必是完美的),所以当大模型学到一定数目的能量量子后,在人类的视角中就是完美的“涌现”了。

文章小结 #

本文介绍了从量子化假设来推导模型的尺度定律(Scaling Law)的过程,具体来说就是模型的损失函数与参数量、数据量、训练量的渐近关系,并简单分析了它与涌现现象的可能联系。

转载到请包括本文地址:https://kexue.fm/archives/9607

更详细的转载事宜请参考:《科学空间FAQ》

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

如果您需要引用本文,请参考:

苏剑林. (May. 18, 2023). 《基于量子化假设推导模型的尺度定律(Scaling Law) 》[Blog post]. Retrieved from https://kexue.fm/archives/9607

@online{kexuefm-9607,
        title={基于量子化假设推导模型的尺度定律(Scaling Law)},
        author={苏剑林},
        year={2023},
        month={May},
        url={\url{https://kexue.fm/archives/9607}},
}