[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models

文章目录

  • 摘要
  • Abstract:
  • 思考与行为协同化
    • Reason(Chain of thought)
    • ReAct
  • ReAct如何协同推理 + 响应
    • Action(动作空间)
    • 协同推理
  • 结果
  • 总结

摘要

ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning and Acting in Language Models 来自普林斯顿大学和谷歌团队,发表于2022年,中稿于ICLR 2023。

为了解决大型语言模型(LLMs)在处理语言理解和决策任务时的两方面局限性:(1)推理能力和动作能力过于隔离;(2)思维链推理中普遍存在的幻觉和错误传播

文章作者提出了ReAct方法,**推理(Reason)**帮助模型诱导更新动作计划以及处理异常,动作(Action)允许它与外部知识库对接,通过交错生成推理轨迹和特定任务的动作,增强了推理和动作之间的协同作用。ReAct在多种语言和决策任务中显示出比传统方法更优的性能,有效地提升了模型处理复杂任务的能力。

尽管方法很简单,但具有大动作空间的复杂任务需要更多的演示,但缺点是很容易超出上下文限制,未来应该从更多高质量的人工标注中学习。通过多任务训练扩大ReAct的规模,并将其与强化学习等补充范式相结合,可以产生更强大的agent,进一步释放潜力。

Abstract:

This week I read ReAct: Synergizing Reasoning and Acting in Language Models. It introduces ReAct, a novel approach that synergizes reasoning and acting within large language models to address their limitations in language understanding and decision-making tasks. ReAct enhances the models’ ability to dynamically reason and interact with external knowledge bases, such as Wikipedia, through a series of thought-action-observation steps. The report details the methodology, experimental evaluations on various language and decision tasks, and the comparative performance of ReAct against traditional methods. It concludes that ReAct outperforms other approaches and offers interpretable decision trails, highlighting its potential for improving complex task handling in language models.

思考与行为协同化

人类智力的一个独特特征是能够将面向任务的动作与言语推理无缝结合,这被认为在人类认知中发挥了重要作用,以实现自我调节或策略化并保持工作记忆。

考虑一下在厨房里做一道菜的例子。在任何两个具体的动作之间,我们可能会用语言进行推理,以便跟踪进度(“现在所有东西都切好了,我应该把锅里的水加热”),处理例外情况或根据情况调整计划(“我没有盐,所以让我用酱油和胡椒粉代替”),并在需要外部信息时意识到(“我如何准备面团? 让我在网上搜索”)。我们也可能采取动作(打开食谱阅读,打开冰箱,检查成分)来支持推理和回答问题(“我现在可以做什么菜?”)。这种 "动作 "和 "推理 "之间的紧密协同作用使人类能够快速学习新的任务,并进行强有力的决策或推理,即使是在以前没有见过的情况下或面临信息不确定的情况下。

Reason(Chain of thought)

为了模仿人类的思考过程,CoT被提出。

Chain of thought prompting elicits reasoning in large language models [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

此文是CoT的开山之作,同样来自于Google,中稿于NeurIPS 2022。本文思路清晰,方法简单,通俗易懂,并且实验巧妙,同样值得精读。

CoT是一种简单高效的大模型prompt,用于帮助语言模型进行复杂的推理和思考过程。它通过引导模型逐步解决问题,以一系列连贯的步骤展示推理的思路和逻辑关系。CoT是当前热门的方向之一,是prompt 工程工作的重要基础。

在这里插入图片描述

然而,这种 "思维链 "推理是一个静态的黑箱,即模型使用自己的内部表示来产生思维,并不以外部世界为基础,这限制了它反应性推理或更新知识的能力。这可能导致事实幻觉错误在推理过程中传播等问题。

ReAct

另一方面,一些研究探索了使用预训练好的语言模型在互动环境中计划和动作,重点是通过语言先验预测动作。这些方法通常将多模态观察转换为文本,使用语言模型来生成特定领域的动作或计划,然后使用控制器来选择或执行这些动作。然而,除了执行有限形式的语言推理以重申关于当前状态的空间事实之外,他们并没有采用语言模型来抽象推理高级别的目标或维持工作记忆以支持动作。

除了这种简单的体现任务与几个区块互动之外,还没有研究如何将推理和动作以协同的方式结合起来解决一般的任务,以及与单独的推理或动作相比,这种结合是否能带来系统的好处。

于是文章提出了ReAct,一个将推理和动作与语言模型结合起来的通用范式,用于解决不同的语言推理和决策任务(如图)。ReAct提示语言模型以交错的方式产生与任务相关的语言推理轨迹和动作,这使得模型能够进动作态推理,以创建、维护和调整动作的高级计划(推理到动作),同时也与外部环境(例如维基百科)互动,将额外信息纳入推理(动作到推理)。

在这里插入图片描述

4种提示方法的比较,(a)标准,(b)思维链(CoT, Reason Only),©仅动作,和(d)ReAct(Reason+Act),解决一个HotpotQA问题

比较(a) Act-only和(b) ReAct提示,解决一个AlfWorld游戏

在这两个领域中,我们省略了提示中的上下文例子,只显示由模型(Act,Thought)和环境(Obs)产生的任务解决轨迹。

ReAct如何协同推理 + 响应

考虑一个agent与环境互动以解决任务的一般设置。在时间步t,agent从环境中收到一个观察值 o t ∈ O o_t \in O otO ,并按照一些策略 π ( a t ∣ c t ) π(a_t|c_t) π(atct) 采取动作$ a_t \in A ,其中 ,其中 ,其中 c_t=(o_1,a_1,⋅⋅⋅ ,o_{t−1},a_{t−1},o_t) $是agent的背景。

ReAct的想法很简单:我们将agent的动作空间扩大到 $A˙=A∪L $,其中L是语言空间。语言空间中的动作 $a_t∈L ,我们将其称为思想或推理轨迹,不影响外部环境,因此不会导致观察反馈。相反,一个思想 ,我们将其称为思想或推理轨迹,不影响外部环境,因此不会导致观察反馈。相反,一个思想 ,我们将其称为思想或推理轨迹,不影响外部环境,因此不会导致观察反馈。相反,一个思想a_t 的目的是通过对当前上下文 的目的是通过对当前上下文 的目的是通过对当前上下文c_t$的推理来组成有用的信息,并更新上下文 c t + 1 = ( c t , α t ) c_{t+1} =(c_t,α_t) ct+1=(ct,αt) 以支持未来的推理或动作。如图所示,可能有各种类型的有用思想,例如分解任务目标和创建动作计划(2b,动作1;1d,思想1),注入与任务解决相关的常识性知识(2b,动作1),从观察中提取重要部分(1d,思想2,4),跟踪进度和转运动作计划(2b,动作8),处理异常情况和调整动作计划(1d,思想3),等等。

在这里插入图片描述

然而,由于语言空间L是无限的,在这个增强的动作空间中学习是困难的,需要强大的语言先验。在本文中,我们交替生成思想和动作,这样任务解决的轨迹就由多个思想-动作-观察步骤组成。相反,对于可能涉及大量动作的决策任务,思想只需要少量地出现在轨迹的最相关位置,所以我们让语言模型为自己决定思想和动作的异步发生

由于决策和推理能力被整合到一个大的语言模型中,ReAct享有几个独特的特征:

  • A) 直观且易于设计: 设计ReAct的提示是直接的,因为人工标注者只是在他们采取的动作上面用语言输入他们的想法。本文没有使用临时的格式选择、思想设计或例子选择。我们在第3节和第4节中详细介绍每个任务的提示设计。
  • B)一般性和灵活性: 由于灵活的思维空间和思维-动作发生格式,ReAct适用于具有不同动作空间和推理需求的不同任务,包括但不限于QA、事实验证、文本游戏和网络导航。
  • C) 性能好和稳定性强: ReAct对新的任务实例表现出很强的泛化能力,同时仅从1到6个上下文中的例子中学习,在不同的领域中始终优于只进行推理或动作的基线。我们还在第3节中展示了启用微调时的额外好处,并在第4节中展示了ReAct的性能对提示选择的稳健性。
  • D) 人工调整和可控: ReAct 承诺了一个可解释的序列决策和推理过程,人类可以轻松地检查推理和事实的正确性。此外,人类还可以通过思维编辑来控制或纠正agent的行为。

