Step-DPO系列模型
如何强化推理能力一直是大语言模型领域的重要问题之一。常见的思维链策略通过在输入提示词部分添加“Let’s think step by step.”,来使模型在输出中完成逐步推理。对于复杂的问题,仅通过修改提示词不足以引导模型正确解决问题。由于复杂问题涉及的推理过程较长,有时包含数十个推理步骤,一旦其中任一步骤出错,就难以得到正确的结果。此外,现有方案旨在通过监督式微调(Supervised Fine-tuning,SFT)阶段增加问答数据以实现更好的对齐。然而,当SFT数据达到一定数量时,模型经常出现幻觉,性能也随之趋于饱和。一个潜在的原因是,随着偏好输出的概率上升,非偏好输出的概率也会随之增加。
为了抑制幻觉,提升模型的事实性,斯坦福大学提出了直接偏好优化方法(Direct Preference Optimization,DPO)[1](Direct Preference Optimization: Your Language Model is Secretly a Reward Model. NeurIPS 2023)其工作原理是创建基于人类偏好对的数据集,每个偏好对都包含一个输入提示、偏好输出以及非偏好输出。然后对语言模型直接进行微调,最大限度地提高生成的可能性,并减少输出的可能性。因此,DPO的优化目标为:
其中与分别表示当前微调模型以及参照模型。
尽管DPO在常规对话基准测试中表现出色,但遗憾的是,在长链条推理任务中,DPO无法准确判断推理过程中的错误步骤,从而无法聚焦关键出错步骤。如上图所示,基于DPO的模型在训练过程中无法准确判断推理步骤正确与否。因此,作者提出基于推理步骤的直接偏好优化——Step-DPO。
老师在纠正学生错误时,不会只告诉学生最终答案错了,还会告知具体哪个步骤错了,以此快速纠正其错误。与此类似,Step-DPO不再像DPO从整体上对比答案,而是将每个推理步骤视为一个基本单元,并且对比单个推理步骤,从更精细的角度提升模型的多步推理分析能力。Step-DPO的优化目标为:
除此之外,作者还提出基于模型自生成的数据处理流程。如上图所示,该流程包含以下三个步骤:
1)错误收集:
[2] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. NeurIPS 2022
2)错误步骤定位:
3)错误步骤修正:
下图展示了一个数据样本示例。值得一提的是,该数据准备流程无需大量的人工介入,人类或GPT-4只需要判断给定推理步骤是否正确,而无需亲自撰写答案来修正错误。
Step-DPO可以在SFT模型或现有的开源Instruct模型上进行微调,仅通过10K数据以及数百个训练步数,即可取得大幅度的数学能力提升。如下图所示,在Qwen2-7B-Instruct模型的基础上进行Step-DPO可在MATH测试集上获得5.6%准确率的提升。在Qwen2-72B-Instruct模型的基础上进行Step-DPO可在MATH和GSM8K测试集的准确率分别达到70.8%和94.0%,超过一系列闭源模型如Gemini-1.5-Pro, GPT-4-1106,以及Claude-3-Opus。除此之外,在难度较高的包含数学竞赛题的Odyssey-MATH榜单上也有显著提升。
经过Step-DPO之后,模型更加鲁棒,减少幻觉的产生,在推理过程中也不容易出错。如以下两个例子所示。
即便是下图这道数学竞赛题,经过Step-DPO之后,模型也可做对。
代码,数据,模型,Demo均已公开至GitHub和Hugging Face,模型也都已经发布在wismodel。
代码:
Demo: (7B模型在wisemodel社区均可创建在线体验和API服务托管,欢迎尝试)
模型:
数据:
图文丨赖昕
编辑丨赵雅鑫
----- END -----
wisemodel相关
系统升级
关于wisemodel更多
1
欢迎持续关注和支持
2
欢迎加盟wisemodel开源社区
3
欢迎投稿优质内容
4
关于wisemodel开源社区
向上滑动查看
更多
领取专属 10元无门槛券
私享最新 技术干货