自OpenAI推出o1以来,随着reasoning scaling law的大行其道,很多研究者都将目光聚焦在“reasoning”之上,而在仅reasoning维度上,确实存在着非常深邃且让人着迷的可探索空间,毕竟这意味着围绕system2展开的下一轮认知范式的开启。
众所周知,CoT与ToT作为当前两种流形的链式思维框架,在诸多复杂长链推理场景中不管是通过早期的prompt还是通过搭载agent方式,均取得了惊艳的效果。
但我想,CoT与ToT两种框架在宏观的reasoning范式以及对于模型自身的inference来讲,两者似乎存在着一些本质的差异:即CoT通过上下文提示激活了模型内隐变量参数化推理模式,ToT则通过多步探索与推理显式的连续表征并泛化了长链的联合概率分布。
在推理过程中使用ToT方式可以增加推理性能,但由于增加了推理次数,导致耗时过大。目前待解决的问题是如何能在推理时既保持很好的推理能力,又保持推理耗时不会过大。
结合近期看到的这篇文章提出了CPO(Chain of Preference Optimization)方式,已期达到CoT与ToT两种推理范式在效率与探索、在train-time与test-time compute间的的平衡。
该方法使用ToT方式来探索推理路径并得到一批数据集,并结合DPO方式进行微调训练,从而让模型在推理时候能直接输出与采用ToT相近的效果的推理能力。
采用CPO获取数据的大致过程:
- 生成思考:对于每个推理步骤,生成多个思考内容。
- 状态评价:让LLM去进行二分类评估这个思考是否有助于回答问题,并对结果进行从1—10的打分评价。
- 搜索和收集:使用BFS来选择路径,保留评价分数最高的n个思考并进行下一步思考,当生成的内容包含“最终答案,结束搜索并返回路径。
值得注意的本文创新点在于:
采用CPO方式构建数据集时,将选择的步骤数据和未选择的步骤数据都保留了下来。之前的工作是只保留了正确的步骤数据,然后进行SFT的微调训练。但本文认为未选择的步骤数据也是一种信息,和选择的步骤数据一起构成偏好数据集对增强推理能力可能会更有效果,并在实验中得到验证。
而我认为上述在探索推理中的错误步骤甚至导致的错误结果对于模型内隐变量参数化推理下的泛化性表征意义重大。
这也再一次让我回忆起去年给了我关于RL与LLM融合思想重要提示的AD算法与AoT框架思想。