来自:Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers
提出 一种自对弈相互推理方法(self-play mutual reasoning approach),使用两个小模型SLM进行交互验证,构建动作池,进行蒙特卡洛树搜索(MCTS)。无监督的形式,可以没有准确答案进行。
1. 定义了一套类似人类的推理动作:
A1: Propose an one-step thought.
根据现有的推理步骤为给定的问题生成下一步思考
(与生成完整思考的CoT不同,只生成一步思考,简化了推理过程)
A2: Propose the remaining thought steps.
提出剩余的思考步骤。在已有的推理步骤的基础上,提示LLM直接生成剩余步骤,直到得到最终答案。
(与标准的CoT相一致,启用“快速思考”来用更少的步骤解决简单问题)
A3: Propose next sub-question along with its answer.
提出下一个子问题及其答案。此操作受到最少到最多提示法Self-Discover的启发,该方法将复杂问题分解为一系列更简单的子问题,并按顺序解决它们。
A4: Answer the sub-question again.
重新回答子问题。考虑到A3可能没有正确回答子问题,提出此操作来重新回答它。为了提高准确性,此操作提示LLM使用少量示例的链式思考。需要注意的是,A3生成的原始答案没有使用类似链式思考的提示,而是遵循了最少到最多问题分解的提示(Zhou et al., 2022, Self-Discover)
A5: Rephrase the question/sub-question.
重述问题/子问题。在分析错误案例时,发现许多错误是由于LLM误解了问题。例如,它可能忽略了问题中提供的某个特定条件。因此,我们提出一个新的操作,即用更简洁的方式重述问题。具体来说,提示LLM清晰地列出问题陈述中给出的所有条件。
2. 动作消融
3. 两个模型的交互一致性
随机mask掉SLM1生成步骤中的句子,让SLM2推理mask掉的部分,看是否最后SLM1和SLM2的答案一致。
4. 平衡探索和利用
值得注意的是,Q(reward)的计算采用最多答案在所有答案中的占比,如math问题question中的一个子问题subquestion的答案生成了10个subanswer,分别是【3个1,5个2,2个3】, 那么这个子问题的最有可能的答案会是2,可信度是5/10(也就是reward)
未完待续...
TODO: