思维链(Chain-of-Thought, CoT)是一种通过逐步推理来解决复杂问题的技术,近年来在大型语言模型(LLMs)中得到了广泛应用。CoT通过将复杂问题分解为一系列可管理的步骤,并建立这些步骤之间的逻辑联系,显著提高了模型的推理能力和可解释性。
初步知识
在本节中,我们提供了标准提示和思维链推理的初步知识。定义以下符号:问题 Q、提示T 、概率语言模型PLM 和预测A 。
少样本标准提示
少样本思维链提示
思维链推理的优势
作为一种新颖的推理范式,思维链推理具有多种优势:
- 提升推理能力:思维链推理将复杂问题分解为可管理的步骤,并建立这些步骤之间的联系,从而促进推理。
- 提供可解释性:思维链推理提供可观察的推理轨迹,使用户能够理解模型的决策过程,使推理过程透明且可信。
- 促进协作:细粒度的推理轨迹促进用户与系统的交互,允许用户改变模型的执行轨迹,从而促进基于LLM的自主代理的发展。
通过上述初步知识,介绍了标准提示和思维链提示的基本概念和公式。思维链推理通过逐步推理的方式显著提高了模型的推理能力,并提供了可解释性和协作优势。这些初步知识为进一步探讨思维链推理的先进方法和应用奠定了基础。
思维链方法
1.Few-shot CoT
Few-shot CoT 通过提供少量的示例来激发大型语言模型(LLM)的推理能力。这种方法的核心在于,不仅仅给出问题的答案,还要展示出推导答案的思维过程,即“思维链”。这样,模型可以学习到如何通过一系列逻辑步骤来解决新的问题。Few-shot CoT通常需要在提示中包含问题的推导过程,让模型学会如何进行推理。
2. PAL(Program-Aided Language Models)
它的核心思想是利用大型语言模型(LLMs)来阅读自然语言问题,并生成程序作为中间推理步骤,然后将求解步骤外包给运行时环境,例如Python解释器。这样,LLMs只需要负责将自然语言问题分解成可执行的步骤,而具体的求解任务则由解释器来完成。
3. PoT(Program of Thoughts)
它旨在解决复杂的数值推理任务。这种方法通过使用语言模型(主要是Codex)来表达推理过程作为程序,将计算从推理中分离出来,由外部计算机执行生成的程序以得出答案。
4. MathPrompter
MathPrompter是一种用于提高大型语言模型(LLMs)在解决算术推理任务时性能的技术。这项技术的核心思想是利用零样本链式思考(Zero-shot chain-of-thought)提示技术,生成多个代数表达式或Python函数来解决同一个数学问题,从而提高输出结果的置信度。与传统的基于提示的方法不同,MathPrompter会检查中间步骤的有效性。
具体来说,MathPrompter的工作流程包括以下几个步骤:
- 生成代数模板:将问题转化为代数形式,用变量替换数值,并建立关键值映射。
- 数学提示:使用两种不同的方法——代数方法和Python方法——来生成问题的解析解。通过给LLM提供提示,让它生成额外的上下文。
代数提示:要求LLM写出数学方程,并以“Answer =”格式生成答案。
Python提示:要求LLM写出一个返回答案的Python函数。
- 多验证和交叉检查:通过从多个角度解决问题并比较结果,来确认解决方案的有效性,并确保其合理性和准确性。
MathPrompter的一个限制是,尽管通过多次运行来提高结果的准确性,但这并不能总是保证输出的正确性。代数和Python表达式都有可能产生错误的结果,即使提示输出匹配。
5. Complex CoT(Complexity-CoT)
它是一种针对Chain-of-Thought(CoT)提示方法的改进,旨在通过挑选合适的示例(exemplar)来引导大型语言模型进行更有效的推理。这种方法的核心思想是,如果作为上下文“训练示例”的推理路径足够复杂,那么在这些示例组成的提示下引导大模型推理的效果会更好。
6. Zero-shot CoT(Zero-shot Chain-of-Thought)
它允许模型在没有额外训练或示例的情况下,通过一系列逻辑推理步骤来解决复杂问题。这种方法的核心在于,通过在问题前添加特定的提示(例如“Let’s think step by step!”),激发模型的逻辑推理能力,使其能够生成解决问题的中间步骤。
7. Plan-and-Solve(PS)
Plan-and-Solve(PS)是一种用于提升大型语言模型(LLMs)在多步推理任务中表现的提示策略。
- 目的与组成: Plan-and-Solve(PS)提示策略旨在解决Zero-shot-CoT(零样本链式思维)推理中存在的问题,如计算错误、缺失步骤错误和语义误解错误。PS提示策略包含两个主要部分:首先,制定一个计划将整个任务分解为更小的子任务;其次,根据计划执行这些子任务。
- PS与PS+提示:
(1)PS提示:这是一种新的Chain-of-Thought提示方法,它使LLMs能够明确地设计解决问题的计划,并在预测输入问题的答案之前生成中间推理过程。
(2)PS+提示:为了解决计算错误并提高生成的推理步骤的质量,PS提示策略被扩展为PS+提示策略,其中增加了更详细的指令,如“注意计算”、“提取相关变量及其对应的数值”以及“计算中间结果”。
Plan-and-Solve通过引导LLMs制定详细的计划并执行该计划,提高了LLMs在复杂推理任务上的性能,减少了由于计算错误或遗漏关键信息而导致的错误。
8. Auto-CoT
Auto-CoT(Automatic Chain of Thought Prompting in Large Language Models)是一种自动化构建大模型演示的方法,旨在提高大型语言模型(LLMs)在复杂推理任务中的表现。这种方法通过采样丰富的问题并生成相应的推理链来构建演示,实验结果表明,Auto-CoT能够达到甚至超过手工设计的演示效果。
Auto-CoT的核心思想是利用大型语言模型的能力,通过自动化流程来构建“让我们一步步思考”的思维过程,从而避免手动设计思维链带来的巨大工作量。它包括两个主要阶段:聚类和抽样。首先,将给定数据集的问题划分为几个簇;然后,从每个簇中选择一个代表性问题,并使用简单的启发式方法使用Zero-Shot-CoT生成其推理链。
Auto-CoT的实现方法主要依赖于问题向量表示、聚类算法和范例构建。使用Sentence-BERT对问题进行编码,然后使用K-means等聚类算法根据问题的向量表示进行聚类,最后选择距离聚类中心近的问题,并生成推理链。
在实际应用中,Auto-CoT技术适用于各种需要复杂推理的任务,如数学计算、问题解答和零样本学习。它可以显著提高模型在解决这些问题时的透明度和准确性,对于教育、搜索引擎优化和智能家居等领域的应用有着巨大的潜力。
9. Reprompting
Reprompting是一种自动化的链式思考提示推断算法,它通过吉布斯采样(Gibbs sampling)来自动学习给定任务的CoT配方,无需人工干预。该算法通过迭代采样新配方,使用先前采样的配方作为父提示来解决其他训练问题,从而推断出对于一组训练样本始终有效的CoT配方。
Reprompting的核心思想是通过迭代采样来发现有效的CoT提示,这些提示可以在训练集上优化,并作为解决未见测试问题的有效CoT提示。这种方法使得大型语言模型(LLMs)能够在没有人工指导的情况下解决复杂的推理任务。Reprompting还支持模型组合,即使用不同的LLMs来初始化和采样新的配方,这可以通过使用一个更强的LLM来生成初始CoT解决方案,然后使用一个较弱的LLM来优化自身提示,从而显著提高较弱模型的性能。
10. Agent-Instruct
Agent-Instruct是一个可扩展的代理框架,用于自动创建大量多样化和高质量的合成数据。这个框架专注于创建示范和反馈数据,只需要原始文档作为输入。它被设计用于“生成教学”(Generative Teaching),即通过强大的模型创建数据来教授另一个模型新技能或行为。
主要流程:
- 种子收集(Seed Collection):收集各种初始资源,如教科书章节、网络文章和代码片段,作为创建新指令的基础材料。
- 内容转换(Content Transformation):专业代理处理每个种子,将其转换为便于创建指令的中间形式。
- 种子指令生成(Seed Instruction Generation):多个代理使用转换后的种子生成广泛的指令。
- 指令优化(Instruction Refinement):通过迭代过程提高生成指令的复杂性和质量。
Agent-Instruct通过自动化流程生成高质量的合成数据,用于后训练语言模型,以教授新技能或行为,从而提高模型在各种任务上的性能。
11. MetaCoT
MetaCoT是一种在混合任务场景中提升大型语言模型(LLMs)泛化能力的方法。它通过思维链(CoT)提示技术,生成中间推理链作为得出答案的依据。MetaCoT的核心思想是弥补CoT提示方法在使用LLMs时的性能与泛化之间的差距。MetaCoT主要包括三个阶段:场景识别、示例选择和答案推导。
- 场景识别(Scenario Identification):这个阶段通过抽样不同的问题作为上下文学习示例,帮助自动根据输入问题分类场景。
- 示例选择(Demonstration Selection):根据第一阶段获得的场景,从池中构建多样化的示例。
- 答案推导(Answer Derivation):这个阶段使用先前获取的示例对输入问题进行最终的答案推断。
12. COSP
COSP(Consistency-based Self-Adaptive Prompting)是由Wan等人在2023年提出的一种用于改善零样本(zero-shot)链式推理(chain-of-thought reasoning)的方法。这种方法的核心在于它不需要手工制作的响应或真实标签,而是通过从大型语言模型(LLM)的零样本输出中选择和构建示例集。COSP通过结合一致性、多样性和重复性的标准来选择示例。
COSP使用答案熵作为选择标准之一,其思想是利用熵的概念来衡量答案的不确定性或多样性。在COSP中,答案熵被用作一个代理指标,用于评估不同任务中答案的正确性,其中低熵与正确性正相关。具体来说,COSP在第一阶段执行零样本推理,并计算归一化熵,以评估不同解码路径产生的预测的一致性。归一化熵是通过计算预测答案的分布的熵来得到的,如果所有预测都不同,则熵达到最大值;如果预测集中,则熵值较低。通过这种方式,COSP能够识别出那些具有高一致性(即低熵)的预测,并将它们作为构建示例集的候选。
总结来说,COSP通过答案熵来评估LLM输出的一致性,并基于此来选择用于构建示例集的答案,从而提高零样本推理的性能。
13. LogiCoT
LogiCoT(Logical Chain-of-Thought Instruction-Tuning)是一种新的指令调整数据集,专为GPT-4设计的逻辑链式推理能力。它旨在通过一系列指令来提升模型的逻辑推理能力,这些指令能够引导GPT-4生成链式推理的理由。LogiCoT的核心在于利用GPT-4的能力来生成高质量的输出,这些输出既包含符号推理也包含多步骤的链式推理,为增强AI模型的逻辑推理能力提供了一个全面而细致的资源。
LogiCoT的构建是一个多阶段的过程,它使用GPT-4作为一个教学助手。首先,选择合适的种子数据,这些数据包含正确的输出和可选的链式推理链。然后,将这些任务转化为清晰、明确的提示,以激发GPT-4的逻辑推理能力。接着,将种子数据和相应的指令结合起来,输入到GPT-4中以生成响应。GPT-4的输出由正确的标签和推理链引导,最终使用正确的输出和GPT-4的响应作为指令数据。
LogiCoT通过指令调整方案对LLaMA-7b模型进行了微调,结果表明,与最先进的指令调整模型相比,LogiCoT在逻辑推理基准测试和以人为中心的基准测试上都显示出显著的性能提升。这项工作与最近的研究表明,当小型语言模型专门针对目标链式推理任务时,它们可以实现竞争性的多步推理能力。
总的来说,LogiCoT通过结合逻辑推理和GPT-4的生成能力,为AI系统在逻辑推理任务上的能力提升设定了新的标准。
14.Role-Play Prompting
Role-Play Prompting(角色扮演提示)是一种提示方法,它通过给大型语言模型(LLMs)分配一个角色,如“老师”或“销售员”,来指导响应的风格、语气和焦点。这种方法可以增强文本的清晰度和准确性,通过与角色对齐来提高推理和解释任务的表现。角色扮演提示适用于广泛的任务,如写作、推理和基于对话的应用,并且可以定制响应以适应特定的上下文。
在角色扮演提示中,最佳实践包括使用非亲密角色、性别中立术语,并采用两步方法以获得更好的结果。然而,这种方法的限制在于它可能会强化刻板印象,并且严重依赖于模型训练数据中角色表示的质量。
角色扮演提示的核心在于通过分配角色给LLM来引导其行为,从而增强输出的风格、准确性和深度。无论是为了某种特定的语气、提高清晰度还是引出复杂和微妙的响应,角色扮演提示都可以提供帮助。通过遵循最佳实践并意识到潜在的陷阱,你可以充分利用角色扮演提示,使你与语言模型的互动更加有效,并满足特定需求。
15. Synthetic Prompting
Synthetic Prompting是一种用于提升大型语言模型(LLMs)推理能力的技术。它通过利用少量手工制作的示例来提示模型自我生成更多的示例,并选择有效的演示来激发更好的推理。这种方法在生成新示例时交替进行反向和正向过程。
- 反向过程(Backward Process):在这个步骤中,模型根据采样的推理链生成一个问题,确保这个问题是可以解决且清晰的。
- 正向过程(Forward Process):在这一步,模型为合成的问题产生一个更详细的推理链,提高示例的质量。
Synthetic Prompting通过这种方式,可以显著提高LLMs在数值推理、算法推理和符号推理等任务上的表现,相比于现有的提示技术,可以达到高达15.6%的绝对增益。
此外,Synthetic Prompting还提出了一种基于簇内复杂度的选择方案,旨在通过聚类它们并从每个簇中选择最复杂的一个(推理链最长的那一个),来最大化演示的多样性和信息量。
16. AutoMate CoT
AutoMate CoT是一种自动化构建大型语言模型(LLMs)推理链提示(Chain-of-Thought, CoT)的方法。这种方法的核心在于减少人工设计推理链的需要,通过自动化的方式生成和选择推理链,以提高模型在复杂推理任务中的表现。
- 自动化推理链生成:AutoMate CoT能够自动从少量标注数据集中增强推理链,并修剪低质量的链,构建基于标签的机器生成推理链的候选池。
- 聚类和抽样:AutoMate CoT包括两个主要阶段。首先是聚类阶段,将给定数据集的问题划分为几个簇。其次是抽样阶段,从每个簇中选择一个代表性问题,并使用简单的启发式方法使用Zero-Shot-CoT生成其推理链。
- 质量控制:由于Zero-Shot-CoT生成的推理链可能包含错误,AutoMate CoT提出了一些缓解策略,通过后处理质量控制来生成可用的推理链。
17. Explanation-Selection
Explanation-Selection(解释选择)是一个在可解释人工智能(XAI)领域中的关键技术,它涉及到从多个可能的解释中选择最合适的一个来解释人工智能系统的行为或决策。以下是关于Explanation-Selection的一些关键点:
- 自动化推理与解释选择:在XAI领域,自动化推理技术是核心,它帮助构建对AI系统的信任,超越了单纯的预测准确性和鲁棒性。Explanation-Selection技术结合了机器学习和自动化推理,用于生成和选择解释,以促进科学发现的过程。
- 解释选择问题分类:提出了一个基于社会学和认知科学见解的解释选择问题的分类体系,这个体系包含了现有的概念,并引入了新属性。
- 解释的期望属性:解释选择问题的研究相对较少,导致文献中存在冗余和重叠的概念。为了解决这些问题,研究者们从社会科学中识别出一组可以用来指导解释选择的期望属性,包括必要性、充分性、最小性和普遍性等。
- 与因果关系和溯因理论的联系:解释选择与依赖理论的因果关系有关,也与溯因理论紧密相关,后者是皮尔斯提出的除了演绎和归纳之外的第三种推理模式。
- 解释选择的应用:在实际应用中,不同的解释可以导致模型性能的显著差异。未经针对特定任务调整的解释,如非专家编写的现成解释,可能导致平庸的性能。因此,优化解释注入提示成为一个黑盒问题,研究者们提出了一个两阶段框架来有效地搜索可能获得高分的解释组合。
- 使用未标记数据进行解释选择:在链式思考提示中,可以使用未标记数据来优化解释。首先为提示中的每个示例生成候选解释集,然后通过两阶段框架找到有效的解释组合。首先根据两个代理指标(对数似然和新示例上的准确性)评估每个上下文示例中的解释,然后搜索解释组合以找到在银标发展集上表现良好的那一个。
- 实验结果:在四个文本推理任务中,包括问答、数学推理和自然语言推理,结果表明代理指标与真实准确性相关,并且整体方法可以有效改进提示,超过众包注释和简单搜索策略。
综上所述,Explanation-Selection是一个复杂的过程,它涉及到从多个可能的解释中选择最佳解释,以提高AI系统的可解释性和性能。通过自动化推理和科学的解释选择,可以更好地理解和信任AI系统。
18. BoostedPrompt
BoostedPrompt是一种用于大型语言模型(LLMs)的提示集成方法,它通过使用一个小数据集来构建一组少量样本提示(few-shot prompts),这些提示共同组成一个“增强提示集成”(boosted prompt ensemble)。这种方法的核心在于,每个提示的少量样本例子都是逐步选择的,以确保这些例子是“困难”的例子,即在前一步集成上的不确定性较高的例子。
BoostedPrompt的主要特点包括:
- 逐步选择困难样本:对于每个提示,其少量样本例子被选择为前一步集成不确定的“困难”例子,这些例子是模型当前性能边界之外的问题。
- 优于单一提示集成:在GSM8k和AQuA等数据集上,BoostedPrompt显示出比单一提示输出空间集成和装袋提示空间集成更好的性能。
- 训练时和测试时版本:提出了BoostedPrompt的训练时和测试时版本,这两个版本使用不同级别的可用标注,并对该算法进行了详细的实证研究。
- 算法细节:算法通过逐步迭代过程构建增强的少量样本提示集成,每一步都会添加新的提示以改善性能。
- 在线BoostedPrompting:可以通过在线方式运行BoostedPrompting,即每当有新的多样化提示可用时,就将其添加到提示集中。
总的来说,BoostedPrompt是一种创新的提示集成方法,它通过精心选择和逐步构建提示集来提高大型语言模型在复杂推理任务上的性能。