论文阅读_反思模型_Reflexion

英文名称: Reflexion: Language Agents with Verbal Reinforcement Learning
中文名称: 反思:具有言语强化学习的语言智能体
文章: http://arxiv.org/abs/2303.11366
代码: https://github.com/noahshinn/reflexion
作者: Noah Shinn (Northeastern University)
日期: 2023-10-10

读后感

论文提出了一种强化学习方法。传统的调优主要是通过训练调整网络参数,而文中提出的方法则是“分析”错误,形成反思的“文字”并保存,在之后的决策中,将其作为上下文以帮助决策。

它利用大模型及其周边方法构造了角色的行为、对结果的评价、当不能达成目标时,利用大模型来反思执行过程中具体哪一步出了问题,并将其作为反思存储。这样就构造了基于当前环境的短期存储,和基于反思的长期存储,结合二者使模型在未来做出更好的决策。

可将其视为把之前在棋类游戏中的强化学习扩展到了角色扮演游戏之中。之前的虚拟世界是棋盘,而现在的智能体置身于一个游戏世界;之前的行为是多步棋的组合,现在是多个行为的组合;之前是根据最终输赢为每一步计算奖励值,现在是利用大模型反思出每一步的对错……

这个方法很巧妙,当然也是因为现在有了各种大模型,链式思维的方法,才能支持该方法的实现。

摘要

对于语言代理来说,通过传统的强化学习方法进行试错学习需要大量的训练样本和昂贵的模型微调。论文提出了 Reflexion 框架 ,通过语言反馈而不是更新权重来强化语言代理。Reflexion 足够灵活,可以整合各种类型和来源的反馈信号,实验证明,它在各种任务中取得显著改进。

1. 引言

Reflexion 将环境中的反馈转化为文本摘要,然后将其作为附加上下文添加到下一轮的 LLM 代理中,从以前的错误中学习,以在未来任务中表现更好。这类似于人类如何通过反思以往的失败来形成改进,以便以少量尝试的方式完成复杂任务。

与传统方法相比,Reflexion 具有以下优点:

  • 更为轻量,不需要对 LLM 进行微调
  • 相比于难以进行准确信用分配的标量或向量奖励,它允许更细致的反馈
  • 允许更明确和可解释的情节性记忆形式
  • 为未来的决策提供了更明确的行动提示

其缺点是:

  • 依赖于 LLM 的自我评估能力(或启发式方法)
  • 无法保证成功

文章贡献如下:

• 提出了 Reflexion,一种新的基于语言的强化学习范式,结合了智能体的记忆与 LLM 参数的选择,以优化策略。

• 探索了 LLM 中自我反思的性质,证明自我反思对于少量数据的复杂任务非常有用。

• 引入了包含 40 个具有挑战性的 Leetcode 问题(“困难级别”)的代码生成,涵盖了 19 种编程语言。

• 展示了 Reflexion 在多个任务上相对于强基线方法的改进。

2. 相关工作

略…

