一文总结提示工程框架,除了CoT还有ToT、GoT、AoT、SoT、PoT

news2024/9/26 5:24:58

夕小瑶科技说 原创
编译 | 谢年年

大语言模型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]

一起来看看吧~

大模型研究测试传送门

GPT-4传送门(免墙,可直接测试,遇浏览器警告点高级/继续访问即可):
https://gpt4test.com

Chain-of-Thought思维链

与其直接输出答案,不如为语言模型提供中间推理示例来指导其响应。

思维链(CoT) 被认为最具开拓性和影响力的提示工程技术之一,它可以增强大型语言模型在决策过程中的表现。

与传统的提示方法强调直接的输入和输出互动不同,CoT迫使模型将推理过程划分为中间步骤。这种方法类似于人类的认知过程,将复杂的挑战分解为更小、更易于管理的部分。

Chain-of-Thought Prompting, source: Wei et al. (2022)

▲Chain-of-Thought Prompting, source: Wei et al. (2022)

如上图中的例子,对于一个数学问题:“罗杰拥有5个网球,随后购买了2罐网球,每个罐含有3个球。他现在拥有多少个网球?”我们可以通过逐步分析来解答这个问题。

  1. 首先,罗杰最初有5个球。

  2. 然后,他购买了2罐网球,每个罐子里有3个球,所以总共有6个球。

  3. 将这些值相加,5+6,得到11个球。

通过这种逐步分析推理的方式,我们无需额外的训练数据或修改模型的操作,就可以提高模型的准确性。

Chain-of-Thought-Self-Consistency思维链自洽性

构建多个思维链,对每个思维链进行评估,最终选择最有效、最连贯的思维链。

思维链自洽性是对CoT思想的延续。这种方法在响应查询时启动多个并发推理路径,并在最终确定答案之前应用加权机制。这种方法类似于传统机器学习中的集成技术,适用于大型语言模型中的思维序列。

Tree-of-Thoughts思维树

以树状形式展开思维链。允许回溯,探索从一个基本想法产生的多个推理分支。

思维树(ToT) 是一种通过将复杂问题分解为更易于解决的小问题,为LLM推理提供了一个更结构化的提示框架。

与在链中推理的CoT不同,ToT以树的形式组织其解决问题的策略。每个节点都被称为“思维”,是一个连贯的语言序列,是通往最终答案的一步。

通过将问题划分为离散的“思想”单元——从填字游戏中的一系列简短单词到数学方程的一个组成部分——ToT确保问题的每个阶段都得到系统的解决。

ToT的优势在于其有条不紊的组织。首先,系统会将一个问题分解,并生成一个潜在推理步骤或“思维”候选者的列表。然后,对这些想法进行评估,系统会衡量每个想法产生所需解决方案的可能性。

为了帮助模型识别最有效的思维序列,系统使用了常用的搜索算法,比如广度优先搜索(BFS)和深度优先搜索(DFS)。

ToT的重要性在于它的整体设计、适应性和效率都很高。其中,思维链提示是ToT框架中的一个特定实例。它的模块化性质意味着各个组件可以独立运行,包括问题的初始分解和所使用的搜索算法。

Graph-of-Thoughts思维图谱(GoT)

将树结构演化为直接非循环图,引入了自我循环。自我循环可以巩固一条特定的思路,也可以将多个想法聚合成一个连贯的思路。

思维图(GoT)框架CoTToT方法的更进一步。

GoT框架的核心是将思想概念化为有向无循环图(DAG)中的顶点

在这种情况下,每个顶点都对应于输入刺激引发的特定想法解决方案,无论是初步的、中间的还是最终的。

图中的有向边描述了这些思想之间的相互依存关系。具体地说,如果一条边从思维t1延伸到t2,则表示t2是基于t1构思的。

这种系统化允许思想的多样性,因为节点可以分为不同的类别,如“计划”或“结果”。

Graph-of-Thoughts, source: Besta et al. (2023)

▲Graph-of-Thoughts, source: Besta et al. (2023)

GoT的新颖之处在于它能够对这些想法进行转换,进一步完善推理过程。 主要的转变包括

  • 聚合,即将几个想法融合成一个统一的想法;

  • 精化,对单个思想进行连续迭代,以提高其精度;

  • 生成,有利于从现有思想中产生新的思想。

这种转换强调推理路线的融合,相对于之前的CoT或ToT模型,提供了更复杂的观点。

此外,GoT引入了一个评估维度,通过评分和排名来对每个单独的想法进行评估。每个想法都由顶点表示,并根据其相关性和质量进行评估。

评估过程中,考虑了整个推理链,并分配了可能与图中其他顶点相关的分数。

这个框架还允许系统根据分数对这些想法进行分级,这对于确定哪些想法值得优先考虑或实施非常有用。

Algorithm-of-Thoughts思维算法(AoT)

维护单个不断发展的上下文链,消除了对思维树中冗余查询的需求。它探索了一条多变的推理之路。

ToT和GoT是通过基于搜索的机制来解决LLM推理的挑战的。它们能够生成许多图形形式的推理路径。然而,这两种方法都非常依赖于大量的LLM查询。有时,单个问题的查询数量甚至可以达到数百个。这导致了计算效率的下降。

