首页 > 教程攻略 > ai资讯 >LLM训练要不要过采样/训多个epoch?

LLM训练要不要过采样/训多个epoch?

来源:互联网 时间:2026-08-02 13:31:08

在大型语言模型的训练中,数据的重要性,尤其是在预训练阶段,已经被大量研究反复验证。但问题在于,高质量的数据,特别是针对特定垂直领域的高质量数据,往往像珍稀矿藏一样,可遇而不可求。在这样的“数据荒”(Token-Crisis)下,过采样或者训练多个epoch——也就是我们通常所说的“repeat”——就成了最直接的应对策略。不过,这种重复利用数据的做法,究竟会给模型带来什么样的影响?这绝对是一个值得深入探讨的问题。

实验设置

这篇论文基于T5模型和C4数据集进行了一系列预训练实验,目的是对比不同重复次数下模型的表现。为了方便讨论,我们不妨将多轮训练和过采样统称为“repeat”。

LLM极易被repeat影响:过拟合与性能下降

repeat直接导致得分下降

为了验证repeat的影响,研究者在保证训练过的token(trained Tokens)总量相同的前提下,对比了不同重复程度下模型在掩码语言模型任务上的准确率。具体来说,假设从C4中随机采样的token数量为T,重复次数为R,那么三组实验配置分别是 (T,R) = {(235,1), (229,26), (227,28)},这样一来,每组方案训练的总token数都维持在235B。

实验结果很直观:随着重复次数的增加,MLM准确率呈下降趋势。从数据分布的角度来看,这其实不难理解。如果将数据视为从真实世界中采集的样本点,那么样本量越大、分布越广、越均匀,由此构成的“分布曲面”就越平滑,也越能还原真实的分布。而repeat本身并不能带来这种多样性增益,它的效果自然比不上同等体量的原始数据。

那么,预训练阶段的这种负面影响会不会延续到后续的微调甚至强化学习阶段呢?研究者在SQuAD数据集上对经过重复预训练的模型进行了微调验证。结果发现,预训练阶段经历过多次repeat的模型,在SFT后的表现依然显著低于那些没有做过repeat的模型。不过有一点需要厘清:这个实验目前还无法区分,这种负面影响究竟单纯是repeat带来的,还是由深层的数据稀缺本身造成的。

极低程度的repeat也存在过拟合风险

Jeremy Howard在《Can LLMs learn from a single example?》一文中提供了一个非常典型的案例。在SFT过程中,模型的训练损失曲线呈现阶梯状,且每次的骤降都发生在每个epoch的末尾。Howard认为,最直接的元凶就是repeat导致的过拟合。这个结论其实很令人吃惊——与论文中动辄64次甚至256次的重复不同,这意味着模型仅仅在经历1次多一点的重复后,就已经开始出现过拟合迹象了。

为了验证这一猜想,研究者借助Cyclical Learning Rates(循环学习率)衰减策略,让学习率在单个epoch内完成升温与衰减。结果符合预期:在第二个epoch的学习率回升阶段,模型遇到了已经在第一个epoch中拟合过的样本,这直接导致了训练损失的再次陡降,但与此同时,验证损失开始急剧上升。这表明模型倾向于记忆而非泛化,开始陷入过自信或过拟合的陷阱。

值得注意的是,训练损失本身是存在滞后性的——它是先计算损失,再计算梯度并反向传播。在数据没有被打乱顺序(shuffle)的前提下,当前批次的损失,在某种意义上反映的是上一个epoch对该批次样本的拟合效果。因此,训练损失的骤降实际上暗示:即便在第一个epoch,模型在尝试拟合规则的“同时”,已经开始记忆具体的样本了。

从“重要性”角度验证repeat的影响

我们也可以换一个视角,从“重要性”的角度来分析repeat前后模型的变化。具体来说,可以定义In,m为输入token xn对输出token ym的重要性,其量化为删除xn前后,模型生成ym的置信度偏移。偏移越大,说明生成结果时越依赖于该输入。

基于相同的SFT数据对模型进行微调,并分别重复1次和5次后分析发现:重复5次后的模型,指令token和输入token对输出的重要性,平均下降了约10%和6%。换言之,在进行repeat后,模型在生成结果时,会更加不依赖于指令和输入,而更多地依赖于已经生成的历史结果(y1:t-1)。这合乎情理,因为语言模型建模学习的是 P(yt | x, y0, y1...yt-1),当输出分布过于极端时,模型就容易“坍缩”,更倾向于自顾自地“说下去”,而这个问题在repeat之后会变得更加严重。

语料不同,模型受repeat的影响也不同

数量的影响

通过对比(T,R) = (227,28)和(229,28)两组实验,可以看出在不同数据量级下,模型受repeat影响的程度。答案很直接:数据量越多,分布越广越均匀,模型在训练过程中就越不容易过拟合。如果展示给模型的数据只是真实分布中一个相当小且片面的子集,模型很容易通过这部分“狭隘”的数据学到一些不符合期望的特征。

这就好比训练一个识别马的模型。如果训练数据很少,且全部是草原上的马,那模型学到的可能根本不是“马”的特征,而是如何识别“草”。只有当数据中包含了水上马、笼中马,甚至草原上的牛等各种对照时,模型才更有可能从足够广泛、均匀的数据中还原出真正的、符合预期的特征。

因此,缓解过拟合的一般思路是:要么强化数据的广度、均匀度和平滑度,拓宽模型视野;要么通过降低学习率、早停、混入通用数据等手段,来降低模型的学习效率。这其实与梯度下降(BP)中的道理相通——我们往往倾向于选择更大的Batch Size,因为更大的Batch Size意味着分布更广、更平滑、更贴近真实分布,能帮助模型稳步地向全局最优收敛。显然,repeat无法在分布的广度上带来提升,反而可能加剧模型陷入局部最优、对冗余或不相关特征过度拟合的风险。但这本身也是个悖论,如果语料足够丰富,我们压根就不需要repeat了。

