LLM | 论文精读 | NeurIPS 2023 | SWIFTSAGE: 结合快思考与慢思考的生成智能体

论文标题:SWIFTSAGE: A Generative Agent with Fast and Slow Thinking for Complex Interactive Tasks

作者:Bill Yuchen Lin, Yicheng Fu, Karina Yang, Faeze Brahman, Shiyu Huang, Chandra Bhagavatula, Prithviraj Ammanabrolu, Yejin Choi, Xiang Ren

期刊:37th Conference on Neural Information Processing Systems (NeurIPS 2023)

DOI:10.1007/s11704-024-40231-1

email:yuhan.huang@whu.edu.cn

创作不易,恳请大家点赞收藏支持:)

---------------------------------------------------------------------------------------------------------------------------------

在人工智能领域,如何让智能体在复杂的互动任务中具备类似人类的推理和解决问题的能力是一个重大挑战。本文介绍了一种名为 SWIFTSAGE 的新型智能体框架,它灵感来自于人类认知的双重过程理论,通过结合行为克隆和大型语言模型(LLM)来提高任务完成的效率和效果。该框架由两个主要模块组成:SWIFT 模块(代表快速和直觉的思维)和 SAGE 模块(代表深思熟虑的推理)。

SWIFTSAGE 简介

SWIFTSAGE 的目标是通过结合快思与慢思两个模块,来实现复杂交互任务的高效解决。

  • SWIFT 模块:这是一个小型的编码-解码语言模型,通过模仿学习对其进行微调,用于模拟人类的直觉思维。它能够快速解码出下一个动作,适合简单且直接的任务。

  • SAGE 模块:使用类似于 GPT-4 的大型语言模型,模拟深度分析的推理过程。SAGE 模块分为两个阶段:规划阶段执行阶段。规划阶段负责生成高层次的任务建议,执行阶段则将这些建议转化为可执行的具体操作。

SWIFTSAGE 的创新之处在于使用启发式算法在这两个模块之间进行切换,以此来实现高效的任务执行。例如,SWIFT 模块在处理简单任务时快速出击,而当遇到复杂或意外情况时,系统会自动切换到 SAGE 模块进行深思熟虑的规划。

SWIFT 模块详细介绍

1. 模仿学习

SWIFT 模块是通过模仿学习来构建的智能体,旨在学习模仿各种训练场景中的“专家”或“神谕”智能体的行为。具体来说,模仿学习通过序列到序列(seq2seq)学习方式,让 SWIFT 模块能够在不同情境下生成相应的动作。

以往的方法,例如 TDT(Text Decision Transformer),通常只利用一跳历史(one-hop history)作为输入上下文,学习输出后续动作。虽然这种方法能够适应部分任务,但由于其动作历史上下文的限制,以及由于数据不平衡引起的有害偏差,导致表现存在一定局限性。

为了解决这些问题,SWIFT 模块采用了如下改进:

2. 扩展历史上下文及实际案例

我们将传统的一跳行为克隆(one-hop BC)扩展为多跳行为克隆(multi-hop BC),引入了一个滑动窗口机制来包含最近 K = 10 个动作的观测和奖励。除了最近的历史信息外,我们还包括了一个特殊字段,用于记录访问过的房间(且无重复)。这种方法的目标是为智能体提供更长的上下文,避免不必要的房间导航行为。

为了更好地理解 SWIFT 模块的运行机制,我们通过一个简单的案例来展示其模仿学习和多跳历史的使用。

案例描述:假设智能体的任务是“准备早餐”,其具体步骤包括从储物柜中取出盘子,从冰箱中取出鸡蛋,打开炉灶并煎鸡蛋,最后将煎好的鸡蛋装盘。

运行过程中的 Prompt:在这个任务中,SWIFT 模块需要处理多跳行为历史,以更好地理解任务的上下文和环境。以下是用于模仿学习的输入 Prompt 示例:

