当前位置: 首页 > news >正文

ReAct

REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS(协调语言模型思考和动作)

动机:

现有的LLM的推理(语言理解)和行动(行为决策)这两个能力虽然足够强大,但是这两个方面是割裂的。人类之所以能够进行自我策略的调整也是因为能够将“任务导向的行动”和“语言推理”结合起来。

所以这篇文章提出了ReAct框架;在环境中让单个智能交错的进行推理和行动,以**“思考-动作-观察”**的方式执行任务。让模型在工作时解释其推理过程,使智能体的决策过程对人类更加透明,提高了其行为的可解释性和可信度。

先前LLM作为行动规划器的主要流程:

1.将多模态信息(如图像、环境状态)转化为文本;
2.用语言模型输出具体的行动计划或动作;
3.将计划输送给控制器(controller)来选择或执行这些动作。

缺陷:(standard)
1。缺乏链式思考,无法思考高层抽象的行为决策。
2。缺乏记忆功能,从而导致无法追踪当前任务进度,无法及时调整任务计划。

多跳问答问题上的四种范式的比较。

(1)standard:给定问题,直接输出答案。

(2)COT:给定问题,基于一步步思考的方式,给出答案。

缺点:仅仅依赖于模型内部知识的单步推理过程。

(3)Act-only:光行动不思考,基于行为序列ct来产生下一步的动作。

**形式化:**agent在环境中接收当前状态ot,然后基于某种策略\phi(at|ct)产生动作at,与环境交互;返回下一步的状态。以此形成一个行为序列ct;

【基于强化学习的方法 感觉就属于Act-only;因为RL也是基于大量的行为序列进行决策;但是他并没有对这些序列进行自主思考的能力,容易产生幻觉】

(4)ReAct:将LLM的动空间进行了扩展。
 = A ∪ L
A是原本的动作空间。
L是语言空间,“一个思考”或者“一个思考轨迹”。

**ReAct的实现方式:**也是以Promopt提示的方式实现。

由于语言空间L是没有约束的,也就是说LLM语言形式的思考如果不加约束的话,容易产生幻觉。所以需要Prompt中引入少量的**“in-context example”来引导模型生成合理**地动作A^。

ReAct和COT的对比:

  • ReAct 的轨迹更贴近事实,能避免臆想,倾向于真实信息的反馈;但灵活性稍弱;

  • CoT 使用模型内部知识,输出结构化的思考,但更容易“想象”错误的事实。

模型内/外知识结合:

  • A)ReAct → CoT-SC: 若 ReAct 在指定步骤数(HotpotQA 为 7 步,FEVER 为 5 步)内没有得出答案,则“回退”到 CoT-SC;

  • B)CoT-SC → ReAct: 若 CoT-SC 采样的结果过于分散(即多数答案少于一半,表示模型不自信),则“切换”为 ReAct,让模型试着借助外部检索来获得更多信息。

其中,CoT-SCSelf-Consistency) 版本:采样 21 条推理轨迹,取多数答案。

在这里插入图片描述

上图是在多跳问答(HotpotQA)和Fever(事实推理)上的比较。

1.在多跳问答中,ReAct的表现不如Standard;

原因分析:

  1. 对于简单的问答问题,感觉LLM自身的知识足以能够回答。Act和ReAct这种需要依赖多次检索的形式太繁琐,而且可能会检索不到"有用"的信息。
  2. 在处理长期复杂任务时可能遇到的内存和规划深度限制问题。比如当长时间检索不到有用信息时,上下文序列ct中含有大量噪声信息,过多的交互轮次可能让模型积累过多无效或错误上下文,从而引发幻觉和循环错误

这也是他为什么将CoT-SC和ReAct结合的原因。
在这里插入图片描述

在没有训练参数的前提下,组合使用 ReAct 和 CoT-SC 是效果最佳的提示方法;而一旦加入适当的微调,ReAct 就能全面领先,展现出高度的泛化能力和应用价值。

参考:
REACT: SYNERGIZING REASONING
AND ACTING IN LANGUAGE MODELS
https://zhuanlan.zhihu.com/p/29239667810

http://www.lqws.cn/news/449569.html

相关文章:

  • 【二进制安全作业】250617课上作业4 - start
  • Linux (2)
  • 【stm32】标准库学习——I2C
  • 指标解读——113页企业信息化成熟度评估指标【附全文阅读】
  • 算法第38天|322.零钱兑换\139. 单词拆分
  • C语言:二分搜索函数
  • 【Java学习笔记】线程基础
  • 【RTSP从零实践】2、使用RTP协议封装并传输H264
  • JetBrains IDE v2025.1 升级,AI 智能+语言支持齐飞
  • Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
  • GreatSQL加入openKylin社区,共推开源生态建设
  • keep-alive缓存文章列表案例完整代码(Vue3)
  • Symbol.iterator 详解
  • 《被讨厌的勇气》详细概述
  • 【大数据】java API 进行集群间distCP 报错unresolvedAddressException
  • vue3打包后,图片丢失
  • 【unity游戏开发——热更新】什么是Unity热更新
  • 【精选】基于SpringBoot的宠物互助服务小程序平台开发 微信小程序宠物互助系统 宠物互助小程序平台设计与实现 支持救助发布+领养申请+交流互动功能
  • 无人机不再“盲飞”!用Python搞定实时目标识别与跟踪
  • 【Linux驱动开发 ---- 4.2_平台设备(Platform Devices)概述】
  • 1.容器技术与docker环境部署
  • phpstudy无法启动mysql,一启动就关闭,完美解决
  • PLuTo 编译器示例9-12
  • 从生活场景学透 JavaScript 原型与原型链
  • 力扣-62.不同路径
  • 【MySQL篇08】:undo log日志和MVCC实现事务隔离
  • 【小程序】如何生成特定页面的小程序码
  • apifox接收流式响应无法自动合并json内容
  • 组态王工程运行时间显示
  • 数据库从零开始:MySQL 中的 DDL 库操作详解【Linux版】