不同数据集有不同的Scaling law?而你可用一个压缩算法来预测它
不同数据集有不同的Scaling law?而你可用一个压缩算法来预测它
神经语言模型的Scaling law一直是AI研究领域的热点话题。近期,AI数据公司Reworkd的研究者Rohan Pandey通过一项创新性研究,揭示了数据复杂度对Scaling law的重要影响。他发现,通过一种简单的压缩算法gzip,可以预测数据复杂性对模型扩展性质的影响,这一发现为优化模型训练策略提供了新的思路。
一般而言,训练神经网络耗费的计算量越大,其性能就越好。在扩大计算规模时,必须要做个决定:是增多模型参数量还是提升数据集大小——必须在固定的计算预算下权衡此两项因素。
Scaling law告诉我们:只要能适当地分配参数和数据,就能在固定计算预算下实现性能最大化。之前已有不少研究探索过神经语言模型的Scaling law,而这些研究通常得出的结论是参数和训练token数应当一比一地扩展。
但是,之前的语言模型Scaling law研究都是基于在散乱的网络文本上训练的Transformer得到的。这是一种非常特定的数据分布,因此我们自然会问:基于这样的网络文本数据集得到的Scaling law是否可以泛化到其它分布?
此外,人们普遍认为,训练数据混合的秘诀在于能让前沿探索的产业界实验室能持续产出当前最佳的LLM。考虑到提升数据质量能显著提升语言模型的性能,而强化学习的Scaling law也会随博弈难度而缩放,也许我们可以假设:当前的语言模型Scaling law(即Chinchilla)只是针对网络文本数据的具体案例,其背后还有一个基于训练数据属性的更广义的Scaling law。
那么,神经Scaling law对训练用的token序列数据集的哪些性质敏感呢?换句话说,如果我们想要准确预测如何以最佳方式为训练过程分配计算量,我们该观测数据的哪些属性?另外,Scaling law的数据依赖性质仅仅是个理论问题,还是说对真实世界数据集也很重要?
为了探究这些问题,AI数据公司Reworkd的研究者Rohan Pandey做了一番调查,得到了这些问题的答案;另外他还提出了一种压缩算法gzip,可预测数据复杂性对扩展性质的影响。
论文标题:gzip Predicts Data-dependent Scaling Laws
论文链接:https://arxiv.org/pdf/2405.16684
他的研究方法是:在可以直观控制复杂度的文本数据设置下,以信息论方法理解Scaling law的数据依赖性的原因。他最终找到的设置名为概率式上下文无关语法(PCFG,最早由乔姆斯基于1956年提出)。该设置相对自然(可以建模自然语言、代码等),句法复杂度可控,遵循一些已被很好理解的信息论原理。
实验中,通过调整PCFG的句法性质,他生成了6个具有不同复杂度的数据集。对于每个数据集,他又训练了6个不同大小的语言模型(参数量从4.4M到1.4B),并记录了这些语言模型在6种不同训练步数(100K到100M token)下的结果。然后,他为每个数据集都拟合了一个Scaling law,发现Scaling law的参数会随句法复杂度而有意义地变化。遵循之前有关形式语法的熵的研究,对于复杂度度量,他使用的是数据集中每个token序列的可压缩率(compressibility)中值,这能通过gzip轻松计算出来。
结果发现,随着训练数据的可压缩率降低(更加复杂),Scaling law的计算最优边界也会逐渐从参数量偏向数据大小。然后,他测量了真实世界的代码和自然语言数据集的可压缩率,结果发现前者的可压缩率更大,因此可预测其服从不同的Scaling law。
通过PCFG的句法性质调节数据复杂度
概率式上下文无关语法(PCFG)是计算语言学的一种基础工具,可用于建模自然语言的句法。PCFG是对标准的上下文无关语法(CFG)的扩展,即在生成规则中关联了概率,从而能以一种可量化的方式表征语言的模糊性和可变性。这些语法会生成树,其中每个节点都表示一个句法类别,每条边则表示用于生成句子的生成规则。在根据PCFG生成句子时,会以概率方式采样应用生成规则的序列,直到该树的所有叶节点都是端点(实际的词汇token)。
我们可以控制PCFG的句法性质,以自然方式调节文本数据集的复杂度。具体来说,PCFG创建函数可接收的参数包括:端点的数量、非端点的数据、生成规则右侧的最大长度、任何非端点允许的生成规则的最大数量(如果这个值为1,则给定的非端点将始终得到同样的右侧)。直观而言,以上每个值的增长都会导致句法复杂度增大。
为了基于以上参数创建PCFG,对于每个端点,都随机选取其生成数量(RHS选项)、这些生成的每个长度,通过从端点和非端点随机采样来实例化生成规则,并为其分配一个概率(根据非端点的总RHS选项而进行了归一化)。然后,收集所有为全部非端点生成的生成规则,并使用基于NLTK构建的PCFG软件包实例化一个语法。
再使用该语法(在给定约束下随机创建的)来概率式地采样句子,以构建token序列数据集。为了后面更容易比较在不同语法(生成不同平均长度的句子)上的训练情况,他决定将句子采样到同等token数量的文档中。持续基于语法采样句子,直到填满上下文长度,如有溢出,则直接截断句子。
句子由仅为整数的端点构成,因此可以被视为语言模型的token ID;再使用未被使用的整数0(可有效对应于自然语言中的句号)将句子连接起来。澄清一下,这里不是生成「看起来」像自然语言的字符串再进行token化——PCFG是直接生成token ID本身的序列。现在,可以根据6组初始语法约束生成6个有不同复杂度的token序列数据集了。
用gzip可压缩率度量句法复杂度
为了估计生成数据集以及真实数据集的复杂度,Rohan Pandey选择使用一种压缩算法gzip。
gzip的一个优点是已有很好的理论研究基础,它们表明:可压缩率(compressibility)与熵成反比,而熵与句法复杂度成正比。具体来说,针对数据集中1000个token构成的每个token序列,使用gzip并计算压缩后数据与原始数据的大小(字节数)之比。
然后,计算可压缩率的中值和标准差,确认有更高句法复杂度的语法会得到更难压缩的数据集。
表1列出了每个语法的句法参数和测得的压缩率。
可以观察到,随着非端点(语法类别)、端点(token)、右侧选项和右侧长度的增长,gzip压缩率也会增长,即变得更难压缩。
图1绘出了这些数据集以及自然语言和代码数据的情况。
可以看到,在复杂度方面,某些PCFG数据集与代码数据相近(易于压缩的部分),而另一些则与自然语言相近。
Scaling law对数据复杂度敏感吗?
为了确定数据集的Scaling law,该研究者在不同大小的数据子集(100K、1M、5M、20M、50M、100M token)上训练了几个不同大小(参数量为4.2M、8.8M、20.3M、59.0M、275.3M、1.4B)的模型,表6给出了其架构详情;然后他在所得损失结果上进行幂律拟合。大多数实验都是在4台有80GB VRAM的英伟达A100上完成的,使用了PyTorch FSDP。
如图2所示,如果一个数据集更容易压缩(可压缩率越低),模型的收敛速度就越快。这符合我们的直观认识。
尽管这表明我们需要更多计算量去建模更复杂的数据集,但我们还是需要更多证据才能确定计算最优边界是否会直接根据数据复杂度而变化。为了确立Scaling law对数据复杂度的非平凡的敏感性,需要计算每个数据集的Scaling law并调查其拟合参数。
根据gzip可压缩率计算数据敏感的Scaling law
Hoffmann et al.在2022年提出的Scaling law函数形式是将训练损失作为模型和数据大小的函数:
其中N是模型的参数量,D是训练数据集的token数量。他们宣称E是「自然文本的熵」且Scaling law「与数据集无关」。但是,当Rohan Pandey在PCFG数据集上拟合训练结果与该函数时,却发现每个数据集的Scaling law大不相同,见表2。
该Scaling law可为参数量得到一个计算最优边界(由Kaplan et al. [2020]和Hoffmann et al. [2022])推导得出,可简化为:
其中C是计算预算,单位FLOPs。
图3绘出了Chinchilla的计算最优边界以及每个PCFG数据集拟合得到的Scaling law。
可以看到,随着数据越来越难压缩,拟合得到的Scaling law的边界逐渐变得偏向于数据,在0.23 < gzip可压缩率 < 0.45区间中某个点时越过Chinchilla的一比一边界。
为了根据数据集的可压缩率预测Scaling law参数,可在每个数据集的拟合Scaling law参数上进行简单的线性回归拟合。之前我们提到,针对数据集D,计算可压缩率H的方法是:先计算每个元素d压缩后比特量与原始比特量的比值,然后再计算所有元素的平均值。
一旦从H拟合出预测每个参数(E, A, B, α, β)的线,就可以将每个参数重新定义成可压缩率的一个函数:
其中mx和nx是拟合后线性回归的参数。
表3给出了这些拟合后的值(以及回归的p值),图4则是这些线性回归的可视化结果。
它们几乎都是单调递减的,只是速率不同,而在H约0.27的位置,α和β相交。需要指出,E(原本设定为常数的「自然语言的熵」)是唯一一个会随H增大的参数(但不明显)。
现在就可以将(1)式重新参数化为可压缩率H的函数:
但是,由于这里的实验规模相当小,并且主要集中于PCFG数据集,因此Pandey又对该函数进行了扩展——调整Chinchilla后得到了数据依赖型的Scaling law:
其中ε是对训练数据的gzip压缩率的调整权重,加'的参数是Chinchilla常量。
将句法参数作为可压缩率的一个混杂变量而消除掉
上面的实验并没有解决这一可能性:这个可压缩率度量混杂了某个底层的句法属性(如词汇库大小)。为了解决这一问题,图5给出了另外的结果。
可以看到,当维持词汇库大小稳定不变并改变其它句法性质(表4)时,gzip可压缩率依然可以预测Scaling law的参数变化情况(相关性甚至强于增加词汇量的设置)。
图6则是实证中找到的反例,这表明当句法性质变化范围很大(表5)但这些数据集的最终gzip可压缩率一样时,Scaling law参数并不会有显著变化。
尽管在这个同等词汇案例中并未观察到图4中的相交行为,但α的斜率依然比β陡(A也比B陡),这说明随着gzip可压缩率增大,有同样的偏向数据的现象。
因此,可以说这些结果表明:Scaling law依赖于训练数据,而gzip可压缩率可以很好地预测数据复杂度对扩展性质的影响。