【AI大模型应用开发】LATS:比ToT和ReAct更强大的大模型思维框架

大家好,我是 同学小张,持续学习C++进阶知识AI大模型应用实战案例,持续分享,欢迎大家点赞+关注,共同学习和进步。


我们在大模型中常听说CoT(思维链)、ToT(思维树),还有最近比较火的Agent中常用的ReAct框架。这还不够,最近又发现了一种更高级的框架:LATS(Language Agent Tree Search),它比ToT和ReAct框架更复杂,相应的能力也更强。

原论文:https://arxiv.org/pdf/2310.04406

文章目录

  • 0. LATS是什么?
    • 0.1 基本概念
    • 0.2 LATS与ToT的区别
    • 0.3 LATS 与 ReAct 的区别
    • 0.4 CoT、ToT、ReAct、LATS等总结
  • 1. LATS的原理
  • 2. 总结

0. LATS是什么?

0.1 基本概念

LATS是一个通用框架,它结合了蒙特卡洛树搜索(Monte Carlo tree search,MCTS)的灵感,并利用环境提供外部反馈,从而实现更明智和适应性更强的问题解决机制。

LATS使用大模型作为Agent评估器优化器,将大模型在规划、行动和推理方面的优势结合起来,利用它们的潜在优势来增强决策能力。

0.2 LATS与ToT的区别

LATS与思维树ToT的区别如下图(中间的RAP我没了解过,所以先忽略):

在这里插入图片描述

从图中可以直观地看到,LATS图中增加了环境和反馈。下面是一些区别的总结:

(1)搜索机制

  • LATS采用蒙特卡洛树搜索(MCTS)的变种,这是一种启发式搜索算法,通过构建决策树来平衡探索和利用。LATS在树搜索中使用每个节点代表一个状态,并通过选择、扩展、评估、模拟、反向传播和反思等操作来寻找最优解。

  • ToT使用深度优先搜索(DFS)或广度优先搜索(BFS)来探索多个推理路径。基于大模型评估的启发式来引导搜索,但通常不涉及树搜索中的动态规划或反向传播。

(2)外部反馈的使用

  • LATS特别强调使用外部环境的反馈来改进推理和决策。LATS利用环境交互和自我反思来增强模型的合理性,并使Agent能够从经验中学习。

  • ToT通过探索多个推理路径来增强语言模型的决策能力,但它主要依赖于语言模型内部的知识。

(3)自我反思

  • LATS包括一个反思操作,当遇到不成功的终端节点时,会生成一个反思,总结推理或行动过程中的错误,并提出更好的替代方案。这些反思被存储并作为额外的上下文信息,以提高未来尝试的性能。

  • ToT方法本身不包括自我反思的组件。它更多地关注于通过搜索算法探索不同的推理路径。

(4)灵活性和适应性

  • LATS设计为灵活和适应性强,可以根据不同环境和任务调整状态设计和树的维度。

  • ToT虽然能够探索多个推理路径,但它的适应性可能不如LATS,因为它不包括对外部反馈的整合。

0.3 LATS 与 ReAct 的区别

LATS 与 ReAct 的区别如下图示例所示:

在这里插入图片描述

LATS更像是ReAct的扩展,在思考时会探索不同的路径,并对答案进行反思和反向传播。其区别总结如下:

(1)搜索策略

  • LATS:前面也提到了,其采用蒙特卡洛树搜索(MCTS)作为其核心搜索算法,这允许它通过构建决策树来平衡探索和利用,从而在多个可能的行动路径中进行选择和扩展。

  • ReAct:更多地侧重于通过与环境的交互来直接映射输入到输出,而不是使用树搜索算法。ReAct通过接收环境的观察结果并采取相应的动作来增强推理和行动。

(2)外部反馈的使用

  • LATS:明确地利用外部环境的反馈来改进决策过程。它通过模拟和反向传播操作来整合这些反馈,并通过自我反思来进一步提升性能。
  • ReAct:虽然也使用环境反馈来增强模型的行动能力,但它的主要关注点是通过交互API环境来提升信息检索能力,而不是通过搜索算法来探索多个可能的解决方案。

(3)自我反思

  • LATS:包括一个自我反思的步骤,允许模型在遇到不成功的路径时生成反思,这些反思被用来作为额外的上下文信息,以改进未来的决策。
  • ReAct:不特别强调自我反思。它更多地依赖于直接从环境获得的反馈来指导行动。

