Prompting LLMs to Solve Complex Tasks: A Review

文章目录

    • 题目
    • 简介
    • 任务分解
    • 未来方向
    • 结论

题目

促使 LLM 解决复杂任务: 综述
在这里插入图片描述

论文地址:https://www.intjit.org/cms/journal/volume/29/1/291_3.pdf

简介

    大型语言模型 (LLM) 的最新趋势显而易见,这体现在大型科技公司的投资以及媒体和在线社区对 LLM 的广泛讨论和迷恋中。OpenAI 的 GPT 系列,尤其是 GPT-3 和 GPT-4 [OpenAI, 2023],因其先进的文本生成功能而成为头条新闻。微软等大公司已将 LLM 集成到其产品中,增强了 Bing 和 Office Suite 等应用程序的用户体验。我们还可以看到专注于 LLM 的学者人数激增,凸显了人们对该领域日益增长的兴趣 [Touvron et al, 2023a, Touvron et al, 2023b]。此外,媒体和在线社区对 LLM 的广泛讨论和迷恋凸显了它们的影响力以及公众对人工智能进步的兴趣。

    随着 LLM 如此受欢迎,并且 LLM 在各种下游任务中展示了其能力,如何利用 LLM 来解决复杂任务成为一个重要问题。其中,提示工程是与 LLM 互动的最直接、最有效的方式 [Liu et al, 2023b, Qiao et al, 2022]。通过制作精确清晰的提示,用户可以向 LLM 提供更好的指示,确保更准确、更符合语境的答案。这种做法不仅有助于控制 LLM 输出的语气和风格,使其适合不同的目的和受众,而且还减少了歧义,从而实现更直接、更高效的交互。因此,提示工程是充分利用 LLM 潜力的关键工具,确保他们的回答尽可能有益和相关。

    与 LLM 合作时,思路链提示 (CoT) [Wei et al, 2022] 涉及将复杂问题分解为一系列逻辑步骤,类似于人类思考问题的方式。这种方法很重要,因为它增强了 LLM 处理复杂多步骤推理任务的能力。例如,在解决数学问题时,模型首先识别相关信息,然后依次应用数学运算,清晰地阐明每个步骤,然后得出最终答案。同样,在关于因果关系的推理任务中为了达到这一目的,该模型在得出结论之前会系统地评估场景的各个方面。通过这样做,CoT 不仅使模型的推理过程更加透明,而且显著提高了其解决问题的准确性。

    受到 CoT 简单而强大的启发,我们希望进一步深入研究将任务分解为提示中的子任务的方法,以使 LLM 能够解决复杂任务。在本文中,我们首先回顾了现有的方法,这些方法也侧重于提示 LLM 解决问题。然后,我们提出了进一步改进的可能方向。我们希望这项调查可以引导感兴趣的研究人员对复杂任务进行快速工程设计,并提高对该领域进一步建设的兴趣。第 2 节将总结当前的论文,这些论文将复杂任务分解为提示中的子任务,以指导 LLM 解决问题。讨论了两种类型的方法及其区别,即迭代分解和计划然后执行分解。第 3 节讨论了当前方法的缺点,以及分层分解如何潜在地促使 LLM 更好地解决复杂任务。