Algorithm-of-Thoughts。每个盒子代表一个不同的想法。绿色是保留的链,而红色则是弃掉的链。注:ToT有多个路径,而AoT保持一个路径

▲Algorithm-of-Thoughts。每个盒子代表一个不同的想法。绿色是保留的链,而红色则是弃掉的链。注:ToT有多个路径,而AoT保持一个路径

思维算法(AoT) 是一种创新的方法,它具有动态和可变的推理路径。AoT的核心思想是通过不断演化和改进思考过程,从而达到更好的推理结果。通过维持一个单一的不断发展的思维上下文链,AoT巩固了思想探索,提高了效率并减少了计算开销。这种方法的优势在于它能够灵活地适应不同的问题和情境,并且能够根据需要进行调整和优化。

除此之外,受“LLM遇到熟悉的新问题时,偶尔会求助于以前的解决方案”启发,AoT吸收了上下文中的例子,从经过时间考验的搜索算法中提取,如深度优先搜索(DFS)和广度优先搜索(BFS)。通过模拟算法行为,AoT强调了实现成功结果和从失败尝试中收集见解的重要性。

AoT包括四个主要组成部分:

1)将复杂问题分解为可理解的子问题,同时考虑它们的相互关系和单独解决的容易程度;

2)以连续和不间断的方式为这些子问题提出连贯的解决方案;

3)直观地评估每个解决方案或子问题的可行性,而不依赖于明确的外部提示;

4)根据上下文示例和算法指南,确定最有希望探索或回溯的路径。

通过使用AoT,我们可以更好地理解和解决复杂的问题,提高我们的思考能力和创造力。

Skeleton-of-Thought思维框架(SoT)

首先生成一个答案蓝图,然后并行地充实细节,从而减少生成完整答案所需的时间。

思维框架(SoT)范式的独特设计主要是为了减少端到端生成延迟的挑战,而不是为了增强大型语言模型(LLM)的推理能力

这种方法采用双阶段方法,首先制定答案的初步蓝图,然后进行全面扩展。

在最初的骨架阶段中,系统不会生成全面的响应,而是提示模型生成简洁的答案骨架。通过精心制作的骨架模板,这种缩写表达抓住了预期答案的核心元素,从而为下一阶段奠定了基础。

在接下来的扩展阶段中,LLM系统会对答案骨架中的每个组成部分进行放大。它利用点扩展提示模板,同时阐述骨架的每个片段。

这种二分法将生成过程分为两个步骤:首先是生成初步的骨架公式,然后是并行进行详细扩展。这种方法不仅可以加快响应生成的速度,还可以努力维护输出的一致性和准确性。

Program-of-Thoughts 程序思维(PoT)

将问答背后的推理过程公式化为一个可执行程序,将程序解释器输出作为最终答案的一部分。

思维程序(PoT)是一种独特的LLM推理方法。它不仅仅是生成自然语言答案,而是要求创建一个可执行程序,可以在Python等程序解释器上运行,从而产生实际的结果。

与直接模型相比,这种方法强调将推理分解为顺序步骤,并将语义与变量相关联的能力。因此,PoT提供了一个更清晰、更具表达力和基础的答案推导模型,提高了准确性和理解力,尤其是对于需要进行数值计算的数学类型逻辑问题。

需要注意的是,PoT的程序执行不一定针对最终答案,而是可以作为最终答案的中间步骤的一部分。

Comparison between CoT and PoT

▲Comparison between CoT and PoT

结语

在人工智能领域的不断发展中,思维链等结构化推理框架的出现极大地改变了我们对大型语言模型的认识和应用方式。它们代表了一种模型的转变,这种模型不仅可以提供信息反馈,还可以进行复杂的推理,类似于人类的思维过程,这些框架有着无限的潜力。

想象一下,一个人工智能不仅可以生成准确的答案,还可以生成强大的可编程解决方案,甚至能够可视化自己的思维过程,使得人工智能与人类的合作更加无缝。在未来,大型语言模型将成为解决问题、创造力和决策的重要伙伴,推动科技发生重大转变。

参考资料

[1]https://arxiv.org/abs/2201.11903
[2]https://arxiv.org/abs/2203.11171
[3]https://arxiv.org/abs/2305.10601
[4]https://arxiv.org/abs/2308.09687
[5]https://arxiv.org/abs/2308.10379
[6]https://arxiv.org/abs/2307.15337
[7]https://arxiv.org/abs/2211.12588
[8]https://towardsdatascience.com/something-of-thought-in-llm-prompting-an-overview-of-structured-llm-reasoning-70302752b390

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频太大怎么压缩变小?把视频变小这样做

随着科技的不断发展,视频已经成为了我们日常生活中不可或缺的一部分,然而,有时候我们会遇到视频体积太大,无法上传或者传输的问题,那么,如何将过大的视频压缩变小呢?下面就给大家分享几个方法&a…

如何检测出鸡蛋壳上的裂缝(个人想法,正确性有待研究)