任务:准备早餐
时间:上一时间步
得分:上一时间步的得分
动作历史:[第 10 步动作 (+ 第 10 步奖励) -> 第 10 步观测, 第 9 步动作 (+ 第 9 步奖励) -> 第 9 步观测, ..., 第 1 步动作 (+ 第 1 步奖励) -> 第 1 步观测]
当前房间:厨房
物品库存:无
访问过的房间:{厨房, 储物柜, 冰箱}

在这个 Prompt 中,模型需要根据最近 10 步的动作历史(例如从储物柜取出盘子、打开冰箱等)以及当前的环境状态来预测下一个动作。例如,模型可能会选择“从冰箱中取出鸡蛋”作为下一个动作。

通过这种多跳历史的使用,SWIFT 模块可以综合考虑多个步骤的上下文,避免重复访问已经访问过的房间,优化任务的执行路径。

3. 平衡的模仿学习

为了避免因数据不平衡导致的偏差,在 seq2seq 学习中,我们对特定类型的任务和动作进行了下采样,以实现更平衡的训练数据集。最终,使用了具有 7.7 亿参数的 T5-large 模型,该模型具有指令跟随能力,构建了一个名为 SWIFT 的高效代理。尽管 SWIFT 模块的参数量仅为 TDT 的 1/15,但其表现却明显优于 TDT(11 亿参数),表现出了强大的模仿学习能力。

SAGE 模块详细介绍

1. 规划阶段

规划阶段,SAGE 模块通过向 LLM 提问来制定高层次计划。这些提问的目的是帮助智能体了解当前环境、任务要求以及潜在的挑战。具体包括五个关键问题:

  • Q1: 定位物体 (Locate Objects)

    • 问题:为了完成任务,我需要收集哪些物品?请逐一列出它们及其可能的位置。

    • 解释:这一问题帮助模型确定任务中涉及的所有物体,以及它们在环境中的可能位置。这是任务规划的基础,因为了解需要收集的物体可以帮助模型制定更好的执行计划。

  • Q2: 跟踪物体 (Track Objects)

    • 问题:是否有尚未收集的物体?

    • 解释:通过跟踪物体,模型能够判断当前任务的进展情况,确保所有必需的物体都已准备好,从而避免遗漏重要步骤。

  • Q3: 规划子目标 (Plan Subgoals)

    • 问题:为了最有效地完成任务,重要的子目标是什么?请逐一列出。

    • 解释:将复杂任务分解为多个子目标可以提高任务的可执行性。通过逐步实现每个子目标,模型能够更好地管理任务的复杂性。

  • Q4: 跟踪进度 (Track Progress)

    • 问题:根据这些子目标,我已经完成了哪些?我现在应该集中在哪个子目标上?

    • 解释:这一问题帮助模型跟踪任务的进展,明确哪些子目标已经完成,并指导模型集中精力完成接下来的子目标。

  • Q5: 处理异常 (Handle Exceptions)

    • 问题:我是否犯了任何错误,可能会妨碍我有效完成下一个子目标?如果有,我应该如何修复?

    • 解释:这一问题用于处理任务执行过程中可能出现的错误或异常情况,确保模型能够及时修正错误,从而避免任务失败。

实际运行中的 Prompt 示例

假设智能体的任务是“清理厨房”,模型需要根据环境状态回答上述五个问题。以下是一个完整的 prompt 示例:

任务:清理厨房
时间:当前时间步 t
得分:当前得分 S(t)
动作历史:[第 5 步动作 (+ 第 5 步奖励) -> 第 5 步观测, 第 4 步动作 (+ 第 4 步奖励) -> 第 4 步观测, ..., 第 1 步动作 (+ 第 1 步奖励) -> 第 1 步观测]
当前房间:厨房
物品库存:{扫帚, 垃圾袋}
访问过的房间:{厨房, 储物柜, 客厅}问题列表:
Q1: 为了完成清理厨房的任务,我需要收集哪些物品?
Q2: 是否有尚未收集的物体?
Q3: 为了最有效地完成清理厨房的任务,重要的子目标是什么?
Q4: 根据这些子目标,我已经完成了哪些?我现在应该集中在哪个子目标上?
Q5: 我是否犯了任何错误,可能会妨碍我有效完成下一个子目标?如果有,我应该如何修复?