任务分解

    将复杂任务分解为简单任务特别有用,因为如果不考虑推理步骤就无法立即解决该任务。在本节中,我们介绍了分解复杂任务的方法和有助于提高分解性能的辅助技术。迭代分解生成一个简单的子任务,执行操作以完成子任务,然后利用先前结果的知识重复此过程。在 [Press et al, 2022] 中,作者通过实证表明,即使 LLM 知道复杂问题所有所需子问题的真实答案,当要求它们直接回答复杂问题时,LLM 也常常是错误的。这一发现表明了将复杂任务分解为简单子任务对 LLM 的重要性。

    思路链提示 [Wei et al, 2022] 可以被认为是第一个尝试将任务分解为子任务序列的工作。通过向 LLM 展示一系列中间自然语言推理步骤,这些步骤最终导致提示中的输出,LLM 可以自然地模仿类似人类的问题解决过程。在这里,中间推理步骤可以被视为子任务,因为它们都是回答问题所必需的,并且它们按顺序连接以形成导致问题最终解决方案的子任务序列。研究人员甚至发现,只需在提示中添加“让我们一步一步思考。”就可以引导 LLM 执行思路链分解 [Kojima et al, 2022]。上述两项工作隐含地遵循迭代分解,因为 LLM 以自回归的方式生成 token,可以表述为:在这里插入图片描述

    我们可以看到,在生成 xt 时它是一个条件概率,这意味着它们可以根据之前的内容决定下一个子任务。 还有一些方法明确指示 LLM 采用迭代分解策略。 DecomP [Khot et al, 2022] 和 Successive Prompting [Dua et al, 2022] 代表了两种当代技术,它们采用重复提问的方法来收集涉及问答任务的背景信息。 模型回答的每个子问题都是一个要完成的子任务。 与可能在单个输出中顺序生成子问题的 CoT 相比,这两种方法明确指导 LLM 在此过程中生成后续问题。 实证结果表明,明确指示 LLM 分解复杂任务优于依赖 LLM 自己进行的隐式分解。

    单步分解,与迭代分解不同,单步分解方法仅使用一个提示将任务分解为较小的任务。例如,[Zhou et al, 2022] 中提到的从最少到最多提示法,对于 LLM 只需要两个提示:一个用于制定将主要任务分解为较小步骤的计划,另一个用于执行这些步骤。[Wang et al, 2023a] 中描述的计划和解决提示技术通过将计划和执行阶段合并为一个响应来提高从最少到最多提示的效率。DEPS [Wang et al, 2023b] 和 GITM [Zhu et al, 2023] 是针对游戏 Minecraft 的专门分解策略,Minecraft 是一款沙盒游戏,玩家可以在其中创建各种物品和工具。在这个游戏中,收集基本材料被视为构建所需物品所需的一系列子任务。 DEPS 制定了获取所需物品的顺序计划,而 GITM 则提示 LLM 将任务分解为子任务树结构。

    与 DecomP 和连续提示等方法相比,单步分解方法更省时,因为它减少了 LLM 所需的提示数量。尽管如此,DecomP 和连续提示提供了更大的适应性,允许根据前一个子任务的结果定制下一个子任务,而一次性分解方法中的计划保持不变。单步分解更适合子任务限制在相对较窄范围内的任务。例如,在 Minecraft 中,任务和先决条件之间的复杂性和相互联系比知识密集型问答更直接。这种简单性使通过一次性分解生成的计划具有更高的准确性。最终,在效率和精度之间进行选择取决于手头任务的具体性质。

    外部分解,上述类别都依赖于 LLM 的知识将任务分解为更小的子任务。然而,正如文献所指出的那样,它们面临着幻觉问题的挑战 [Ji et al, 2023]。有时,这些方法会生成看似合理但缺乏坚实现实基础的子任务。为了确保分解过程的精确性,LLM+P [Liu et al, 2023a] 和 SayPlan [Rana et al, 2023] 采用了不同的方法,整合了经典规划技术。他们使用 LLM 将用自然语言表达的任务转换为经典规划器使用的领域特定语言。这使经典规划器能够更有效地处理任务。规划器产生的结果随后由 LLM 翻译回自然语言。

    子任务预定义,从受限池中选择潜在子任务具有制定更精确、更高效的子任务序列的优势。这种方法有助于防止 LLM 因不相关或错误的子任务而偏离正轨。PEARL [Sun et al, 2023] 是专门为回答冗长文档中的问题而定制的。它采用了一组预定义的子任务,例如“定位 A 的定义”、“比较 A 和 B”和“总结 A”,LLM 可以从中选择有价值的子任务并将其组织成一个连贯的计划。同样,ProCoT [Deng et al, 2023] 建立了预定义的子任务,包括查询澄清、主题转换和谈判策略,专为对话系统设计。DecomP [Khot et al, 2022] 采用了不同的方法,从一系列子任务函数(如用于第 k 个字母连接的“split”和“merge”)中选择子任务。该方法在多种任务中进行了评估,包括涉及广泛上下文的任务、开放域问答和符号推理。同时,SayPlan [Rana et al, 2023] 是针对机器人规划任务量身定制的。给定任务指令,它使用语义搜索来识别整个 3D 场景图中的相关子图,作为规划环境。随后,LLM 仅根据此识别的子图制定计划。