问题 老师在课上提出了一个项目,是关于如何通过某些方式来找出有裂缝的鸡蛋壳,但是鸡蛋壳上的裂缝非常小,问有什么办法处理。 想法 通过瞬间增大气压使得有裂缝的鸡蛋破裂。 具体实施 在图中,我们可以看到鸡蛋受外界气压的力&…

TS自动监视ts文件修改

当我们对ts文件进行编译后会生成js文件 当我们在ts文件中进行修改时,js文件并不会进行变化 那我们该如何监视ts文件中的变化呢?可以在控制台中输入如下命令: tsc 文件名.ts -w 这下在ts中代码改变就可以被监听(这里报错是因为同时…

【UML】类图详解

UML UML ——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用
于帮助软件开发人员进行思考和记录思路的结果 UML图有哪些 用例图静态结构图∶类图、对象图、包图、组件图、部署图动…

Python 搭建编程环境

一、搭建编程环境 1、下载python 官网:https://www.python.org 2、开始安装 下载安装版本,双击下载的安装包,如下: 步骤一: 步骤二: 步骤三: 安装完成后执行下面的操作,判断是否…

[移动通讯]【Carrier Aggregation-4】【LTE-5】

前言: 前面讲过通过能力上报,以及RRC Connection Reconfiguration 添加SCell,添加完成后,UE 处于Inactive 状态。 本章主要讨论一下 Inactive 状态Active 状态的切换. 3GPP TS 36.321 V11.1.0 section 6.1.3.8 "Activation/Deactivat…

使用Python抢购商品

使用Python抢购商品 前言准备工作安装selenium库下载ChromeDriver 编写抢购商品py脚本导入库selenium使用方法 示例代码淘宝网华为商城 前言 注意:示例代码仅供学习使用,禁止不正当盈利。 本文使用Python的selenium库通过Chrome浏览器来抢购商品。首先…

Vue3-初识Vue3、创建Vue3工程、vue3组合式API(setup、ref函数、reactive函数)、响应式原理、计算属性、监视属性

Vue3(1) 目录 Vue3(1)一、Vue3简介二、创建Vue3.0工程1、使用vue-cli创建2、使用vite创建 三、常用的Composition API(组合式API)1、拉开序幕的setup2、ref函数3、reactive函数4、Vue3中响应式原理&#xf…

Django:五、登录界面实现动态图片验证码

一、下载包 pip install pillow 二、代码 这是一个函数,无输入,返回两个值。一个值是图片,一个值是图片中的数字及字母。 需要注意:font_fileMonaco.ttf 是一个验证码字体文件,如有需要,可三连私信。 …

缓存之缓存简介

目录 一.缓存的作用二.缓存的使用1.适用缓存的数据场景2.读取缓存流程图 三.本地缓存和分布式缓存 一.缓存的作用 Java缓存技术是在应用程序和数据库之间的一种中间层,用于存储暂时性数据,尤其是读取频繁但更新较少的数据。它的作用是减轻应用程序和数据库之间的负担,提高应用程…

WhatsApp营销:避免封禁账号的关键策略

首先,我们需要明白,WhatsApp官方明确反对群发为,随时可能导致账号被封禁的风险存在。因此,我们应该避免避免群发,而更多地采用单一发单的方式。当找到目标客户后,应先仔细研究客户的主页,例如他…

VSCode 配置 Lua 开发环境(清晰明了)

概述 由于 AutoJS 学得已经差不多了,基本都会了,现在开始向其他游戏脚本框架进发, Lua 语言很强大,就不多说, 按键精灵、触动精灵等等都是用该语言编程脚本的,由于按键精灵、触动精灵 和 AutoJS 类似,不是…

基于SpringBoot的在线题库管理系统的设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

mysql odbc驱动安装

到官网下载对应版本的驱动包 可以选择对应版本,建议使用最新版本即可 查看powerDesigner对应的位数,位数对应不上的话,会找不到 powerDesigner 可以参考:powerDesigner安装 我这里装的是32位的 下载对应版本的即可 下载完成&a…

数据结构与算法基础-(1)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

代码审计——任意文件下载详解(二)

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 网站可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件&…

windows系统安装python教程,以及PyCharm安装,新手入门详细

最近需要给新电脑安装python,记录一下安装过程。 到python的官网进行下载:https://www.python.org/ 选择下载的系统,这边是Windows 然后选择最新的Release版本,点进去 然后滑到最下边,选择适合自己系统的,…

Mybatis 中 SQL 注入攻击的 3 种方式

SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少。往往对Java Web应用的多个框架组合而心生畏惧,不知如何下手,希望通过Mybatis框架使用不当导致的SQL注入问题为例&#xff…

基于Java自习室预订座位管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

卓越领先!安全狗入选2023年福建省互联网综合实力50强

近日,福建省互联网协会在2023年东南科技论坛——智能算力助力数字经济产业融合发展论坛上正式发布2023年福建省互联网综合实力前50家企业最终评定结果。 作为国内云原生安全领导厂商,安全狗凭借突出的竞争力和市场表现入选综合实力50强。 厦门服云信息科…