Action(动作空间)

为了进行知识密集型的推理任务,如多跳问答和事实验证。我们设置通过与维基百科的API交互,ReAct能够检索信息以支持推理,同时也利用推理来确定下一步要检索的目标,展示了推理和动作的协同作用

我们设计了一个简单的维基百科网络API,有三种类型的动作来支持交互式信息检索:

  • (1)搜索[实体],如果存在实体维基页面,则返回相应实体维基页面的前5个句子,否则建议使用维基百科搜索引擎的前5个类似实体;
  • (2)查找[字符串],这将返回包含字符串的页面中的下一句话,模拟浏览器上的Ctrl+F功能。
  • (3)结束[答案],它将用答案完成当前任务。

我们注意到,这个动作空间大多只能根据准确的段落名称检索出一小部分段落,这明显弱于最先进的词法或神经检索器。我们的目的是模拟人类如何与维基百科互动,并迫使模型通过语言的明确推理来检索。

不过,未来的研究可以进一步使用更先进的检索方式来替代这个简单的WIK交互。

整个动作空间被结合例子(simple)放入了prompt中:

webthink_examples = prompt_dict['webthink_simple6']
instruction = """Solve a question answering task with interleaving Thought, Action, Observation steps. Thought can reason about the current situation, and Action can be three types: 
(1) Search[entity], which searches the exact entity on Wikipedia and returns the first paragraph if it exists. If not, it will return some similar entities to search.
(2) Lookup[keyword], which returns the next sentence containing keyword in the current passage.
(3) Finish[answer], which returns the answer and finishes the task.
Here are some examples.
"""
webthink_prompt = instruction + webthink_examples