在这个 prompt 中,SAGE 模块需要根据任务描述、当前的环境状态和动作历史,回答五个关键问题,从而制定一个高效的计划来完成清理厨房的任务。这样做有助于智能体更好地理解任务的整体情况,并进行合理的任务规划。

这些问题被设计为一个单一的 prompt,一次性提供给 LLM,确保 LLM 可以在综合考虑所有上下文信息后给出详细的高层次任务建议。这种一次性询问的方式比逐步交互更为高效。

2. 执行阶段

执行阶段,规划阶段生成的高层次目标比较抽象,需要将其转化为具体的操作。为了实现这一点,执行阶段使用了一套事先定义好的标准化动作模板,例如:

  • POUR(X, Y):将物体 X 倒入容器 Y,例如“将红色油漆倒入木杯中”。

  • TELEPORT(room):直接移动到某个房间,例如“TELEPORT(kitchen)”表示移动到厨房。

  • PICK(object):拾取某个物品并放入背包,例如“PICK(egg)”表示捡起鸡蛋。

  • OPEN(object):打开某个物体,例如“OPEN(freezer)”表示打开冰柜。

  • ACTIVATE(object):激活/打开某个物体,例如“ACTIVATE(stove)”表示打开灶台。

  • DEACTIVATE(object):关闭某个物体,例如“DEACTIVATE(light)”表示关闭灯光。

  • EXAMINE(object):仔细查看某个物体,例如“EXAMINE(light bulb)”表示检查灯泡。

  • MOVE(object, place):将某个物体移动到指定位置,例如“MOVE(pan, stove)”表示将平底锅移动到灶台上。

这些标准化动作模板使得模型能够将规划阶段的子目标转换为可直接执行的具体动作序列,并将这些动作存储在一个“动作缓冲区”中(称为 B = {Ât, Ât+1, ...}),这样模型可以一次性执行多个具体动作,减少了与 LLM 的交互频率,从而提高了执行效率。

SWIFT 与 SAGE 的集成

SWIFTSAGE 通过启发式算法有效地集成了 SWIFT 和 SAGE 两个模块。通常,SWIFT 模块因其快速的直觉推理能力,适合在任务初期进行高效探索,而当遇到以下几种情况时会切换到 SAGE 模块:

  • 卡住:连续多步没有获得奖励。

  • 无效:SWIFT 的预测动作在当前环境中无效。

  • 关键决策:例如需要给出实验结果的最终答案。

  • 意外情况:执行动作的观察结果与预期不符。

通过这种方式,SWIFTSAGE 能够在需要时无缝切换到深度规划模式,并在任务缓解后切换回快速反应模式,以实现更高效的任务解决。

评估与对比

在 30 项来自 ScienceWorld 基准测试的任务中,SWIFTSAGE 的表现显著优于其他方法,平均得分达到 84.7。相比之下,其他基准方法(如 SAYCAN、REACT 和 REFLEXION)的得分分别为 33.8、36.4 和 45.3。

  • 整体表现:SWIFTSAGE 在所有类型的任务(短、中、长)中表现出色,尤其是在较长和复杂任务中的表现尤为突出。

  • 有效性和效率:与基于 LLM 的其他方法相比,SWIFTSAGE 在推理过程中需要更少的计算资源。SAGE 模块通过一次生成多个动作,减少了 LLM 的调用次数,使得整个过程更加经济高效。

  • 异常处理:SWIFTSAGE 能够有效应对任务中的异常情况,例如在遇到故障设备时会重新规划,而不像其他方法一样陷入重复无效操作。

结论

