赞
踩
夕小瑶科技说 原创
编译 | 谢年年
大语言模型LLM被视为一个巨大的知识库,它可以根据你提出问题或陈述的方式来提供答案。就像人类可能会根据问题的不同提供不同的答案一样,LLM也可以根据输入的不同给出不同的答案。因此,你的问题或陈述方式就显得非常重要。
如何引导大语言模型给出更恰当的答案,是最近研究的热点。经常用到的方法如让大模型扮演一个角色,或是给出几个示例都可以引导大模型给出更好的答案。除此之外还有一直以来很火热的思维链的方法也是值得尝试的。
在这篇文章中,我们总结了各种增强LLM推理的提示工程框架,包括:
Chain-of-Thought[1]
Chain-of-Thought-Self-Consistency[2]
Tree-of-Thoughts[3]
Graph-of-Thoughts[4]
Algorithm-of-Thoughts[5]
Skeleton-of-Thought[6]
Program-of-Thoughts[7]
一起来看看吧~
与其直接输出答案,不如为语言模型提供中间推理示例来指导其响应。
思维链(CoT) 被认为最具开拓性和影响力的提示工程技术之一,它可以增强大型语言模型在决策过程中的表现。
与传统的提示方法强调直接的输入和输出互动不同,CoT迫使模型将推理过程划分为中间步骤。这种方法类似于人类的认知过程,将复杂的挑战分解为更小、更易于管理的部分。
如上图中的例子,对于一个数学问题:“罗杰拥有5个网球,随后购买了2罐网球,每个罐含有3个球。他现在拥有多少个网球?”我们可以通过逐步分析来解答这个问题。
首先,罗杰最初有5个球。
然后,他购买了2罐网球,每个罐子里有3个球,所以总共有6个球。
将这些值相加,5+6,得到11个球。
通过这种逐步分析推理的方式,我们无需额外的训练数据或修改模型的操作,就可以提高模型的准确性。
构建多个思维链,对每个思维链进行评估,最终选择最有效、最连贯的思维链。
思维链自洽性是对CoT思想的延续。这种方法在响应查询时启动多个并发推理路径,并在最终确定答案之前应用加权机制。这种方法类似于传统机器学习中的集成技术,适用于大型语言模型中的思维序列。
以树状形式展开思维链。允许回溯,探索从一个基本想法产生的多个推理分支。
思维树(ToT) 是一种通过将复杂问题分解为更易于解决的小问题,为LLM推理提供了一个更结构化的提示框架。
与在链中推理的CoT不同,ToT以树的形式组织其解决问题的策略。每个节点都被称为“思维”,是一个连贯的语言序列,是通往最终答案的一步。
通过将问题划分为离散的“思想”单元——从填字游戏中的一系列简短单词到数学方程的一个组成部分——ToT确保问题的每个阶段都得到系统的解决。
ToT的优势在于其有条不紊的组织。首先,系统会将一个问题分解,并生成一个潜在推理步骤或“思维”候选者的列表。然后,对这些想法进行评估,系统会衡量每个想法产生所需解决方案的可能性。
为了帮助模型识别最有效的思维序列,系统使用了常用的搜索算法,比如广度优先搜索(BFS)和深度优先搜索(DFS)。
ToT的重要性在于它的整体设计、适应性和效率都很高。其中,思维链提示是ToT框架中的一个特定实例。它的模块化性质意味着各个组件可以独立运行,包括问题的初始分解和所使用的搜索算法。
将树结构演化为直接非循环图,引入了自我循环。自我循环可以巩固一条特定的思路,也可以将多个想法聚合成一个连贯的思路。
思维图(GoT)框架是CoT和ToT方法的更进一步。
GoT框架的核心是将思想概念化为有向无循环图(DAG)中的顶点。
在这种情况下,每个顶点都对应于输入刺激引发的特定想法或解决方案,无论是初步的、中间的还是最终的。
图中的有向边描述了这些思想之间的相互依存关系。具体地说,如果一条边从思维t1延伸到t2,则表示t2是基于t1构思的。
这种系统化允许思想的多样性,因为节点可以分为不同的类别,如“计划”或“结果”。
GoT的新颖之处在于它能够对这些想法进行转换,进一步完善推理过程。主要的转变包括
聚合,即将几个想法融合成一个统一的想法;
精化,对单个思想进行连续迭代,以提高其精度;
生成,有利于从现有思想中产生新的思想。
这种转换强调推理路线的融合,相对于之前的CoT或ToT模型,提供了更复杂的观点。
此外,GoT引入了一个评估维度,通过评分和排名来对每个单独的想法进行评估。每个想法都由顶点表示,并根据其相关性和质量进行评估。
评估过程中,考虑了整个推理链,并分配了可能与图中其他顶点相关的分数。
这个框架还允许系统根据分数对这些想法进行分级,这对于确定哪些想法值得优先考虑或实施非常有用。
维护单个不断发展的上下文链,消除了对思维树中冗余查询的需求。它探索了一条多变的推理之路。
ToT和GoT是通过基于搜索的机制来解决LLM推理的挑战的。它们能够生成许多图形形式的推理路径。然而,这两种方法都非常依赖于大量的LLM查询。有时,单个问题的查询数量甚至可以达到数百个。这导致了计算效率的下降。
思维算法(AoT) 是一种创新的方法,它具有动态和可变的推理路径。AoT的核心思想是通过不断演化和改进思考过程,从而达到更好的推理结果。通过维持一个单一的不断发展的思维上下文链,AoT巩固了思想探索,提高了效率并减少了计算开销。这种方法的优势在于它能够灵活地适应不同的问题和情境,并且能够根据需要进行调整和优化。
除此之外,受“LLM遇到熟悉的新问题时,偶尔会求助于以前的解决方案”启发,AoT吸收了上下文中的例子,从经过时间考验的搜索算法中提取,如深度优先搜索(DFS)和广度优先搜索(BFS)。通过模拟算法行为,AoT强调了实现成功结果和从失败尝试中收集见解的重要性。
AoT包括四个主要组成部分:
1)将复杂问题分解为可理解的子问题,同时考虑它们的相互关系和单独解决的容易程度;
2)以连续和不间断的方式为这些子问题提出连贯的解决方案;
3)直观地评估每个解决方案或子问题的可行性,而不依赖于明确的外部提示;
4)根据上下文示例和算法指南,确定最有希望探索或回溯的路径。
通过使用AoT,我们可以更好地理解和解决复杂的问题,提高我们的思考能力和创造力。
首先生成一个答案蓝图,然后并行地充实细节,从而减少生成完整答案所需的时间。
思维框架(SoT)范式的独特设计主要是为了减少端到端生成延迟的挑战,而不是为了增强大型语言模型(LLM)的推理能力。
这种方法采用双阶段方法,首先制定答案的初步蓝图,然后进行全面扩展。
在最初的骨架阶段中,系统不会生成全面的响应,而是提示模型生成简洁的答案骨架。通过精心制作的骨架模板,这种缩写表达抓住了预期答案的核心元素,从而为下一阶段奠定了基础。
在接下来的扩展阶段中,LLM系统会对答案骨架中的每个组成部分进行放大。它利用点扩展提示模板,同时阐述骨架的每个片段。
这种二分法将生成过程分为两个步骤:首先是生成初步的骨架公式,然后是并行进行详细扩展。这种方法不仅可以加快响应生成的速度,还可以努力维护输出的一致性和准确性。
将问答背后的推理过程公式化为一个可执行程序,将程序解释器输出作为最终答案的一部分。
思维程序(PoT)是一种独特的LLM推理方法。它不仅仅是生成自然语言答案,而是要求创建一个可执行程序,可以在Python等程序解释器上运行,从而产生实际的结果。
与直接模型相比,这种方法强调将推理分解为顺序步骤,并将语义与变量相关联的能力。因此,PoT提供了一个更清晰、更具表达力和基础的答案推导模型,提高了准确性和理解力,尤其是对于需要进行数值计算的数学类型逻辑问题。
需要注意的是,PoT的程序执行不一定针对最终答案,而是可以作为最终答案的中间步骤的一部分。
在人工智能领域的不断发展中,思维链等结构化推理框架的出现极大地改变了我们对大型语言模型的认识和应用方式。它们代表了一种模型的转变,这种模型不仅可以提供信息反馈,还可以进行复杂的推理,类似于人类的思维过程,这些框架有着无限的潜力。
想象一下,一个人工智能不仅可以生成准确的答案,还可以生成强大的可编程解决方案,甚至能够可视化自己的思维过程,使得人工智能与人类的合作更加无缝。在未来,大型语言模型将成为解决问题、创造力和决策的重要伙伴,推动科技发生重大转变。
参考资料
[1]https://arxiv.org/abs/2201.11903往期精彩回顾
交流群
欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。