3. 方法

  • Actor:角色,使用 LLM 实现,它基于可观察的状态,利用提示生成文本和动作。类似强化学习中的基于策略的方法,在时间步 t,从策略 πθ 中采样一个动作 at,它探索了各种 Actor 模型,包括 COT 和 ReAct,从而丰富了探索空间。
  • Evaluator:评估器,用于评估 Actor 输出的质量。将生成的轨迹作为输入,计算在给定任务上下文中的奖励分数。对于推理任务,探索基于精确匹配(EM)评分的奖励函数;对于决策任务,采用根据特定评估标准的预定义启发式函数;还使用 LLM 的不同实例作为评估器,为决策和编程任务生成奖励。
  • Self-reflection:自我反思,使用 LLM 实现,用于生成基于语言的反思。在给出稀疏奖励信号,如二元状态(成功/失败),当前轨迹及其持久记忆内存。自我反思模型会生成细致入微且具体的反馈,这种反馈相比标量奖励提供更多信息,然后被存储在代理的内存 (mem) 中。如在多步决策任务中,当智能体收到失败信号时,它可以推断出特定动作 ai 导致了后续错误动作 ai+1 和 ai+2。然后,智能体可以用语言声明它应该采取不同的动作 a’ i,这将导致 a’ i+1 和 a’ i+2,并将该经验存储在其记忆中。在随后的试验中,智能体可以利用其过去的经验,通过选择动作 a’ i 来调整其在时间 t 的决策方法。这种尝试、错误、自我反思和持久记忆的迭代过程使智能体能够利用信息反馈信号快速提高其在各种环境中的决策能力。
  • Memory:内存组件,为 Agent 提供额外的上下文。它提供短期记忆和长期记忆。在推理时,Actor 根据短期和长期记忆做出决定,在强化学习设置中,轨迹历史充当短期记忆,而自我反思模型的输出则存储在长期记忆中。这是反思 Agent 相对于其他 LLM 的关键优势。类似于人类记住近期细节的方式,同时也回忆从长期记忆中提炼出的重要经验
  • The Reflexion process:反思过程,如算法 -1 所示的迭代优化过程。在第一次试验中,Actor 通过与环境交互产生轨迹 τ0。然后评估器产生一个分数 r0;rt 是标量奖励;为了放大 r0 ,自我反思模型分析 {τ0, r0} 集合以生成存储在内存 mem 中的摘要 sr0。srt 是对试验 t 的语言反馈。 Actor、Evaluator 和 Self-Reflection 模型通过循环试验协同工作,直到 Evaluator 认为 τt 是正确的。每次试验后 t、srt 都会附加存入 mem。在实践中,通过存储经验的最大数量 Ω(通常设置为 1-3)来限制 mem,从而不超过 LLM 的上下文限制。

4. 实验

4.1 顺序决策制定:ALFWorld

在 AlfWorld 常见家庭环境中的多步任务中,反思使性能提高了 22%。

4.2 推理:HotpotQA

HotPotQA 是一个基于维基百科的数据集,包含 113k 个问题和答案对,代理解析内容并在多个支持文档上进行推理。

论文实现了一个反思 + 思维链的 Agent,它可以使用维基百科 API 检索相关上下文,并使用逐步显式思考推断答案。加入反思在该任务中提升了 20%,

4.3 编程

在 MBPP、HumanEval 和 LeetcodeHardGym 上评估了基准和 Reflexion 方法在 Python 和 Rust 代码编写方面的表现。除了 MBPP Python 1,Reflexion 在所有测试中表现优于所有基准准确性,

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

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

相关文章

【从零开始学习JAVA集合 | 第一篇】深入解读HashMap源码(含面试题)

目录 目录 前言: HashMap简介: HashMap的常用常量和变量: HashMap的重要考点: HashMap的存储过程: HashMap的扩容过程: HashMap的初始化: 常见面试题: 总结:…

Linux 高级管理,MySQL服务器的构建与维护

实验环境 某公司因业务范围日益扩大,最近订购了一套基于B/S架构的电子商务系统,在正式部署之前,要 求对现有的httpd服务器进行改造,首先需要增加MySQL数据库服务。 需求描述 1. 编译安装MySQL服务器,并添加为mysqld系…

mybatisplus saveBatch版本问题导致CPU打满生产问题定位

一、生产现象 1、16:57 运维告知Push微服务有一台因为CPU被打满,自动重启,询问原因。 2、17:00 查看异常节点CPU轨迹,16:30开始CPU出现异常飙升 3、17:10 结合生产日志错误,以及定时任务运行情况,得出结论: 产品在…

conda的安装及使用 以pycharm 为例

下载 https://docs.conda.io/en/latest/miniconda.html 下载 window版本 74M且下着吧。 安装 一路next或agree ,不同意人家也不会按装 。重要的是安装目录 让andconda当老大 pycharm的使用 创建项目时如下图选择 成功后进入项目的Terminal则如下图表示成功

【Pytorch】学习记录分享1——Tensor张量初始化与基本操作