SWIFTSAGE 通过结合 SWIFT 和 SAGE 两个模块,成功实现了复杂任务中的快速反应与深思熟虑的深度推理。这种结合了快思与慢思的框架为复杂交互任务提供了一种高效且具成本效益的解决方案,并展示了在任务解决效率和效果上的显著提升。SWIFTSAGE 的成功展示了结合小型语言模型和大型语言模型在复杂推理任务中的潜力,小型模型擅长识别特定模式,大型模型具有零样本泛化能力。然而,其评估环境仅限于模拟器,无法完全代表现实场景,且缺乏安全措施。未来需要开发更开放的环境、探索其在其他领域的泛化性,并研究更轻量的方法和智能切换机制。

未来的研究方向包括将 SWIFTSAGE 应用到更开放和复杂的环境中,并探索如何更好地在真实世界的物理环境中执行其生成的计划。结合小型语言模型的快速反应与大型语言模型的深度规划,SWIFTSAGE 为构建更通用的人工智能体提供了一个重要的方向。

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

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

相关文章

【Vue3】第二篇

Vue3学习第二篇 01. 事件处理02. 事件传参03. 事件修饰符04. 数组变化侦测05. 计算属性06. class绑定07. style绑定08. 侦听器09. 表单输入绑定10. 模板引用 01. 事件处理 在vue当中的事件处理和html、css中的不一样,它单独做了处理。 注意:用法中只是用…

【Android】浅析OkHttp(1)

【Android】浅析OkHttp(1) OkHttp 是一个高效、轻量级的 HTTP 客户端库,主要用于 Android 和 Java 应用开发。它不仅支持同步和异步的 HTTP 请求,还支持许多高级功能,如连接池、透明的 GZIP 压缩、响应缓存、WebSocke…

JUC并发编程面试题总结

文章目录 1、创建线程的三种方式2、线程的状态3、线程的上下文切换4、run和start的区别5、sleep和wait区别6、虚假唤醒,精确唤醒7、两阶段终止模式8、多线程下的线程安全问题9、如何解决线程安全问题10、synchornized的原理11、锁升级的机制12、锁消除13、批量重偏向…

Unity编辑器制作多级下拉菜单

Unity编辑器下拉菜单 大家好,我是阿赵。   在Unity引擎里面编写工具插件,有时候会用到一些特殊的菜单形式,比如下拉选项。 通过下拉菜单,给用户选择不同的选项。   如果只是一层的下拉列表,可以用EditorGUILayout.…

C++二级题 计算好数:1数大于0数(二进制的位运算)

