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.rhkb.cn/news/458284.html

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

相关文章

Python的协程与传统的线程相比,是否能更有效地利用计算资源?在多大程度上,这种效率是可测量的?如何量化Python协程的优势|协程|线程|性能优化

目录 1. 协程与线程的基本概念 1.1 线程 1.2 协程 2. 协程的实现原理 2.1 基本示例 3. 协程与线程的效率对比 3.1 资源利用率 3.2 性能测试 4. 使用场景分析 4.1 适用场景 4.2 不适用场景 5. 性能监测与测量 5.1 使用时间记录 5.2 使用第三方库 6. 总结与展望 P…

入门 | Prometheus+Grafana 普罗米修斯

#1024程序员节|征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 (1)、数据来源 数据来源,也就是需要监控的数据…

【认知智能】编译器1

深度学习编译器是一种专门设计用来优化和加速深度学习模型在各种硬件平台上执行的工具。它们通过将高级深度学习框架(如TensorFlow, PyTorch等)中的计算图转换为针对特定硬件架构优化过的低级代码来实现这一目标。基础架构通常包括以下几个关键组件&…

ML 系列:机器学习和深度学习的深层次总结(17)从样本空间到概率规则概率

一、说明 概率是支撑大部分统计分析的基本概念。从本质上讲,概率提供了一个框架,用于量化不确定性并对未来事件做出明智的预测。无论您是在掷骰子、预测天气还是评估金融市场的风险,概率都是帮助您驾驭不确定性的工具。本篇将讲授概率的原理和…

STM32 第17章 EXIT--外部中断/事件控制器

时间:2024.10.23 参考资料:《零死角玩转STM32》“EXTI-外部中断/事件控制器” STM32里每一个GPIO都能产生中断,中断的产生体现在GPIO的电平的变化,电平的变化需要一个外设来管理,最终传给NVIC(内核里的嵌套中断控制器)来处理。 一、学习内容 1、EXTI功能框图+EXTI初始…

51单片机完全学习——红外遥控

一、红外接收模块原理 红外接收头内部本身有一个反相,意思就是:平时发送方无信号时接收到的是1,发送方有发送载波时接收头引脚输出的是0,写代码的时候注意这一点。红外协议,你也可以理解成,他对0和1重新做…

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 文章目录 Navigation实现页面路由完整的Navigation入口页面子页面 页面跳转路由拦截其他的 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面&…

iPhone SE 4:定了

万众期待的iPhone SE 4,近日传来了确定的消息。 近日,屏幕供应链分析师Ross Young透露:iPhone SE 4的屏幕面板,预计在 11 月份开始出货,并将于 2025 年年初正式发布。 来了来了,终于来了。 和以往不同&am…

【C++打怪之路Lv12】-- 模板进阶

#1024程序员节|征文# 🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您…

【jvm】堆的内部结构

目录 1. 说明2. 年轻代(Young Generation)2.1 说明2.2 Eden区2.3 Survivor区 3. 老年代(Old Generation)3.1 说明3.2 对象存放3.3 垃圾回收 4. jdk7及之前5. jdk8及之后 1. 说明 1.JVM堆的内部结构主要包括年轻代(You…

SpringBoot poi-tl通过模板占位符生成word文件

简介: 开发中我们需要通过在word中使用占位符来动态渲染一些数据,本文讲解poi-tl实现动态生成word文档,包括表格循环,对象嵌套。 poi-tl官网文档 Poi-tl Documentation 1. word格式 这是我的test.word 这是导出后的out.docx文件 …

详解Pectra升级:如何影响以太坊价值及利益相关者

Pectra很可能是最后几个会直接影响用户和ETH持有者的升级之一。 原文:Galaxy Research;编译:Golem;编辑:郝方舟 出品 | Odaily星球日报(ID:o-daily) 编者按:以太坊 Pectr…

了解 WebSocket

了解 WebSocket 轮询方式、短轮询长轮询SSE WebSocket为什么说 WebSocket 是基于 Http 协议的?如何通过 Sec-WebSocket-Key 与 验证 Sec-WebSocket-Accept验证 demo SpringBoot 中使用 WebSocket引入依赖增加 WebSocketConfig修改 ServerEndpointConfig定义 ServerE…

保研考研机试攻略:python笔记(1)

🐨🐨🐨宝子们好呀 ~ 我来更新欠大家的python笔记了,从这一篇开始我们来学下python,当然,如果只是想应对机试并且应试语言以C和C为主,那么大家对python了解一点就好,重点可以看高分篇…

易基因:Nat Commun:ATAC-seq等揭示恒河猴大脑高分辨率解剖区域的转录组和开放染色质图谱

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 恒河猴是神经科学研究中常用的模型动物,其大脑结构和功能与人类大脑相似。大脑中复杂的遗传网络是灵长类动物行为、认知和情感的基础,一直是神经科学的核心。大脑…

禾川SV-X2E A伺服驱动器参数设置——脉冲型

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!人工智能学习网站 前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任…

【Android】基础回顾--四大组件

1. 四大组件是什么? 四大组件:Activity、Service、BroadcastReceiver、ContentProvider。 2. 四大组件的生命周期和简单用法 Activity: 特殊情况下的生命周期: 典型的生命周期好像没什么可说的,主要说一下特殊情况…

基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战

1. 概述 在前几篇文章中,我们初步探讨了如何通过LightGBM模型进行量化选股,并进行了一些简单的特征工程和模型训练。在这一篇文章中,我们将进一步深入,通过优化超参数和实现交叉验证来提高模型的效果,并最终通过回测分…

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2-135 基于matlab的有限差分法计算电位分布

基于matlab的有限差分法计算电位分布&#xff0c;设置目标尺寸的矩形区域&#xff0c;设置矩形区域内的网格数量&#xff0c;根据网格位置在区域内设置电位&#xff0c;实现电位分布计算。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-135 基于matlab…