跳到主要内容

微调数据饱和:为何增加训练样本反而让模型变差

· 阅读需 10 分钟
Tian Pan
Software Engineer

几乎每个经历过初期演示阶段的微调项目,都会重蹈同一个覆辙:团队遭遇质量平台期,决定需要更多数据,增加了 50% 的样本,重新训练,却发现模型要么一如既往地平庸,要么明显变差了。增加数据的直觉对大多数软件问题是对的——更多信号通常有帮助。但微调存在一个预训练所没有的饱和区间,大多数从业者并不能识别自己何时进入了这个区间。

2024 年一项在 Qasper 数据集上测试 LLM 微调的研究发现,将训练集从 500 条扩展到 1,000 条后,Mixtral 的准确率得分从 4.04 跌至 3.28,完整性得分从 3.75 跌至 2.58。这不是超参数问题,而是数据饱和:模型开始记忆分布噪声,而非学习可泛化的模式。团队在引擎已经淹没之后,继续往里加燃油。

微调为何与预训练的饱和方式不同

预训练与微调遵循不同的缩放定律。预训练期间,随着计算量、数据和参数的增加,损失会稳定下降。这种关系是平滑的幂律,更多资源可靠地带来更好的模型。

微调在结构上有所不同。谷歌在 ICLR 2024 的研究("When Scaling Meets LLM Finetuning")直接推导了缩放公式,发现微调的指数远低于预训练的指数——尤其是对于 LoRA 等参数高效方法。全模型微调对数据的需求更大,但即便如此,它也比从业者预期早得多地触及收益递减点。同一研究还证实,升级基础模型往往优于将微调数据集翻倍——因为微调从模型规模中获益更多,而非从数据规模。

其机制一旦理解便会直觉化:基础模型已经学习了你微调样本所代表的模式。微调是在教模型在新的情境中提取并应用这些模式,而非从零开始发现它们。一旦这个教学过程完成,额外的样本就不会引入新的信号——它们只是在强化模型已有的模式,或者更糟糕地,从更大数据集中的标签不一致和边界案例引入相互矛盾的噪声。

诊断饱和:评估增量测试

如果你知道该看什么,饱和信号在学习曲线中清晰可见。

在健康的微调运行中,训练损失和验证损失同步下降,随着模型学习而收敛。当你触及饱和时,训练损失继续下降——模型仍在"学习",即拟合样本——但验证损失趋于平稳或略微上升。训练与验证性能之间的差距拉大。这是经典的过拟合特征,但在微调中,它往往出现得比从业者预期的早得多,有时在数千个样本的数据集上仅需一个 epoch。

有用的诊断方法是评估增量:模型在保留集上的最佳评估表现与合理基线(例如不经微调直接提示基础模型)之间的差距。将这个增量绘制到各训练步骤上。如果增量在增大,你还在学习;如果增量在三个检查点之前就已经平稳,你已经结束了——增加数据不会重新打开这个差距。

一个实用阈值:如果向已收敛的模型增加 50% 的训练样本,在保留集评估指标上带来的绝对提升不足 2-3%,你已经触及了数据饱和边界。这不是研究结论,而是决定何时转移精力的启发式规则。

"我需要更多数据"的真实含义

当微调停滞时,工程师通常得出需要更多数据的结论。这个诊断往往是错的——或者至少是不完整的。真正的问题是:更多数据用来做什么?

数据量只有在新样本满足以下条件时才有帮助:

  • 引入模型尚未见过的真正新行为
  • 修补某个代表性不足的类别中的系统性缺口
  • 增加模型当前失败的长尾分布的覆盖率

如果你增加的样本与模型已经能处理的输入属于同一类,你购买的不是更多信号,而是没有回报的更多计算。

GRAPE 研究(2025 年)对此有鲜明的展示。通过筛选与基础模型预训练分布对齐的微调样本——而非简单地收集更多样本——团队相比在数据量三倍的数据集上训练的模型,获得了 17.3% 的绝对提升。相同的基础模型,不同的筛选标准。这一洞见是:契合度比体量更重要:从与模型预训练相同分布中抽取的样本泛化效果更好,而需要模型覆盖其先验分布的样本则需要指数级更多的数据才能奏效。

这重构了标准的调试问题。不要问"我有足够的样本吗?",而应问"我的样本是否符合我想要的泛化模式,还是我在与基础模型的先验对抗?"

数据量不再有效时的四种替代方案

一旦确认饱和,你有四个杠杆可以调动,每个都针对不同的根本原因。

