前言
今天想和大家分享一篇非常有趣的论文,题目是《Understanding the planning of LLM agents:A survey》。这篇论文系统地总结了目前大语言模型(LLM)在智能体规划方面的研究进展。随着ChatGPT等大语言模型的兴起,如何利用LLM来增强智能体的规划能力成为了一个热门的研究方向。
我们首先来看看什么是智能体的规划能力。简单来说,规划就是智能体根据当前环境和目标,生成一系列动作序列的过程。用数学语言来描述的话,可以表示为:
p = (a0, a1, …, at) = plan(E, g; Θ, P),其中E表示环境,g表示目标,Θ是LLM的参数,P是任务提示。
传统的规划方法主要有两类:基于符号的方法(如PDDL)和基于强化学习的方法。但这些方法都存在一些局限性。比如符号方法需要人工构建模型,而强化学习方法需要大量样本。
而LLM则为规划任务带来了新的可能性。LLM通过海量文本训练,展现出了强大的推理、工具使用、规划和指令遵循能力。那么,如何充分发挥LLM在规划方面的潜力呢?论文将现有的研究工作归纳为5个主要方向:
-
任务分解 (Task Decomposition)
-
多路径选择 (Multi-plan Selection)
-
外部规划器辅助 (External Planner-Aided Planning)
-
反思与优化 (Reflection and Refinement)
-
记忆增强规划 (Memory-Augmented Planning)
接下来,让我们逐一深入了解这5个研究方向。
任务分解
任务分解的核心思想是"分而治之"。对于复杂的任务,我们可以将其分解为多个简单的子任务,然后逐个规划解决。这个过程可以用下面的公式表示:
g0, g1, ..., gn = decompose(E, g; Θ, P)
pi = (ai0, ai1, ..., aim) = sub-plan(E, gi; Θ, P)
任务分解方法主要分为两类:分解优先和交错分解。
-
分解优先方法先将任务完全分解为子目标,然后再逐个规划。比如HuggingGPT就采用了这种方法,它首先将复杂的多模态任务分解为子任务,然后为每个子任务选择合适的模型来执行。
-
交错分解方法则是边分解边规划。Chain-of-Thought (CoT)和ReAct就属于这一类。CoT通过"Let’s think step by step"的提示,引导LLM一步步推理。而ReAct则交替进行推理(Thought)和行动(Action)。
为了更直观地理解这两种方法的区别,我们可以用下面的图来表示:
两种方法各有优缺点。分解优先方法能更好地把握整体任务,但灵活性较差。而交错分解方法则更灵活,但可能会偏离原始目标。
多路径选择
多路径选择方法的核心思想是"多多益善"。它鼓励LLM生成多个备选方案,然后从中选择最优的一个。这个过程可以表示为:
P = p1, p2, ..., pn = plan(E, g; Θ, P)
p* = select(E, g, P; Θ, F)
其中F表示搜索策略,比如树搜索算法。
一个典型的例子是Tree-of-Thought (ToT)方法。ToT首先生成多个思考路径,形成一个树结构,然后使用搜索算法(如BFS、DFS)来选择最佳路径。
让我们用一个简单的例子来说明ToT的工作原理。假设我们要解决"如何准备一次完美的野餐"这个问题:
ToT会生成多个这样的思考树,然后通过评估每个节点的质量,选择最佳的行动路径。
外部规划器辅助
虽然LLM具有强大的能力,但在处理某些特定领域的问题时,专门的规划器可能会更有效。外部规划器辅助方法就是结合LLM和传统规划器的优势。这个过程可以表示为:
h = formalize(E, g; Θ, P)
p = plan(E, g, h; Φ)
其中Φ表示外部规划器,h表示形式化的信息。
一个典型的例子是LLM+P方法。它首先使用LLM将自然语言描述的问题转化为PDDL(Planning Domain Definition Language)格式,然后使用专门的PDDL求解器来生成计划。
让我们用一个简单的例子来说明这个过程。假设我们有一个机器人需要完成搬运箱子的任务:
- LLM将自然语言任务转化为PDDL:
(define (problem box-moving)
(:domain robot-world)
(:objects
box1 box2 - box
room1 room2 - room
robot1 - robot)
(:init
(at robot1 room1)
(at box1 room1)
(at box2 room1))
(:goal
(and (at box1 room2)
(at box2 room2))))
- PDDL求解器生成计划:
1. (move robot1 room1 room2)
2. (move robot1 room2 room1)
3. (pick robot1 box1 room1)
4. (move robot1 room1 room2)
5. (drop robot1 box1 room2)
6. (move robot1 room2 room1)
7. (pick robot1 box2 room1)
8. (move robot1 room1 room2)
9. (drop robot1 box2 room2)
这种方法结合了LLM的语言理解能力和专门规划器的高效性,特别适合处理具有明确约束的任务。
反思与优化
反思与优化方法的核心思想是"失败乃成功之母"。它鼓励LLM在执行失败后进行反思,并优化原有计划。这个过程可以表示为:
p0 = plan(E, g; Θ, P)
ri = reflect(E, g, pi; Θ, P)
pi+1 = refine(E, g, pi, ri; Θ, P)
一个典型的例子是Reflexion方法。它在ReAct的基础上增加了一个评估器,当检测到错误时,LLM会生成自我反思,帮助纠正错误。
让我们用一个具体的例子来说明这个过程。假设我们要求LLM Agent完成一道数学题:
问题:一个长方形的长是8米,宽是6米,求它的面积。
初始计划 p0:
确定长方形的长:8米
确定长方形的宽:6米
使用公式:面积 = 长 + 宽
计算:8 + 6 = 14
得出结果:面积是14平方米
执行结果:错误
反思 r1:我犯了一个计算错误。长方形的面积应该用乘法计算,而不是加法。我需要修改计算步骤。
优化计划 p1:
确定长方形的长:8米
确定长方形的宽:6米
使用公式:面积 = 长 * 宽
计算:8 * 6 = 48
得出结果:面积是48平方米
执行结果:正确
通过这种反思和优化的过程,LLM Agent能够不断提高自己的规划能力。
记忆增强规划
记忆增强规划方法的核心思想是"温故而知新"。它通过为LLM增加额外的记忆模块,存储有价值的信息(如常识知识、过往经验等),在规划时提供辅助信息。这个过程可以表示为:
m = retrieve(E, g; M)
p = plan(E, g, m; Θ, P)
,其中M表示记忆模块。
记忆增强方法主要分为两类:基于RAG(Retrieval-Augmented Generation)的方法和基于微调的方法。
-
基于RAG的方法将记忆存储在外部数据库中,在规划时根据相关性检索。
-
而基于微调的方法则是将经验样本用于微调LLM,将记忆直接嵌入到模型参数中。
让我们用一个简单的例子来说明这两种方法的区别,假设我们要教会LLM Agent如何泡一杯完美的咖啡。
基于RAG的方法:
-
在外部数据库中存储各种咖啡制作方法和技巧
-
当收到泡咖啡的任务时,检索相关的信息
-
根据检索到的信息生成泡咖啡的计划
基于微调的方法:
-
收集大量泡咖啡的成功经验
-
用这些经验微调LLM
-
微调后的LLM在收到泡咖啡任务时,可以直接生成计划
两种方法各有优缺点。RAG方法更灵活,可以实时更新知识,但依赖于检索算法的准确性。微调方法可以更好地融合知识,但更新成本高,且难以保留细粒度的信息。
总结与展望
通过以上5个方向的探索,研究者们极大地提升了LLM Agent的规划能力。但仍然存在一些挑战,比如:
-
幻觉问题:LLM可能会生成不合理或不存在的计划。
-
生成计划的可行性:LLM可能会忽视一些重要的前提条件。
-
生成计划的效率:如何生成更高效的计划仍是一个挑战。
-
多模态环境反馈:如何处理图像、音频等非文本反馈。
-
细粒度评估:现有的评估方法往往过于粗糙。
为了更直观地理解这些挑战和未来的研究方向,我们可以用下面的图来表示:
最后,让我们来看一下论文中的一些实验结果。作者在4个基准任务上评估了6种基于提示的方法,结果如下表所示:
方法 | ALFWorld | ScienceWorld | HotPotQA | FEVER |
---|---|---|---|---|
ZeroShot-CoT | N/A | N/A | 0.01 | 0.39 |
FewShot-CoT | 0.43 | 16.58 | 0.32 | 0.61 |
CoT-SC | 0.57 | 15.24 | 0.33 | 0.62 |
SayCan | 0.60 | 12.36 | N/A | N/A |
ReAct | 0.57 | 15.05 | 0.34 | 0.63 |
Reflexion | 0.71 | 19.39 | 0.39 | 0.68 |
从结果可以看出:
-
反思机制(Reflexion)在大多数任务上表现最好,说明反思确实能提高规划能力。
-
零样本方法(ZeroShot-CoT)在复杂任务上表现不佳,说明对于复杂任务,提供一些示例或额外信息是很有必要的。
-
任务的复杂度对方法的表现影响很大。例如,在相对简单的FEVER任务上,各方法的表现差异不大,而在复杂的ALFWorld和ScienceWorld任务上,差异就很明显。
-
消耗的计算资源与性能往往成正比。例如,Reflexion方法虽然性能最好,但它的token消耗也是最多的。这提示我们在实际应用中需要权衡性能和成本。
这些实验结果为我们提供了很多有价值的洞察。它们不仅验证了各种方法的有效性,也为我们指明了未来研究的方向。现在,让我们用一个具体的案例来综合理解这些方法是如何在实际问题中应用的。
案例研究:智能家居助手
假设我们要开发一个智能家居助手,它需要帮助用户完成各种家务任务。让我们看看如何将上述方法应用到这个场景中。
- 任务分解:当用户说"我要举办一个生日派对"时,助手可能会这样分解任务:
确定宾客名单
准备食物和饮料
装饰房间
安排娱乐活动
准备礼物
- 多路径选择:对于"准备食物"这个子任务,助手可能会生成多个方案:
方案A:自己烹饪
方案B:订购外卖
方案C:找专业餐饮服务
然后根据用户的喜好、预算、时间等因素选择最佳方案。
外部规划器辅助:对于"安排娱乐活动"这个子任务,助手可能会调用专门的活动规划API,获取适合的游戏和活动建议。
反思与优化:假设助手最初建议的装饰方案是"用气球装饰",但执行时发现家里没有气球。这时,助手会反思并优化方案,比如"用彩纸和鲜花替代气球"。
记忆增强:助手会记住用户的偏好和往年的派对经验。比如,如果去年的巧克力蛋糕很受欢迎,今年可能会再次推荐。
通过这个案例,我们可以看到这些方法如何协同工作,共同提升LLM Agent的规划能力。
结语
我们深入了解了LLM Agent在规划能力方面的最新研究进展。从任务分解到记忆增强,每一种方法都为提升LLM的规划能力提供了独特的视角。这些方法不是相互排斥的,而是可以相互结合,形成更强大的规划系统。我们应该继续探索如何更好地利用LLM的潜力,同时也要注意到现有方法的局限性。例如,如何解决幻觉问题,如何更好地处理多模态输入,如何在保证性能的同时提高计算效率,这些都是值得我们深入研究的方向。
此外,我们还应该关注LLM Agent在实际应用中的伦理和安全问题。随着这些智能体变得越来越强大,如何确保它们的行为符合人类的价值观和伦理准则将变得至关重要。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。