指令微调时,也要考虑提示损失
动机
大模型在预训练之后往往需要经过指令微调,以更好地遵循人类指令。常规做法是在自回归流程中,只对回答部分计算损失而忽略提示部分的误差。但这样的设计是否最优,一直缺乏深入研究
OpenAI 的 fine-tuning API 曾允许为 Prompt 部分设定一个小的非零权重,默认为0.01,声称“对短回答的数据可以稳定训练”,但当时缺乏广泛的实验证据,后来也移除了此参数
理论上,如果训练时加入提示部分损失,可能会带来两方面影响:
-
正向效应(稳定训练): 当训练数据的答案很短时,纯粹依靠短答案部分更新参数可能不足以稳定地优化模型。此时给予 Prompt 部分一个小的损失权重,相当于提供了额外的预测任务,哪怕Prompt只是重复输入,也为模型提供了类似正则化的信号,避免因有效训练信号过少而发生梯度发散
-
负效应(目标偏差): 引入 prompt 损失存在训练-测试不一致的风险,模型可能过多关注指令文本的复现,而非专注于生成正确的回答
所以我们需要在这两种效应之间取得平衡,需要在不同尺寸、不同架构的模型上进行广泛的测试,以确认提示损失到底要不要算、要算多少
实验结果
一、训练方法
对提示和回答 token 的损失进行加权,如下图所示
二、对不同长度任务的影响
根据上述理论分析,我们认为使用提示损失的最大作用在于处理短回答指令任务。于是基于 Stanford Alpaca 数据集构造短回答样本与长回答样本(划分依据为回答长度是否大于提示长度)进行训练,并在八个下游任务中进行测试(ARC、WinoGrande、PIQA、TruthfulQA、WMT等)
如图所示,将提示损失权重从0逐步提高到1,完整数据和长数据构建的模型整体效果变化不大,而短数据训练的模型却展示出了性能由弱变强再下降的趋势,说明之前的理论分析正确:对于短文本指令任务,加入提示损失明显利大于弊
参考文献:
https://arxiv.org/pdf/2401.13586v2
Instruction Fine-Tuning: Does Prompt Loss Matter?
三、更广泛的测试
另一项研究更完善地测试了不同架构、尺寸、训练数据规模的模型,通过多种损失权重组合上进行训练后,在五个基准上(MMLU、BBH、AlpacaEval、IFEval、MT-Bench)的准确率
如上图所示,传统的微调方案很少产生最佳的模型性能,而在大约 81% 的情况下,最佳性能的模型是通过低到中等的提示标记权重(0 到 0.6)和中等到高的响应标记权重(0.4 到 1)获得的
理想情况下,我们希望指令微调后的模型对输入噪声具有良好的鲁棒性,即模型更多地学到了指令背后的逻辑,而非专注于数据表层的语义模式。对此,作者测试时使用了拼写错误、重新措辞和格式更改后的样本,检查模型回答的一致性:
可以发现,使用传统指令微调的模型在提示敏感性方面几乎从未表现最佳,并且通常还会比未经训练的基础模型更加敏感。而如果给一个较低的提示权重,敏感性通常会降至最低
微调后的模型往往还需要进行各种基于强化学习的对齐训练。实践中我们可能会发现,不同模型存在“可塑性”差异:某些微调模型在做对齐训练时可能表现不佳。对此,作者测试了使用了提示加权训练出来的模型,与传统微调模型,进行 DPO 后训练时的效果差异
可见使用了提示权重所训练的模型,会更适合进行下游对齐
参考文献:
https://arxiv.org/pdf/2507.07817
On the Effect of Instruction Tuning Loss on Generalization
总结
介绍的两项研究都揭示了指令微调中损失函数设计与模型泛化能力之间的重要联系,适度地对 prompt 本身进行损失计算与学习是有益的