课程重设计。 训练期间示例的呈现顺序很重要。从简单样本开始的模型,在遇到复杂或嘈杂的数据之前,能建立更好的表征基础,避免在训练早期陷入差的局部最优。在 LLaMA 上针对 GSM8K、HumanEval 和 MT-Bench 测试的 CAMPUS 框架发现,与随机排序微调相比,基于能力感知的课程排序在相同数据上平均提升了 7%。你不需要新样本——你需要按难度对已有样本进行排序,让模型从稳固基础开始,再应对困难案例。

困难负样本挖掘。 标准微调是随机采样样本。困难负样本挖掘专门寻找模型接近正确却出错的样本——决策边界至关重要的案例。通过让训练分布充满这些边界样本,你迫使模型发展更精细的区分能力。对于嵌入和检索模型,领域特定的困难负样本挖掘相比随机采样基线,展示了 15-19% 的 MRR 提升。生成式任务的效果稍低,但仍然可测量。

从更大模型蒸馏。 如果你能访问更大、质量更高的模型,可以用它生成推理过程——逐步解释——作为小模型的训练目标。谷歌研究的"Distilling Step-by-Step"发现,一个在蒸馏推理轨迹上训练的 770M 参数 T5 模型,在 ANLI 上超越了 540B 参数的 PaLM,且只使用了 20% 的完整数据集。这是该领域最违反直觉的结果:一个大约小 700 倍、用 5 倍更少数据训练的模型,在特定基准上超越了教师模型。蒸馏之所以有效,是因为推理轨迹给了模型关于答案为何正确的明确信号,这比单纯的答案标签对泛化的帮助要大得多。

基础模型选择。 微调放大基础模型已有的知识——它不会添加新知识。如果你的任务需要基础模型所缺乏的能力,再多的微调样本也无法弥补。"7B 微调模型在领域特定任务上通常胜过通用 70B 模型"这一发现,只在 7B 模型的基础知识覆盖该领域时才成立;当它不覆盖时,无论如何调优,70B 都会获胜。如果你遭遇了饱和,且上述替代方案都无法推动你的评估,那么诚实的诊断是基础模型不匹配。在继续投入数据集收集之前,先切换到在领域相邻语料上训练的模型。

隐性代价:灾难性遗忘随数据量扩大

还有一个原因让你应该在饱和处停止,而非强行突破:额外的训练样本不仅无法帮助——它们还会主动降级模型原本已有的能力。

苹果 MLR 关于微调期间遗忘的研究发现,遗忘与训练步骤数量呈幂律关系,且无法仅通过提前停止来避免。即使是大幅降低风险的基于 LoRA 的微调,在对领域数据进行扩展训练后,安全护栏也显示出 25% 的退化。训练时间越长,模型与其原始表征结构的联系就越少。

这意味着"我应该增加更多样本吗?"这个问题隐含着第二个问题:"为了训练这些样本,我会放弃哪些能力?"超过饱和边界后,答案几乎总是:失去的比得到的多。

停滞微调的决策序列

当微调质量停止提升时,在下单收集更多数据之前,请按此序列逐步排查:

  1. 确认饱和:增加 50% 的数据。如果保留集评估改善不足 3% 绝对值,你已饱和。
  2. 检查分布契合度:你的样本是否要求模型覆盖其基础先验,还是与之协作?如果是前者,应用分布对齐筛选(GRAPE 风格过滤)。
  3. 尝试课程排序:使用模型损失作为代理,按难度对现有样本排序。在收集任何新数据之前,用由易到难的课程重新训练。
  4. 应用困难负样本挖掘:识别模型在决策边界附近打分的样本,对这些样本过采样并重新训练。
  5. 考虑蒸馏:如果有更大的模型可用,为你的样本生成推理轨迹,并将其用作训练目标。
  6. 评估基础模型契合度:如果上述方法都无法突破平台期,瓶颈在于基础模型的知识,而非微调数据集。在收集更多数据之前先换一个基础模型。

上述六个步骤的共同规律:它们都比数据收集更便宜、更快,然而从业者通常会跳过它们,直接奔向数据飞轮。数据感觉像是安全的默认选项,因为它是显而易见的——你随时可以数样本数量。饱和边界则是不可见的,除非你主动测量。

平台期真正在告诉你什么

微调平台期不是资源问题,而是一个信号:模型已经从你用当前训练配置提供的样本中提取了所有它能提取的东西。继续向相同配置推送更多数据,只是在重复模型已经完成的工作。

持续突破平台期的团队,始终将平台期视为诊断信号,而非激励信号。他们问的是:"当前训练配置无法学习什么?"——而不是"我们如何把已经做过的事做得更多?"这个问题的转变,通常胜过数千个训练样本。

References:Let's stay in touch and Follow me for more thoughts and updates