协同推理

  • 循环从1到7,生成思考和行动。

  • 每次循环增加 n_calls 计数器,最多进行8次思考。

  • 调用 llm 生成思考和行动,llm 使用提示字符串 prompt 并生成一个包含思考和行动的字符串。

  • 尝试将生成的字符串拆分为思考和行动。如果拆分失败(例如字符串格式不正确),则记录错误调用,并重新生成行动。

每一步都进行以下的协同过程:

  • 调用 step 函数在环境中执行行动,并获取观察结果 obs、奖励 r、是否完成 done 和其他信息 info
  • 构建当前步骤的字符串 step_str,包括思考、行动和观察。

任务结束:

  • 执行 finish[] 动作以结束任务
def webthink(idx=None, prompt=webthink_prompt, to_print=True):question = env.reset(idx=idx)if to_print:print(idx, question)prompt += question + "\n"n_calls, n_badcalls = 0, 0for i in range(1, 8):n_calls += 1thought_action = llm(prompt + f"Thought {i}:", stop=[f"\nObservation {i}:"])try:thought, action = thought_action.strip().split(f"\nAction {i}: ")except:print('ohh...', thought_action)n_badcalls += 1n_calls += 1thought = thought_action.strip().split('\n')[0]action = llm(prompt + f"Thought {i}: {thought}\nAction {i}:", stop=[f"\n"]).strip()obs, r, done, info = step(env, action[0].lower() + action[1:])obs = obs.replace('\\n', '')step_str = f"Thought {i}: {thought}\nAction {i}: {action}\nObservation {i}: {obs}\n"prompt += step_strif to_print:print(step_str)if done:breakif not done:obs, r, done, info = step(env, "finish[]")if to_print:print(info, '\n')info.update({'n_calls': n_calls, 'n_badcalls': n_badcalls, 'traj': prompt})return r, info

结果

