问题背景
在推理过程中使用TOT方式可以增加推理性能,但由于增加了推理次数,导致耗时过大。目前待解决的问题是如何能在推理时既保持很好的推理能力,又保持推理耗时不会过大。
本文方法
- 文章提出CPO(Chain of Preference Optimization)方式。该方法使用TOT方式来探索推理路径得到一批数据集,并结合DPO方式进行微调训练,从而让模型在推理时候能直接输出与采用TOT相近的效果的推理能力。
- 采用CPO获取数据的大致过程:
- 生成思考。对于每个推理步骤,生成多个思考内容。
- 状态评价。让LLM去进行二分类评估这个思考是否有助于回答问题:可能或者不可能。并对结果进行从1—10的打分评价。
- 搜索和收集。使用BFS来选择路径,保留评价分数最高的n个思考并进行下一步思考,当生成的内容包含“最终答案是:”这个字样时候,结束搜索并返回路径。
- 实现细节:为减少随机性和偏差影响,会将prompt中的示例顺序打乱,并对生成的内容和结果进行多次采样,最终计算平均分。评价分数只决定是否进行下一步探索,最终链路里是否包含正确结果,决定是否被作为偏好数据。
本文的创新点
- 采用CPO方式构建数据集时,将选择的步骤数据和未选择的步骤数据都保留了下来。之前的工作是只保留了正确的步骤数据,然后进行SFT的微调训练。但本文认为未选择的步骤数据也是一种信息,和选择的步骤数据一起构成偏好数据集对增强推理能力可能会更有效果。
实验效果
-
本文方法在QA、事实验证、算数推理三类推理任务进行了测试。对比了COT、TOT、TS-SFT(只使用正确步骤的SFT微调)方法。
-
CPO提升了推理能力,相比于COT方法平均提高了4.3%,最大提高了9.7%。相比于TOT性能相近,在事实验证中平均性能还高于TOT,但CPO要在推理阶段的速度要比TOT平均快57.5倍。相比于TS-LLM,CPO的性能平均超过TS-LLM,说明CPO充分利用了TOT的推理数据,在微调模型过程中添加未选择的思想来进行偏好学习训练,性能更好。
-
本文还分析了增加非偏好数据的数量对于性能的影响。0%是不加入非偏好数据,只使用偏好数据,就相当于是基线SFT训练,逐渐增加,当到达100%时候为CPO。发现增加不受欢迎的数据包含的百分比可以持续提高模型性能。这表明,在优化过程中,不受欢迎的想法是有益的,突出了利用偏好和不受欢迎的想法来增强模型推理能力的重要性。
-
针对优化目标,本文分析了使用步骤级数据和一整个链路数据优化训练时的区别,得出的结论是采用一整个链路进行训练,会存在梯度抵消问题,在偏好数据和非偏好数据中可能存在公共子序列,这一部分梯度数值会被抵消,导致最终自己算最后的不同部分。因此,需要使用步骤级数据进行训练,可保证每个步骤的推理过程的梯度被更新。示例:y_w = [5, +, 4, =, 9, and, 9, +, 2, =, 11]、y_l = [5, +, 4, =, 9, and, 9, +, 2, =, 15]