(4)灵活性和适应性

  • LATS:提供了更大的灵活性和适应性,因为它可以适应不同的环境和任务需求,通过调整状态设计和树的维度来优化搜索过程。
  • ReAct:虽然ReAct也能够适应不同的任务,但它的设计更倾向于直接的行动和反应,而不是通过搜索和反思来改进决策。

(5)应用范围:

  • LATS:由于其搜索和反思机制,更适合于需要复杂决策和长期规划的任务。
  • ReAct:更适合于需要即时反应和交互的环境,特别是在信息检索和基于API的环境中。

0.4 CoT、ToT、ReAct、LATS等总结

如下图,论文中总结了主流的这些框架和方法的能力,LATS是唯一一个将思考、行动、规划结合起来的框架。

在这里插入图片描述

从这个图中,也可以看出LATS与其它框架的根本区别,以及各个框架之间的区别。

之前一直以为ReAct中有Planning的过程,因为它也是思考一步走一步,现在看来,ReAct更多地是强调思考加执行,一步步往下走,没有一个反馈地过程,规划能力不能说没有一点,但也不多。以现在大模型地规划和推理能力,在ReAct框架中依赖大模型进行规划有点不确定性太高了。LATS因为多分支搜索,并且有反馈和反向传播能力,所以能及时纠错,让大模型地规划更可靠一点。

1. LATS的原理

实现原理如下图:

在这里插入图片描述

一共是6个步骤:

(1)选择

  • 在树中,你从根部(初始状态)开始,根据一定的规则(比如哪个分支最有可能通向正确答案),选择一个最有前途的分支继续前进。

(2)扩展

  • 你探索这个分支,尝试从当前状态出发做出不同的行动,就像是在尝试不同的解题方法。

(3)评估

  • 对每个可能的行动结果进行评估,就像是给每种解题方法打分,看看哪个更靠谱。

(4)模拟

  • 你继续沿着选中的分支走,直到走到尽头,看看这个路径是否真的能解决问题。

(5)反向传播

  • 如果你找到了正确的解决方案,就将这个成功的信号传回到你之前经过的每个节点上,让它们也知道“这条路走得对”。

(6)反思

  • 如果你走错了路,没能解决问题,就停下来想一想错在哪里,怎样可以避免同样的错误。

重复这个过程多次,每次都尝试不同的路径,直到找到最好的解决方案。当你找到了一个满意的解决方案,或者尝试了很多次之后,就停止搜索。

伪代码如下:

在这里插入图片描述

2. 总结

本文主要对LATS论文进行了解读,同时,重点通过LATS与其它框架如ToT、ReAct的对比,来让大家对LATS有一个直观的认识。最后,用通俗易懂的语言替大家总结了LATS实现的步骤。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是 同学小张,持续学习C++进阶知识AI大模型应用实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜同学小张 🙏

本站文章一览:

在这里插入图片描述

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

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

相关文章

深入理解C#中的IO操作:Path类的详解

文章目录 前言一、Path类的概述二、Path类的主要方法2.1 Path.GetFullPath(string relativePath)2.2 Path.GetDirectoryName(string path)2.3 Path.GetFileName(string path)2.4 Path.GetFileNameWithoutExtension(string path)2.5 Path.GetExtension(string path)2.6 Path.Com…

JUC下的Future 详解

java.util.concurrent.Future 是Java并发编程中一个重要的接口,它代表一个异步计算的结果。当你提交一个任务到执行器(如ExecutorService的submit方法),它会返回一个Future对象。这个对象允许你查询任务是否完成、取消任务、获取任…

【2024年5月备考新增】】 考前篇(4)《官方平台 - 考生模拟练习平台常用操作(三)》

9 如何绘制七格图 第一步:选择图形元件“网络计划”中的七格图元件,在绘图区点击 第二步:批量复制(先选中元件,按Ctrl+C, 再 Ctrl+V) 七格形状,有多少活动复制多少个 选中多个图形后,可点左上角的对齐工具进行对齐; 第三步:逐个标注每个活动的参数,使用箭线连接每个…

vscode无法连接 , .vscode-server版本问题

vscode无法连接 , .vscode-server版本问题 解决办法 : 查看自己的版本号 2. 两边vscode版本号需要一致 找一台vscode可以远程连接的, 将它的.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a 传到 远程服务器上 或者 本地的…

2024统计建模成品论文39页(附带完整数据集和代码)

2024统计建模成品论文完整版一等奖论文【1.5w字全网最佳】2024统计建模大赛高质量成品论文39页配套完整代码运行全套数据集https://www.jdmm.cc/file/2710661/

Vue的学习 —— <vue指令>