ReAct持续优于Act ,表显示了使用PaLM540B作为基础模型,采用不同提示方法的HotpotQA和Fever结果。我们注意到,ReAct在这两项任务中都优于Act,证明了推理指导行为的价值,特别是对于综合最终答案,如图所示。微调结果也证实了推理轨迹对更多知情行为的好处。

在这里插入图片描述

ReAct在Fever上的表现优于CoT(60.9 vs. 56.3),在HotpotQA上略微落后于CoT(27.4 vs. 29.4)。Fever对SUPPORTS/REFUTES的主张可能只相差一点点,所以采取动作检索准确和最新的知识是至关重要的。

ReAct + CoT-SC在提示LLMs方面表现最好,在HotpotQA和Fever上最好的提示方法分别是ReAct → CoT-SC和CoT-SC → ReAct。此外,图显示了不同方法在使用CoT-SC样本数量方面的表现。虽然两种ReAct + CoT-SC的方法在一项任务中各有优势,但它们在不同的样本数量上都明显地持续优于CoT-SC,只用3-5个样本就达到了CoT-SC的性能。这些结果表明适当结合模型内部知识和外部知识对推理任务的价值。

在这里插入图片描述

总结

文章提出了ReAct——一种简单而有效的方法来协同推理和行动大型语言模型,解决掉思维链中幻觉传播的问题。通过一组不同的实验,对多跳问答,事实检查和交互式决策任务,表明ReAct带来了卓越的性能具有可解释的决策痕迹。尽管ReAct的方法简单,但复杂的任务用大动作空间需要更多的演示来学习,不幸的是,这很容易超出语境学习的输入长度限制。同时,简单的WIKI交互仅仅是模仿了人类的查询行为,未来的研究可以进一步使用更先进的检索方式来替代这个简单的WIK交互。

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

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

相关文章

Rocky Linux下安装meld

背景介绍: meld是一款Linux系统下的用于 文件夹和文件的比对软件,非常常用; 故障现象: 输入安装命令后,sudo yum install meld,报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…

2024年12月个人工作生活总结

本文为 2024年12月工作生活总结。 研发编码 Golang语言byte数组赋值 假定有如下变量: var strCode string var bCode [9]byte现需将string类型转换成byte类型,如下: bCode []byte(strCode)无法转换,提示: cannot…

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…

如何在梯度计算中处理bf16精度损失:混合精度训练中的误差分析

如何在梯度计算中处理 bf16 精度损失:混合精度训练中的误差分析 在现代深度学习训练中,为了加速计算并节省内存,越来越多的训练任务采用混合精度(Mixed Precision)技术,其中常见的做法是使用低精度格式&am…

揭秘文件上传漏洞之操作原理(Thoughts on File Upload Vulnerabilities)

从上传到入侵:揭秘文件上传漏洞之操作原理 大家好,今天我们来聊一个"老而弥坚"的漏洞类型 —— 文件上传漏洞。虽然这个漏洞存在很多年了,但直到现在依然频频出现在各种漏洞报告中。今天我们就来深入了解一下它的原理和各种校验方…

《迁移学习与联邦学习:推动人工智能发展的关键力量》

在人工智能的发展历程中,数据和模型的学习方式不断演进。迁移学习和联邦学习作为两种重要的技术,正逐渐成为行业关注的焦点。 迁移学习:跨越边界的智慧 迁移学习旨在将从一个任务中学习到的知识迁移到另一个相关任务中。简单来说&#xff0…

哈夫曼编码(Huffman Coding)与哈夫曼树(Huffman Tree)

已知字符集{a,b,c,d,e,f},若各字符出现的次数分别为6,3,8,2,10,4,则对应字符集中各字符的哈夫曼编码可能是( )。 A.00,1011,01&#xff0…

R语言入门笔记:第一节,快速了解R语言——文件与基础操作

