当前位置: 首页 > news >正文

指令微调时,也要考虑提示损失

动机

大模型在预训练之后往往需要经过指令微调,以更好地遵循人类指令。常规做法是在自回归流程中,只对回答部分计算损失而忽略提示部分的误差。但这样的设计是否最优,一直缺乏深入研究

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 本身进行损失计算与学习是有益的

http://www.dtcms.com/a/276415.html

相关文章:

  • Linux - 安全排查 3
  • 用 MATLAB 模拟传染病传播:从 SI 模型到 SIS 模型的可视化之旅
  • 【无标题】基于拓扑膨胀-收缩对偶性(TED),TED原理构建任意维度TQCD模型并推演宇宙可能性的完整方案:
  • 网络连接:拨号连接宽带PPPOE
  • 数据库索引创建与使用详细笔记
  • Linux的NetworkManager的nmcli配置网桥(bridge) 笔记250712
  • 【6.1.1 漫画分库分表】
  • 挖矿病毒判断与处理 - 入门
  • 26-计组-寻址方式
  • 暑假Python基础整理 -- 函数篇
  • 【6.1.2 漫画分布式事务技术选型】
  • 常用 pkill 命令速查表
  • CentOS 系统紧急恢复:从 lib64 目录崩溃到救援实战
  • vue3 canvas 选择器 Canvas 增加页面性能
  • 用FunctionCall实现文件解析(三):ChatOpenAI单例工厂
  • lnmp环境搭建
  • 使用Pycharm集成开发工具远程调试部署在虚拟机上的flask项目:超级详细的完整指南
  • springboot AOP面向切面编程
  • SpringAI实现聊天记录保存到MySQL
  • 连接池的核心接口和常用属性
  • ReentrantLock 源码解析与 AQS 扩展
  • 首次让机器人具备类人的「主动感知」能力
  • 淘宝商品评论API接口操作详解
  • oc分类和swift扩展有哪些区别
  • 火山引擎:字节跳动的技术赋能初解
  • AI智能体 | 使用Coze制作一键生成单词洗脑循环视频,一天批量生成100条视频不是梦!(附保姆级教程)
  • NW728NW733美光固态闪存NW745NW746
  • HashMap的原理
  • 技术面试问题总结二
  • 多模态大模型》多模态基础模型》多模态对齐、融合和表示