近年来,随着计算能力的不断提升,大规模语言模型如雨后春笋般涌现,而且随着模型规模的不断扩大,出现了许多新的功能,如上下文学习和思维链推理。
Brown等人(2020)发现,大规模语言模型具有出色的上下文学习(ICL)能力,ICL将输入-输出演示纳入提示文本。有了ICL,现成的LLM无需额外微调即可使用,同时还能达到相当的性能。然而,这种端到端的方法在面对复杂的推理任务时往往表现不佳。
Wei等人(2022b)发现,通过在演示中加入逐步推理过程(即所谓的思维链提示),可以提高LLM的推理能力。思维链提示使模型能够更准确地理解问题的复杂性和推理过程。此外,模型还能生成一系列推理步骤,使我们对模型的认知过程一目了然,从而进一步提高了可解释性。
最近的工作《A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future》综述了这方面的工作,很有指引意义。
本文对该工作中的推理基准、评测方式,变体以及对应的增强方案进行介绍,供大家一起参考。
一 、COT如何定义?
我们先对LLMs进行思维链推理的公式定义。如下:
假设有一个问题Q、一个提示T和一个概率语言模型PLM。
首先考虑演示不包含推理链的上下文场景,需要最大化答案A的可能性,如等式(1,2)所示。
在思维链推理情景中,演示包含推理过程。 过程中,需要最大化答案A和推理R的可能性,如等式(3,4,5,6)所示。
二、COT如何进行评估?
COT的评测基准包括数学推理、常识推理、符号推理、逻辑推理以及多模态推理,同时也包括准确度、EM/F1值等指标,具体数据大小、类型以及详细信息如下表所示:
1、数学推理
数学推理通常用来衡量模型的推理能力。早期的基准包含简单的算术运算。
例如:
Ling等人(2017)以自然语言形式标注了推理过程。
Amini等人(2019)在AQUA的基础上以程序形式标注了推理过程。
后来的基准包含了更复杂和更多的问题,要求根据表格内容进行推理。此外,还有一般基准和阅读理解表格基准。
2、常识推理
常识推理是根据日常生活中普遍知晓和普遍感知的知识进行推理、判断和理解的过程。
如何获取和理解常识性知识是常识推理模型面临的一个重要挑战。
许多基准和任务都是针对常识理解、事件时间常识推理和常识验证提出的。
3、符号推理
这里的符号推理特指一些简单运算的模拟,这些运算对人类来说很简单,但对LLM来说却很有挑战性。
字母串联、抛硬币和反向列表是最常用的符号推理任务。
此外,基准BigBench和BigBench-Hard也包含多个符号推理数据集,如状态跟踪和对象计数。
4、逻辑推理
逻辑推理分为演绎推理、归纳推理和归纳推理。
演绎推理从一般前提得出结论,归纳推理从特殊情况得出一般结论,抽象推理对观察到的现象给出合理解释。
5、多模态推理
在现实世界中,推理还涉及文本以外的信息模式,其中以视觉模式最为普遍,因此出现了许多视觉多模态推理基准。
其中,ScienceQA标注了推理过程,是最常用的视觉多模态推理基准。
与视觉多模态推理相比,视频多模态推理更具挑战性,因为它引入了额外的时间信息。
最后,我们来看看评估指标:
准确度用于评估模型在分类任务中的能力,常用于多选和是/否任务。
EM和F1用于评估自由形式和跨度提取任务。两者都是在标记水平上计算的。
其中,P和R代表精确度和召回率,EM计算预测和答案完全相同的比例。
三、COT目前有哪些变体?
最原始的思维链是一种用自然语言描述中间推理步骤的链式结构。
原始链式结构的结构变体,包括链式结构变体、树式结构变体和图式结构变体。
1、链式结构
PAL和PoT引入编程语言来描述推理过程,从而将推理问题转化为可执行程序的实现,以获得最终答案。
由于程序的执行是去终结的,并能准确地进行算术计算,因此这种方法在数学推理中表现出色。此外,符号序列也是思维表示的另一种类型。
符号链(Chain-of-Symbol)在规划过程中用浓缩的符号链表示复杂环境,从而降低仿真环境的复杂性。
链式结构变体如图2(c,d)所示。
2、树形结构
原有的链式结构从根本上限制了探索的范围。通过采用树结构和树搜索算法,模型获得了在推理过程中高效探索和回溯的能力,如图2(e)所示。
结合对中间思路的自我评估,模型可以实现全局最优解。
然而,目前的思维树在任务选择方面有相当大的局限性,需要针对每个任务进行特定的提示设计,这阻碍了它的广泛应用。
SoT是树形结构的另一种变体,它将问题分解为多个子问题,这些子问题可以并行处理,同时求解,从而加快推理速度。然而,它的作用仅限于并行可解问题,不适合复杂的推理任务。
3、图结构
与树相比,图会产生循环和环,从而带来更复杂的拓扑关系,并允许对更复杂的推理进行建模,如图2(f)所示。
GoT将中间思维视为图中的节点,结合了探索和回溯操作,与思维树相比,还引入了聚合和细化操作。
额外的聚合和细化操作能更好地完成复杂任务的推理。不过,它也面临着与思维树相同的困境,即任务限制和通用性差。此外,它还增加了推理成本。
随着模型从线性链过渡到层次分明的树和错综复杂的图,思维的相互作用也变得越来越复杂,从而逐渐增强了解决复杂问题的能力。
四、COT如何进行增强?
COT增强方法包括五类,分别是结合验证和细化、问题分解、利用外部知识、投票排序以及提高效率。
1、结合验证与完善
思维链推理往往会出现误差,产生错误的推理步骤。
中间推理步骤的错误反过来又会引发一连串的错误。
结合验证来获取反馈,然后根据反馈改进推理过程,是减少这种现象的高效策略,这与人类的反思过程类似。
图3描述了验证和改进的概况。
VerifyCoT设计一种自然程序(NaturalProgram),作为一种演绎推理形式,允许模型产生精确的推理步骤,每个后续步骤都严格基于之前的步骤。
DIVERSE利用投票机制消除错误答案,然后对每个推理步骤进行独立的细粒度验证。
为了促进知识密集型任务,Verify-and-Edit结合外部知识,对不确定的例子进行重新推理,从而减少了再分析中的事实错误。
不一致性是推理中的另一大挑战,可以反复使用之前的推理结果作为提示,直到模型给出一致的答案。例如,训练一个批评者模型,为推理过程提供结构化反馈。
Self-Refine进行迭代式自我反馈和改进,以减少推理中的错误。
Reflexion引入反思强化学习,进一步提高了决策能力。
RCoT根据推理链重构问题,其与原始问题的不一致性暴露了推理过程中的错误。
FOBAR和自我验证通过从答案中推导出问题中的条件来进行验证。
不过,LLM推理是一个无监督的过程,在这个过程中,来自中间推理步骤的反馈信号对改进推理起着至关重要的作用。反馈信号的指导可以有效减少推理中的幻觉现象。如何获取适当的反馈并根据反馈做出准确的推理还有很大的研究空间。
2、问题分解
思维链推理的精髓在于逐步解决问题。然而,最初的思维链推理方法并没有明确剥离逐步推理的过程,仍然使用单步生成法。
从模型中迭代获取知识边缘,在多跳QA方面有帮助。
“从最少到最多的提示”(Least-to-MostPrompting)最初以自上而下的方式将问题分解为多个子问题,随后每次解决一个子问题,并利用其解决方案来促进后续子问题的解决。
SuccessivePrompting采用子问题和答案交错分解的方法,而不是两阶段分解的方法。上述方法没有为各种子问题制定量身定制的解决方案。
DecomposedPrompt-ing设计一个模块化共享库,每个库专门用于一类子问题,可以为不同类别的子问题量身定制更有效的解决方案。
除了一般任务,一些研究还关注表格推理中的问题解码。
BINDER以神经符号方式将推理映射到程序中,并通过Python或SQL等程序执行器获得最终结果。
DATER将大表分解成小表,将复杂问题分解成简单问题。前者减少了无关信息,后者则降低了推理的复杂性。
为复杂问题提供直接答案是一项挑战。通过将问题分解成简单的子问题并逐步解决,可以降低推理的难度。
此外,每个子问题都可以追溯到特定的推理步骤,从而使推理过程更加透明,更容易解释。
目前的工作大多采用自上而下的分解策略,而基于逆向推理的自下而上的分解策略仍有待在今后的工作中探索。
3、结合外部知识
模型内部的参数化知识是有限和过时的。因此,在面对知识密集型任务时,会出现一些事实性错误。引入外部知识可以缓解这种现象,如图5所示。
在提示中引入多语言词汇,以增强机器翻译能力。
提出知识链(CoK-Li),通过查询生成器从知识库中获取结构化知识,从而执行知识引导的推理,或者从知识库中检索结构化知识。
估计推理链的事实性和忠实性,并提示模型重新思考不可靠的推理,从而减少CoK-Li中的知识检索错误。
KD-CoT通过多轮质量保证方法解决事实推理问题。设计一种反馈增强型检索器,用于在每一轮质量保证中检索相关外部知识,以校准推理过程。
使用模型自身的记忆作为外部知识。例如,”思维记忆”(Memory-of-Thought)首先进行预思考,将高置信度的思维保存到外部记忆中,然后在推理过程中让LLM调用相关记忆来帮助推理。
该模型中的参数化知识在预训练结束时是固定的,这导致其在知识容量和知识更新方面存在缺陷。虽然引入外部知识可以在一定程度上缓解这一问题,但仍然是一个不完善的解决方案。
4、投票和排序
由于生成过程中固有的随机性,LLM推理表现出随机性和不确定性。
如图6所示,这一问题可以通过多种抽样策略得到有效缓解。
有些方法采用排序法,通过排序训练验证者选择高置信度的推理链。同时,其他方法通过投票机制选择推理链。
自我一致性通过在基于最终答案的同类推理链中进行多数投票来选择最一致的答案。
复杂CoT利用基于复杂性的投票机制,倾向于选择由更复杂的推理链产生的答案。然而,基于答案的投票机制并不考虑推理链的正确性。
在投票时考虑推理步骤,从而可以同时获得一致的答案和可信的推理过程。
为了考虑各推理链中间步骤之间的关系,混合各推理链之间的信息,并选择最相关的事实对多个推理链进行元推理。
从集合学习中汲取灵感,利用多重抽样进行投票和排序的做法有助于减少不确定性。
5、效率
LLM推理和人工标注推理链带来了昂贵的开销。在这方面,出现了一些围绕效率的工作,例如:
通过动态调整样本数量改进自洽性,从而在性能边际下降的情况下显著降低了推理成本。
对问题进行并行处理,从而减少推理时间。但它无法处理复杂的问题。
借鉴主动学习的思想,对具有高度不确定性的示例进行注释,从而降低了人工注释成本。
总结
本文主要介绍了《A Survey of Chain of Thought Reasoning: Advances, Frontiers and Future》这一工作。
该工作对COT的前沿研究进行了广泛调查,对该领域进行了全面回顾。其中涉及到的一些关于COT的
参考文献
1、 github.com/zchuz/CoT-Reasoning-Survey
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。