关于 R 语言的简单介绍 上一期 R 语言入门笔记里面我简单介绍了 R 语言的安装和使用方法,以及各项避免踩坑的注意事项。我想把这个系列的笔记持续写下去。 这份笔记只是我的 R 语言入门学习笔记,而不是一套 R 语言教程。换句话说:这份笔记不…

创意思维与决策方法——SCAMPER:探索创新思维的利器

探索创新思维的利器:SCAMPER法 在面对复杂问题或需要突破性创意时,我们常常需要一些行之有效的工具来引导思考。SCAMPER法正是这样一个激发创新思维的利器,它通过七个步骤:替代(Substitute)、组合&#xf…

微信小程序调用 WebAssembly 烹饪指南

我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…

自动驾驶3D目标检测综述(六)

停更了好久终于回来了(其实是因为博主去备考期末了hh) 这一篇接着(五)的第七章开始讲述第八章的内容。第八章主要介绍的是三维目标检测的高效标签。 目录 第八章 三维目标检测高效标签 一、域适应 (一)…

计算机毕业设计hadoop+spark+hive图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 大数据毕业设计 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

极品飞车6的游戏手柄设置

极品飞车,既可以用键盘来控制车辆的前进、后退、左转、右转、加速与减速,也可以使用游戏手柄来操作车辆的运行。需要注意的是,极品飞车虽然支持手柄,但是仅支持常见的北通、罗技还有部分Xbox系列的手柄,至于其他的PS4手…

【VBA】EXCEL - VBA 创建 Sheet 表的 6 种方法,以及注意事项

目录 1. 创建一个新工作表,并将其添加到工作簿的末尾 2. 创建一个新工作表,并命名它 3. 创建一个新工作表,并将其插入到指定位置 4. 检查是否已有同名工作表,避免重复创建 5. 创建多个工作表 6. 基于现有模板创建新工作表 …

html文件通过script标签引入外部js文件,但没正确加载的原因

移动端H5应用,html文件通过script标签引入外部js文件,但没正确加载,在移动设备上难以排查。通过PC浏览器打开,发现js被阻止了:blocked:mixed-content。 原因在于: “blocked:mixed - content” 是浏览器的…

虚拟机Centos下安装Mysql完整过程(图文详解)

目录 一. 准备工作 1. 设置虚拟机静态IP 2. 卸载Mysql 3. 给CentOS添加rpm源 二. 安装MySQL 1. 安装mysql服务 2. 启动mysql服务 3. 开启MySQL开机自启动 4. 查看mysql服务状态 5. 查看mysql初始密码 6. 登录mysql ,修改密码 7. 允许外部访问MySQL数据库…

ulimit命令与nginx的联系

华子目录 ulimit使用ulimit命令查看当前限制设置特定限制常用的资源类型临时和永久设置 ulimit与nginx的联系ulimit对Nginx的影响Nginx配置中的相关参数 ulimit 在Linux系统中,ulimit命令用于获取和设置用户级别的资源使用限制。这些限制可以控制诸如可以打开的文件…

初识具身智能

具身智能是智能科学的一个基础问题,在过去的5.4亿年以来,地球上所有生物都是通过身体和环境交互、进化逐步产生的。通俗地讲,具身智能体以第一人称视角身临其境地从环境交互中理解外部世界的本质概念,被认为是通向通用人工智能的重…

【机器人】机器人的数学模型:符号表示、位形空间、状态空间、工作空间

定义 机器人是一种可重复编程的多功能机械臂,他们通过可变程控运动来执行如移动材料、零件、工具或者特种设备等多种任务。 ——美国机器人协会(RIA) 1.1 机器人的数学模型 1.1.1 机器人的符号表示 机械臂:关节joint 连杆link …

VITUREMEIG | AR眼镜 算力增程

根据IDC发布的《2024年第三季度美国AR/VR市场报告》显示,美国市场AR/VR总出货量增长10.3%。其中,成立于2021年的VITURE增长速度令人惊艳,同比暴涨452.6%,成为历史上增长最快的AR/VR品牌。并在美国AR领域占据了超过50%的市场份额&a…