质量的影响

数据质量是另一个关键维度。直观上,高质量数据似乎对缓解repeat带来的过拟合有积极作用。研究者分别在Wiki和C4这两种数据源上进行了预训练实验——Wiki通常被视为更高质量的数据源。由于数据分布不同,MLM准确率不再具备横向可比性,因此转而验证下游任务的效果。

结果有些出人意料:Wiki的高质量并未在下游任务中带来显著的额外收益。这难道意味着数据质量对防治repeat引发的过拟合没有帮助吗?其实也不尽然。数据质量对预训练和SFT的影响是毋庸置疑的。低质量数据可能存在表达不规范、真实性错误、内容重复等问题,不仅会影响语言模型的建模效果,也会恶化模型的认知能力。此次Wiki和C4没有表现出显著差异,可能的原因在于:C4虽然质量略逊于Wiki,但依然属于可用的预训练数据,并没有差到我们描述的那个“致命”程度。在这种情况下,数据质量同样无法在分布的广度、均匀度上提供额外提升,两者都只是真实分布中的一个子集,都存在过拟合的风险。

难度与OOD程度的影响

由于该论文主要聚焦于预训练阶段的repeat,并未对任务难度以及SFT与预训练分布的OOD(Out-Of-Distribution)程度做深入探讨,这里我们结合一些实践经验来补充一下。

之前做过一个有趣的实验:让模型基于一个分布极度不均匀的数据进行SFT。比如构建一个基本运算的SFT数据集,其中50%的样本输出都是“7777”。尽管数据分布如此极端,模型在SFT之后依然表现出了良好的泛化能力。

但如果我们换个玩法,自定义一种全新的运算符号,比如 “a ◯ b := (a-242)*2 - b + 3”,构建同样规模的数据,同样确保50%的样本输出是“7777”,并将指令和运算公式都在prompt中明确说明。这次,模型在SFT之后出现了明显的“坍缩”现象,不仅输出结果与定义的运算规则不符,而且确实会以大约50%的频率输出“7777”。

这个结果相当符合预期。LLM在经过持续的预训练后,在绝大多数通用领域具备非常好的泛化能力,这种能力也体现在对少量、极端分布数据的抗过拟合上。然而,一旦SFT任务过于复杂、偏离原有分布,比如包含了过多的OOD实体或人为定义的规则,LLM作为一种参数规模巨大的模型,反而更容易受到极端数据分布的影响。因此,在面对难度较高、OOD程度较大的SFT任务时,我们需要更加警惕包括repeat在内的任何可能影响数据分布的策略。

如何防治

dropout

进入LLM时代以来, dropout 这种经典的正则化方法似乎突然“隐身”了。在满足甚至超越Chinchilla法则的预训练场景下,dropout可能确实不会产生太大影响,甚至可能拖慢训练速度。但是,当预训练或SFT的语料不足时,dropout能否起到应有的作用呢?

论文作者对此进行了实验,对比了三种策略:不用dropout、使用dropout、以及后期再使用dropout。结果发现,使用dropout的策略在多次repeat后依然表现出了更好的MLM准确率,说明在LLM时代,dropout依然具备较好的正则效果。不过,随着模型规模(如从Large到XL)的提升,模型受repeat的影响也愈发严重,在XL量级下,dropout甚至无法完全矫正过拟合问题。但即便如此,没有使用dropout的模型随着参数量的增加,与使用了dropout的模型之间的差距也越来越大,这无疑从侧面印证了dropout的积极作用,尤其是对于更大规模的模型而言。

其他方法有用吗

除了dropout,研究者也对DropPath、LSR(标签平滑正则化)、Weight Decay等方法进行了实验。结论是:在dropout的基础上叠加这些手段,并没有什么额外的增益,其中Weight Decay甚至会导致训练过程不稳定。这一点其实比较出人意料,毕竟Weight Decay在BERT时代是SFT中非常常用且有效的“插件”。

此外,在SFT中混合一些丰富、通用的通用域数据,也是一种非常有效的手段。

总结:到底要不要做repeat

说了这么多,我们已经从多个角度验证了repeat对模型的负面影响:即便是少量的repeat,模型也存在过拟合的风险,并且可能会逐渐忽视指令和输入,变成“自说自话”。

那么,repeat是不是就完全一无是处了呢?也未必尽然。从权重更新的角度来看,如果SFT的任务相对简单,能够借助或激活预训练阶段赋予的能力来完成,那么只需要对模型权重进行轻微的调整即可。相反,如果目标任务的内在逻辑或知识在预训练阶段并未体现,则需要更多、更显著的权重更新来重塑模型,这也意味着更高的过拟合风险。

结合之前的实验来看,repeat的影响并非绝对。如果SFT任务的OOD程度严重,可能需要更多的权重更新,也就需要更多的计算资源——比如通过一定的repeat来确保足够的权重更新量。而如果SFT任务与预训练分布相近,那么repeat反而会加剧过拟合的风险。

从实际经验来看,在有监督数据不足的情况下,对复杂任务进行1-3次的repeat,有时反而能起到正向的增益效果。因此,repeat可以做,关键是要根据任务的难度和OOD程度来决定。少量、适度的repeat依然可能带来正面收益。但在进行repeat时,也一定要采取一些对抗过拟合的策略,例如我们反复提到的dropout,以及在训练时混入足够的通用域数据来混合训练,确保权重更新的方向是通用化的、全局化的,以此来降低模型过拟合的风险。