1. 基础资料汇总 资料汇总 pytroch中文版本教程 PyTorch入门教程 B站强推!2023公认最通俗易懂的【PyTorch】教程,200集付费课程(附代码)人工智能_机器 视频 1.PyTorch简介 2.PyTorch环境搭建 basic: python numpy pandas pytroch…

Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介 本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装,并安装PyTorch2.1.1来测试是否安装成功。 安装Ubuntu系统 如果是旧的不支持UEFI启动的主板,请参考本人博客U盘系统盘制作与系统安装(详细图解&#xff09…

03 Temporal 详细介绍

前言 在后端开发中,大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中,可能更多的直接使用数据库、定时任务、消息队列等作为基础,来解决上面的问题。然…

入门PostgreSQL:安装和设置数据库的完整指南!

下载和安装 PostgreSQL: 访问 PostgreSQL 的官方网站(https://www.postgresql.org/)并下载适合你操作系统的最新版本。 执行安装程序,并按照提示完成安装过程。 在安装过程中,你需要设置超级用户(Superuser)密码,这是用于管理数…

【C++】仿函数在模板中的应用——【默认模板实参】详解(n)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.引入:查看(容器)文档时常…

开发案例:使用 canvas 实现图表系列之折线图

一、功能结构 实现一个公共组件的时候,首先分析一下大概的实现结构以及开发思路,方便我们少走弯路,也可以使组件更加容易拓展,维护性更强。然后我会把功能逐个拆开来讲,这样大家才能学习到更详细的内容。下面简单阐述…

C语言好题分享七(三数之和)

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 三数之和 题目来源LeetCode:刷题传送门 题目:给你一个整数数组 nums ,判断…

Linux——MySQL数据库的使用

访问MySQL数据库 MySOL数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问MySOL数据库 需要使用专门的客户端软件,在Linux系统中,最简单、易用的MySQL.客户端软件是其自带的mysql 命令工具。 登录到MySQL服…

Vue3-13- 【v-for】循环一个对象

说明 v-for 这个东西就很神奇,可以遍历一个对象, 当然,它遍历对象是通过 对象的属性名,遍历对象的属性值。语法格式如下 : v-for"(value,key,index) in objName" value : 属性的值 key :属性的k…

商品规格的实现

在商城项目中购买商品或者添加购物车的时候都会让我们去选择商品的规格,颜色、尺码、风格等,这里把刚做完的此功能代码记录下,方便以后查阅: <template><view><u-navbar title="测试"></u-navbar><view class="content"&g…

多篇整合版:最全电商erp系统接口测试实战

之前我们讲了电商ERP系统接口简介以及如何使用post方式获取接口请求 &#xff0c;今天我们来讲解如何用JMeter实现接口功能、性能测试。 内容&#xff1a; JMeter实现接口功能测试 JMeter实现接口的性能测试 JMeter实现接口功能测试 企业性能测试编写脚本过程&#xff1a;接口…

java学生选课系统 数据库版

首先让我们创建一个数据库 让我们向表中插入数据然后查询它

WSL 配置 Docker 内存和 CPU 资源限制

我用的电脑一共有40G内存&#xff0c;最近发现电脑重启后&#xff0c;VmmemWSL 进程很快就会占用一多半的内存&#xff08;20G&#xff09;&#xff0c;电脑中有多个停止运行的容器&#xff0c;正常启动状态的只有一个 MySQL 服务&#xff0c;通过 docker stats 查看占用内存也…

【详解优先级队列(堆)】

目录 堆的概念 堆的性质 堆的存储方式 堆的创建 堆的向下调整 向下过程(以小堆为例) 向下过程(以大堆为例) 建堆的时间复杂度O(n) 堆的插入与删除 堆的插入 向上调整建堆的时间复杂度O(nlogn) 堆的删除 常见习题 常用接口介绍 PriorityQueue的特性 Pri…

实战1-python爬取安全客新闻

一般步骤&#xff1a;确定网站--搭建关系--发送请求--接受响应--筛选数据--保存本地 1.拿到网站首先要查看我们要爬取的目录是否被允许 一般网站都会议/robots.txt目录&#xff0c;告诉你哪些地址可爬&#xff0c;哪些不可爬&#xff0c;以安全客为例子 2. 首先测试在不登录的…

使用MIB builder自定义物联网网关的MIB结构

文章目录 物联网网关初识&#xff08;了解即可&#xff09;IoT的通用MIB库结构MIB Builder开发流程指导问题总结子叶没所属分组值范围不为0 物联网网关初识&#xff08;了解即可&#xff09; 网关又称网间连接器、协议转换器。简单说&#xff0c;物联网网关是一台智能计算机&a…