未来方向

    当前提示大型语言模型 (LLM) 的方法通常涉及将最终任务拆分为顺序子任务或制定计划以同时执行所有步骤。但是,在处理复杂任务时,这种顺序方法可能会受到限制。该方法可能无法充分解决每个子任务的复杂性,尤其是在每个子任务本身都很复杂且多方面的情况下。因此,由于对这些复杂组件的分解不足,模型可能难以准确完成最终任务。相比之下,任务的层次分解(将每个子任务进一步分解为更小、更易于管理的部分)提供了更强大的解决方案。这种方法可以更深入、更详细地探索任务的每个方面,确保彻底理解和解决每个元素。例如,在复杂的问题解决场景中,子任务可能涉及多层推理或计算,每层都需要自己的特定方法。层次分解将使模型能够单独处理这些层,确保更全面、更准确地完成最终任务。这种方法不仅增强了 LLM 的解决问题能力,而且更紧密地反映了人类的认知过程,从而产生了合乎逻辑、结构良好且更可靠的解决方案。

结论

    本综述批判性地分析了各种分解方法在促使 LLM 解决复杂任务中的应用。我们已经看到,迭代、单步、外部和预定义子任务分解各自提供了独特的优点和局限性。我们的分析表明,虽然当前的方法可以提高 LLM 的解决问题能力,但仍有很大的改进空间。未来的研究应侧重于开发更先进的分层分解策略,以更好地模仿人类的认知过程并提供更细致入微、更可靠的解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

恋爱通信史之完整性

在前面的章节中,介绍了对通信消息的加密,可以保证保密性(机密性)。虽说中间人无法解密通信消息的内容,但是可以篡改通信的消息。在接受者视角来看,是无法识别通信消息是否被篡改。因此,必须引入一种机制,保…

Easyexcel(5-自定义列宽)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…

C#调用C++ DLL方法之C++/CLI(托管C++)