1、题目 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为好数。 例如: (13)10 (1101)2,其中1的个数为3,0的个数为1,则此数是好数; (10)10 (1…

Nginx upstream

什么是Nginx upstream? Nginx 模块一般分为三大类:handler、filter和upstream。 利用 handler、filter 这两个模块,可以使 Nginx 轻松完成任何单机工作。 upstream 模块将使 Nginx 跨越单机的限制,完成网络数据的接收、处理和转…

【数学二】常微分方程-一阶微分方程

考试要求 1、了解微分方程及其阶、解、通解、初始条件和特解等概念. 2、掌握变量可分离的微分方程及一-阶线性微分方程的解法,会解齐次微分方程. 3、会用降阶法解下列形式的微分方程: y ( n ) f ( x ) , y ′ ′ f ( x , y ′ ) y^{(n)}f(x),y^{}f(x,y^{}) y(n)f(x),y′′f(…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23目录1. Advancements in Visual Language Models for Remote Sensing: Datasets, Capabilities, and Enhancement Techniques摘…

git restore恢复删除文件

新版本 在 Git 2.23 版本之后,Git 引入了一个新的命令 git restore,用于简化文件恢复操作。可以用 git restore 来恢复误删除的文件。下面是详细的使用方法: 1. 恢复工作区中删除的文件(未提交) 如果文件已被删除&a…

对角双差速轮AGV平移、直行、转弯、原地旋转案例

在对角两对双差速轮 AGV(自动导引车)中,车辆配置了两对差速轮,分别安装在左前(Front Left,FL)和右后(Rear Right,RR)。这种配置使得 AGV 具有较高的机动性,可以实现平移、直行、转弯和原地旋转等复杂运动 2. 运动学模型 2.1 定义变量 车辆参数: r:车轮半径(米…

flask服务通过gunicorn启动

使用 Gunicorn 启动 Flask 服务通常可以提升 Flask 应用的性能。以下是通过 Gunicorn 启动 Flask 服务的步骤: 1. 安装依赖 首先,确保已安装 Flask 和 Gunicorn: pip install flask gunicorn2. 创建 Flask 应用 创建一个简单的 Flask 应用…

IPV6扩展头部

IPv6扩展头部(Extension Header)是一种用于在IPv6数据包中添加额外信息和功能的结构。与IPv4相比,IPv6的头部设计简化了基本头部,使其更灵活。扩展头部用于提供各种功能,如路由、分片、流量控制等。扩展头部的使用使得…

安全知识见闻-网络安全热门证书

一、OSCP(Offensive Security Certified Professional) 1. 证书介绍 2.考点 3.部分考试要求 4.练习方法 二、OSEP(Offensive Security Exploit Developer) 1.证书介绍 2.考点 3.练习方法 三、CISSP(Certified lnformation Systems Security Professional&a…

技术成神之路:二十三种设计模式(导航页)

设计原则/模式链接面向对象的六大设计原则技术成神之路:面向对象的六大设计原则创建型模式单例模式建造者模式原型模式工厂方法模式抽象工厂模式行为型模式策略模式状态模式责任链模式观察者模式备忘录模式迭代器模式模板方法模式访问者模式中介者模式命令模式解释器…

【已解决,含泪总结】非root权限在服务器上配置python和torch环境,代码最终成功训练(一)

配置Python环境 没有root权限服务器上有多个python环境但没有自己想要的怎么办 之前跑别的实验的时候改过指定的python3.7版本,但是居然我过了一段时间之后,再次打开,python版本居然又回到2.7(服务器/usr/下的默认python版本&am…

什么是AI神经网络?

文章目录 神经网络的基本概念如何工作?训练过程应用实例未来展望推荐阅读文章 在当今的科技时代,人工智能(AI)已经深入到我们生活的各个方面,而神经网络则是推动这一发展的重要技术之一。无论是在图像识别、自然语言处…

Zig 语言通用代码生成器:逻辑,冒烟测试版发布二

Zig 语言通用代码生成器:逻辑,冒烟测试版发布二 Zig 语言是一种新的系统编程语言,其生态位类同与 C,是前一段时间大热的 rust 语言的竞品。它某种意义上的确非常像 rust,尤其是在开发过程中无穷无尽抛错的过程&#x…

高等数学-宋浩版2.0-映射

映射:X,Y为非空集合,存在法则F,对X(原像)中每个元素X,按法则F,在Y中有唯一元素与之对应,F为x到Y(镜像)的映射。f:X->Y X原像,Y像,x定义域,Df,Rf &#x…

Mac book英特尔系列?M系列?两者有什么区别呢

众所周知,Mac book有M系列,搭载的是苹果自研的M芯片,也有着英特尔系列,搭载的是英特尔的处理器,虽然从 2020 年开始,苹果公司逐步推出了自家研发的 M 系列芯片,并逐渐将 MacBook 产品线过渡到 M…

python之多任务爬虫——线程、进程、协程的介绍与使用(16)

文章目录 1、什么是多任务?1.1 进程和线程的概念1.2 多线程与多进程的区别1.3 并发和并行2、python中的全局解释器锁3、多线程执行机制4、python中实现多线程(threading模块)4.1 模块介绍4.2 模块的使用5、python实现多进行程(Multiprocessing模块)5.1 导入模块5.2 模块的…