论文阅读 | Scaling Laws for Transfer
共 6493字,需浏览 13分钟
·
2024-10-16 07:00
论文阅读 | Scaling Laws for Transfer
作者:张义策
文章地址:https://zhuanlan.zhihu.com/p/710594520
An Empirical Study of Scaling Laws for Transfer
论文地址:https://arxiv.org/abs/2408.16947
这是axriv上的一篇文章,作者来自Epoch AI。
预训练到下游任务的知识迁移
为了在下游任务上取得高性能,一个标准做法是先在一个规模大、多样化的语料上预训练一个基座模型,然后在特定的下游任务上微调。这里的微调也可以使用In-context Learning方法代替。这些方法的有效性取决于从预训练到下游任务的知识迁移程度。迁移程度高,那么微调的成本可以低些;反之,我们就需要多构建一些高质量的微调数据。
本文的目的是研究上述知识迁移过程的Scaling Laws。本文首先使用一个公式来建模预训练和微调对下游任务的影响,然后在多个下游任务上进行实验对这个公式中的参数进行估计,并展开了一些系列的分析。
Scaling Laws
这篇文章使用下面的公式来建模预训练和微调对下游任务的影响,
其中 p 表示预训练步长,f 表示微调阶段的样本数据量,L(p,f) 表示在下游任务上的损失(越小说明在下游任务上性能越高), G 表示迁移差距(transfer gap,即预训练语料和下游任务之间的差距),E 表示无法降低的损失(和任务相关,是损失的下界), α>0 和 β>0 是预训练和微调的衰减系数。
上面的公式可能比较抽象。让我们试着理解一下。
当 f=0 即不进行微调, 。下游任务的损失和 p 呈负幂次的关系,如下图所示。随着 p 趋近无穷, 。这意味着当预训练做到极致,下游任务上的损失等于迁移差距和任务下界的损失之和。
函数图像来自https://www.geogebra.org/graphing?lang=zh_CN。
当 即预训练固定步数,记 ,那么有 。下游任务的损失和 f 也呈负幂次的关系。随着 f 趋近无穷, 。这意味着当微调数量足够多,下游任务上的损失逼近下界。
上面的Scaling Law公式有5个参数 ,这都需要根据实验来估计得到。
实验设置
模型选择了Pythia-2.8b结构,预训练数据集选择Pile,下游的微调数据集选择了5个,如下表所示。
预训练阶段的batch_size设置为2,097,152个tokens,最大预训练步长为143,000,一共保存了15个checkpoints。接下来对这些checkpoints,在下游数据集上进行微调,分别在10种微调样本数量的设置下,记录模型的损失。
接下来,对每个下游数据集,使用实验得到的 数据来估计Scaling Laws中的参数 。
实验结果
在5个下游数据集上参数估计的结果如下表所示。
我们可以得到如下的分析结果:
-
预训练的衰减系数 在不同任务上差别不大。相比之下,微调的衰减系数 的差异就大很多了。 -
差别不大,那预训练对不同任务的差异主要取决于迁移差距 ,也就是预训练数据和微调数据的分布差异。 -
令作者感到惊讶的是,house cat genome(一个基因数据集)上的迁移差距很小,只有0.548。作者认为这是因为这个数据集上的无法降低损失 E 比较大,达到了2.677,表明这个数据集具有比较高的内在熵、相比来说不好学习。 -
尽管对每个任务只使用了150个数据点,但是每个参数的置信区间还是比较小,说明整体估计方法还是robust的。(这部分结果在论文的表3中)。 此外,作者还估计了在更大尺寸模型上的进行实验的计算代价。对于Llama 3 70B,需要4.77 10^16的FLOP。
进一步的讨论:预训练和微调的trade-off
预训练和微调对下游任务损失的影响 考虑这样一个问题:当我们用于预训练和微调的预算固定,我们应该怎样分配这些预算来达到下游任务上的损失最小?使用Scaling Law for Transfer,我们就可以决定是多花钱来收集更多微调数据,还是用来做更大规模的预训练。
具体来说,记预算为 B , 为预训练一步的成本, 为收集一条微调数据的成本。这样的话,上面的成本问题就可以形式化为下面的优化问题:
基于这样的优化目标,我们可以大致得到下面的结论:
-
当迁移差距较小的时候,应该多做预训练;如果迁移差距较大,应该多收集微调数据。 -
如果 比较大,也就是收集微调数据的成本比较高,那应该多花预算在预训练上。(感觉在说废话)