托管C与C/CLI前世今生 C/CLI (C/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展,它是为了与 .NET Framework 进行互操作而设计的。C/CLI 是 C 的一种方言,它引入了一些新的语法和关键字,以便更好地支持 .NET 类型和垃圾…

家庭智慧工程师:如何通过科技提升家居生活质量

在今天的数字化时代,家居生活已经不再只是简单的“住”的地方。随着物联网(IoT)、人工智能(AI)以及自动化技术的快速发展,越来越多的家庭开始拥抱智慧家居技术,将他们的家变得更加智能化、便捷和…

【Unity踩坑】出现d3d11问题导致编辑器崩溃

升级到Unity 6,有时出现下面这种D3D11的问题,会导致编辑器崩溃。 有人总结了这个问题的解决方法,可以做为参考: Failed to present D3D11 swapchain due to device reset/removed. List of Solutions - Unity Engine - Unity Dis…

CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

CSP/信奥赛C语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 …

SCTransNet验证测试

SCTransNet 是PRCV 2024、ICPR 2024 Track 1、ICPR 2024 Track 2 三项比赛冠军方案的 Baseline, 同时也是多个优胜算法的Baselines. Bilibili 视频分享 【工作分享】SCTransNet:面向红外弱小目标检测的空间 - 通道交叉 Transformer_哔哩哔哩_bilibili 极市平台 推文分享 …

【C++】继承(inheritance)

引入 假设我们有一个动物类 class Animal { public:int age;void eat() {std::cout << "吃东西&#xff01;" << std::endl;} };又想写一个狗类&#xff0c;它也有年龄&#xff0c;也会吃&#xff0c;除此之外还有种类 class Dog { public:const char…

ThinkPad t61p 作SMB服务器,打印服务器,pc ,android ,ipad利用此服务器互传文件

1.在t61p上安装win7 2,配置好smb 服务 3.再安装好打印驱动程序 4.pc与win7利用系统的网络互相发现,映射为硬盘使用。 5.android&#xff0c;ipad安装ES文件浏览器访问win7 共享文件夹&#xff0c;互传文件。 6.android手机安装FE文件浏览器&#xff0c;可以利用花生壳外网…

Vue.js基础——贼简单易懂!!(响应式 ref 和 reactive、v-on、v-show 和 v-if、v-for、v-bind)

Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它专门设计用于Web应用程序&#xff0c;并专注于视图层。Vue允许开发人员创建可重用的组件&#xff0c;并轻松管理状态和数据绑定。它还提供了一个虚拟DOM系统&#xff0c;用于高效地渲染和重新渲染组件。Vue以…

Hive基础面试-如何理解复用率的

1. 模型的复用率你们是怎么做的&#xff1f; 简单直白的说就是你的模型复用率如何&#xff0c;在业务方是否认可该模型&#xff0c;也是衡量模型建设的一个标准&#xff0c;复用率数&#xff1a;数仓模型涉及的核心是追求模型的复用和共享&#xff0c;引用系数越高&#xff0c;…

Excel - VLOOKUP函数将指定列替换为字典值

背景&#xff1a;在根据各种复杂的口径导出报表数据时&#xff0c;因为关联的表较多、数据量较大&#xff0c;一行数据往往会存在三个以上的字典数据。 为了保证导出数据的效率&#xff0c;博主选择了导出字典code值后&#xff0c;在Excel中处理匹配字典值。在查询百度之后&am…

鸿蒙学习笔记:初探UI开发

介绍了ArkUI相关内容&#xff0c;涵盖其基本概念&#xff0c;如组件、页面及二者作用。阐述了ArkUI主要特征&#xff0c;包括多态组件、多样布局等多方面能力。还讲解了声明式、类Web两种开发范式及适用场景。声明式开发范式从多维度提供UI能力&#xff0c;介绍了其基础能力、整…

OceanBase Shell开放内核运维接口,运维更便捷

DBA在日常业务中面临着繁琐的运维管理任务&#xff0c;亟需高效的工具和灵活的解决方案帮助他们简化操作、提升效率。因此&#xff0c;命令行操作和维护工具&#xff08;CLI工具&#xff09;&#xff0c;因其高效、灵活、可远程管理以及技术深度等特点&#xff0c;成为DBA和开发…

springboot配置https,并使用wss

学习链接 springboot如何将http转https 可借鉴的参考&#xff1a; springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证书)SpringBoot配置Https访问的详细步骤SpringBoot配置Https入门实践springboo…

高精度计算题目合集

高精度计算题目合集 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 1168&#xff1a;大整数加法 高精度加法原理&#xff1a; a&#xff0c;b&#xff0c;c 都可以用数组表示。这些都是基于c语言的算术运算符形成的运算。 c 3 ( c 1 c 2 ) % 10 c_3(c_1c_2)\%1…

Javaweb前端HTML css 整体布局

最后一个是线条颜色 盒子&#xff0c;整体还是300&#xff0c;400

测试人员--如何区分前端BUG和后端BUG

在软件测试中&#xff0c;发现一个BUG并不算难&#xff0c;但准确定位它的来源却常常让测试人员头疼。是前端页面的问题&#xff1f;还是后台服务的异常&#xff1f;如果搞错了方向&#xff0c;开发人员之间的沟通效率会大大降低&#xff0c;甚至导致问题久拖不决。 那么&#…

嵌入式:Flash的分类以及Jlink/J-flash的编程支持

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 常见的Flash大致可以分为以下大类&#xff1a; Serial Nor FlashSerial Nand FlashParallel Nor FlashParallel Nand FlashSerial EEPROM Serial Nor Flash 介绍 Se…

【Linux系统编程】第五十弹---构建高效单例模式线程池、详解线程安全与可重入性、解析死锁与避免策略,以及STL与智能指针的线程安全性探究

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、将日志加到线程池 1.1、Thread类 1.2、ThreadPool类 1.2.1、HandlerTask() 1.2.2、其他公有成员函数 1.3、主函数 2、…