发布时间:2024年03月21日
LLM应用
推理技术
CoT 提示技术有力提升了 LLM 的推理表现,在复杂推理任务中崭露头角。然而,现有的 CoT 合成技术大多聚焦简单任务,产出的提示往往品质不高且逻辑不连贯。因此,我们针对这一难题进行了实践探索,并创新研发了 CoTGenius 框架,专门用于自动生成高品质的 CoT 提示。CoTGenius 结合了“复杂化”、“多样化”和“具体化”三大进化策略,辅以“进化成功评判”和“正确性验证”双重筛选机制。我们运用 CoTGenius 大规模构建了 CoT 数据集,并在此基础上微调了 Llama 2-Chat 的 70 亿和 130 亿参数模型,形成了全新的 ChainLM 模型。为解决推理过程中步步积累的误差问题,我们创新提出了“逐步辩论法”,让多个辩手对每一步推理展开讨论,共同寻找正确答案。大量实验结果显示,相比已有的模型,ChainLM 在解决一系列复杂的推理问题上展现出了显著增强的能力。另外,我们也深度剖析了 CoTGenius 内部各类数据类别对模型性能的具体影响。目前,我们已在 Github 平台(https://github.com/RUCAIBox/ChainLM)公开了相关数据集和代码资源。
CoTGenius 框架通过三个主要的进化策略来自动生成优质的 Chain-of-Thought (CoT) 提示,这些策略包括:
-
- 复杂化(Complicate) :这个策略的目标是将初始问题升级为更复杂的问题,需要更多的推理步骤。这可以通过添加条件和约束或加深问题深度来实现。例如,将一个简单的数学问题 "x^2 = 16, 什么是 x?" 复杂化为 "x^2 = 16, x > 0, x 是质数吗?"。
-
- 多样化(Diversify) :这个策略旨在扩展 CoT 提示的问题主题,使模型能够适用于更广泛的场景。这可以通过替换问题场景或从给定问题中汲取灵感来创造全新的问题。例如,将 "一个水管需要一小时填满水箱" 改为 "一辆车以每小时60公里的速度从A点行驶到B点"。
-
- 具体化(Specify) :这个策略通过在保持底层问题不变的情况下,向 CoT 推理步骤中插入更多细节来提高提示的具体性。这包括增加更多的推理步骤和重写现有的推理步骤,使它们更加标准化和流畅。
除了这三个进化策略,CoTGenius 还包括两个过滤机制来确保生成的 CoT 提示的质量:
- • 进化成功判断(Evolutionary Success Judgement) :这个机制使用多个强大的语言模型(如 ChatGPT、Claude 和 PaLM)来评估复杂化和多样化进化中的重写问题,以及具体化进化中的重写 CoT 推理步骤,是否成功实现了进化目标。通过最大投票法保留那些成功进化的 CoT 提示。
- • 正确性验证(Correctness Verification) :在复杂化和多样化进化过程中,首先升级 CoT 问题,然后使用 ChatGPT 生成这些进化新问题的推理步骤。设计正确性验证来评估问题和生成的推理步骤之间的一致性。同样使用上述语言模型来判断推理的正确性,并使用最大投票策略保留正确的 CoT 提示。
通过这些策略和过滤机制,CoTGenius 能够生成高质量、复杂且具体的 CoT 提示,这些提示随后用于微调大型语言模型,以增强其在复杂推理任务上的性能。
上图展示了 CoTGenius 框架的总体流程,用于改进现有的 Chain-of-Thought (CoT) 提示:
-
- 输入问题 :首先,提供一个初始问题(Question)和与之相关的推理步骤(CoT),这些问题和推理步骤可以来自现有的数据集或者是一个简单的问题示例。
-
- 复杂化(Complicate) :通过添加条件和约束或加深问题深度,使得问题变得更加复杂。这一步的目的是增加问题所需的推理步骤数量,从而促使模型进行更深入的思考。
-
- 多样化(Diversify) :这一步旨在扩展问题的主题范围,通过替换问题场景或从给定问题中汲取灵感来创造全新的问题。这样可以增加模型处理不同类型问题的能力。
-
- 具体化(Specify) :在这一步中,对初始的 CoT 推理步骤进行细化,添加更多的细节和推理步骤,使得推理过程更加清晰和具体。
-
- 迭代 :上述复杂化、多样化和具体化的过程可以迭代进行,每次迭代都会在前一步的基础上进一步改进 CoT 提示。
-
- 特异性判断(Specificity Judgement) :在这一步中,使用强大的语言模型来评估具体化后的 CoT 提示是否足够详细和标准化。
-
- 多样性判断(Diversity Judgement) :评估多样化后的 CoT 提示是否成功地覆盖了更广泛的问题类型。
-
- 复杂性判断(Complexity Judgement) :判断复杂化后的 CoT 提示是否确实变得更加复杂和具有挑战性。
-
- 正确性验证(Correctness Verification) :验证生成的 CoT 推理步骤是否与问题保持一致,并且答案是否正确。
-
- 输出改进的 CoT 提示 :经过上述步骤的筛选和改进,最终生成高质量的 CoT 提示,这些提示可以用于微调大型语言模型,提高其在复杂推理任务上的表现。
整个流程的目的是通过自动化的方式生成更复杂、更具体、更多样化的 CoT 提示,从而提升大型语言模型在解决复杂推理问题时的性能。
上图中展示了作者提出的步级辩论(step-level debating)策略的流程,这是一种用于改进 ChainLM 模型中链式思维(Chain-of-Thought, CoT)推理的方法。以下是对该流程的详细解释:
-
- 问题提出 :首先,向模型提出一个需要解决的问题。这个问题可以是数学问题、逻辑谜题或任何需要逐步推理的任务。
-
- 一般公众角色 :在这个策略中,设置了一个“一般公众”角色,这个角色负责回答问题,并逐步提供推理过程。这个角色代表了模型在没有辩论者角色介入时的基本推理能力。
-
- 科学家和数学家角色 :这两个角色分别代表不同的专业知识和推理风格。科学家和数学家将针对“一般公众”提出的每个推理步骤进行辩论,提供自己的见解和改进建议。这些角色的目的是模拟不同专家之间的讨论,以提高推理过程的准确性和深度。
-
- 法官角色 :法官角色负责总结科学家和数学家之间的辩论,并为每个推理步骤给出最终的裁决。法官的角色是确保推理过程的逻辑性和正确性,同时推动整个辩论过程向前发展。
-
- 辩论过程 :在每个推理步骤完成后,如果科学家和数学家之间的辩论达成共识,或者法官给出了最终裁决,一般公众角色将基于此继续进行下一步推理。这个过程将持续进行,直到问题得到完全解决。
-
- 最终答案 :一旦所有推理步骤都经过辩论和验证,法官将宣布最终答案。如果在整个推理过程中,法官能够在某个步骤直接得出最终答案,他们会在宣布答案时加上“辩论结束”(Debate ended.)的标记。
步级辩论策略的核心思想是通过模拟多方专家的讨论和辩论,来提高模型在复杂推理任务中的准确性和可靠性。这种方法特别适用于那些在中间步骤容易出错的任务,因为它确保了每一步推理的质量,从而减少了错误累积的可能性。
Arxiv