目录 前言 正文 内容渲染指令 内容渲染指令的使用方法 v-text v-html 属性绑定指令 双向数据绑定指令 事件绑定指令 条件渲染指令 循环列表渲染指令 侦听器 前言 在完成Vue开发环境的搭建后,若想将Vue应用于实际项目,首要任务是学习Vue的基…

内存屏障 - LINUX KERNEL MEMORY BARRIERS 上 与 下

内存屏障(Memory Barrier)是在计算机体系结构中使用的一种同步机制,用于确保在多线程或多核处理器环境中,对共享内存的操作按照预期顺序进行。它们通过强制在特定点执行一些指令来规定内存访问的顺序,并防止内存乱序执…

干货分享:AI知识库-从认识到搭建

随着知识库的出现,人工智能也逐渐加入进来,形成了“AI知识库”。也许将AI和知识库拆开,你能理解是什么意思,但是当两个词结合在一起时,你又真的能理解它是做什么的吗?这就是今天我们要来聊的话题&#xff0…

未来互联网:Web3的技术革新之路

引言 随着技术的不断发展和社会的日益数字化,互联网作为信息交流和社交媒介的重要平台已经成为我们生活中不可或缺的一部分。然而,传统的互联网架构在数据安全、隐私保护和去中心化等方面存在着诸多挑战。为了解决这些问题,Web3技术应运而生…

【PB案例学习笔记】-01创建应用、窗口与控件

写在前面 这是PB案例学习笔记系列文章的第一篇,也是最基础的一篇。后续文章中【创建程序基本框架】部分操作都跟这篇文章一样, 将不再重复。该系列文章是针对具有一定PB基础的读者,通过一个个由浅入深的编程实战案例学习,提高编…

uniapp编译H5解决ios的border-radius失效问题,以及ios满屏显示不全的问题

1.解决方案 .card-itemA {width: 650rpx;height: 326rpx;box-shadow: 0rpx 0rpx 30rpx 14rpx rgba(236, 235, 236, 0.25);background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);border-radius: 60rpx;overflow: hidden;// 兼容ios的圆角问题transfor…

Centos7 配置 DNS服务器

Centos 7 配置DNS服务器 环境描述: 一台服务器和一台用于测试的客户机 服务器IP:192.168.200.132 客户机IP:192.168.200.143 服务器配置 yum install bind bind-utils -y #安装软件包vim /etc/named.conf //编辑named主配置文件listen-on p…

d18(169-174)-勇敢开始Java,咖啡拯救人生

目录 特殊文件 .properties 属性文件 读取属性文件 写出属性文件 .xml XML文件 读取XML文件 ​编辑 写出XML文件 约束XML文件 日志技术 Logback 日志级别 特殊文件 .properties 属性文件 每行都是一个键值对 键不能重复 文件后缀一般是.properties 读取属性文件 …

LeetCode 力扣题目:买卖股票的最佳时机 IV

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

华为手机恢复出厂设置后怎么还原数据?该如何预防数据丢失?

华为手机恢复出厂设置是将手机恢复到出厂时的初始状态,同时会删除所有用户数据和个人设置。如果不做任何预防措施,在恢复出厂设置后,您将丢失手机上的所有数据。那华为手机恢复出厂设置后怎么还原数据呢?以下是关于如何在华为手机…

Mac下安装ffmpeg

1、安装gedit brew install gedit2、配置环境变量,打开~/.zshrc,在末尾添加语句 export PATH$PATH:/usr/local/ffmpeg/bin3、执行语句,使环境变量生效 source ~/.zshrc 4、终端输入 ffmpeg ,看环境变量是否配置成功。 至此&a…

c++高级篇(一) —— 初识Linux下的进程控制

linux的信号 信号的概念 在Linux中,信号是一种用于进程间通信和处理异步事件的机制,用于进程之间相互传递消息和通知进程发生了事件,但是,它不能给进程传递任何数据。 信号产生的原因有很多种,在shell中&#xff0c…

栈和队列的基础知识,C语言实现及经典OJ题

题目来源:力扣 基础知识 一.栈 1.栈的概念 定义:堆栈又名栈(stack),它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。 压…

【数据结构】栈和队列OJ面试题

20. 有效的括号 - 力扣(LeetCode) 思路:由于C语言没有栈的接口,所以我们需要自己造一个“模子”。我们直接copy之前的实现的栈的接口就可以了(可以看我之前的博客【数据结构】栈和队列-CSDN博客copy接口)&…

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析 起因 最近在学习安全协议,大多数实验都是基于Windows下IIS,或者Linux下nginx搭建的Web服务,搭建环境和编写配置文件比较麻烦。而且我有多个不同环境的设备,折腾起来…