面向长范围交互式 LLM 智体的强化学习

25年2月来自 Apple 的论文“Reinforcement Learning for Long-Horizon Interactive LLM Agents”。

交互式数字智体 (IDA) 利用状态数字环境的 API 来执行任务以响应用户请求。虽然由指令调整的大语言模型 (LLM) 驱动 IDA 可以对多步交换中接口调用的反馈做出反应,但它们尚未在各自的数字环境中进行训练。之前的方法在 AppWorld 等复杂基准测试中完成的任务不到一半。本文提出一种强化学习 (RL) 方法,可直接在目标环境中训练 IDA。这种训练形式化为部分可观察的马尔可夫决策过程,并派生出 LOOP,这是一种数据和内存高效的近端策略优化(PPO)变型。LOOP 不使用价值网络,并在内存中仅维护底层 LLM 的一个副本,使其实现简单且内存效率与微调单个 LLM 一样高。在 AppWorld 环境中使用 LOOP 训练的 320 亿参数智体,比规模大得多的 OpenAI o1 智体高出 9 个百分点(相对 15%)。

考虑一个交互式数字智体 (IDA) 面临如图所示的任务。该任务跨越多个软件应用程序,需要关于人类生活和语言的常识性知识。成功完成需要一系列信息收集和状态改变动作,以及根据在此过程中获得的信息进行潜在的重规划。最好的开放权重模型 (Yang,2024) 在这种任务中的成功率低于 40%,而顶级推理模型 (OpenAI,2024) 的成功率仅为 AppWorld 基准 (Trivedi,2024) 测量的一半多一点。这并不奇怪。解决一项任务可能需要智体和 Python 读取-估值-打印循环 (REPL) 之间最多 40 次交互,使用最多 32K 个tokens。AppWorld 环境状态包含最多 30M 个文本tokens,因此必须周到地管理上下文。

请添加图片描述

LLM 智体。经过预训练、指令调整的 LLM 已证明能够通过调用结构化 API 与外部软件环境交互,既可用于信息检索(Nakano,2021;Schick,2023),也可用于在状态外部环境中执行动作(Yao,2020;2022)。为了提高该领域的性能,进一步的研究引入结合推理、执行和反思步骤的结构化工作流(Yao,2023;Shinn,2024;Kim,2024),以及与代码解释器的交互(Wang,2024;Yang,2023)。其他人则对智体轨迹数据集应用监督微调 (Chen,2023;Qin,2024;Mitra,2024)。

LLM 的强化学习。RL 最初用于在从人类反馈 (RLHF) 的强化学习环境中训练 LLM (Ziegler,2019;Stiennon,2020;Ouyang,2022)。这些工作使用 PPO (Schulman,2017) 基于从人类偏好推断出的奖励模型来训练 LLM 策略。带有 PPO 的 RLHF 在训练期间使用最多四个独立的 LLM:奖励模型、训练策略、参考策略和批评模型。Ahmadian (2024) 表明,更简单的 REINFORCE Leave-One-Out (RLOO) 算法 (Kool et al., 2019) 具有竞争力。RLOO 使用在线策略更新,避免对参考 LLM 和批评 LLM 的需求,并使用来自同一查询的多个展开进行基于采样的优势估计,而不是学习的批评模型。

PPO 及其变型已用于训练 LLM 使用程序奖励函数执行推理和静态代码生成。GRPO (Shao et al., 2024; DeepSeek-AI, 2025) 用从同一查询的样本集合计算的基线,替换 PPO 中的批评模型。 VinePPO(Kazemnejad,2024)通过从训练展开的每个推理步分支出来的展开估计每步优势。用于训练推理 LLM 的其他 RL 算法,偏离策略梯度框架,在生成滤波展开的数据集和对这些数据集的监督训练之间交替(Singh,2024;Havrilla,2024;Yuan,2023)。

LLM 智体的强化学习。 RL 已用于训练基于文本游戏中的状态多轮智体(Narasimhan,2015;Yao,2020;Carta,2023)、网络购物和导航环境(Yao,2022)、移动设备控制(Bai,2024)和具身环境(Zhai,2024)。在 WebShop 中使用 RL 训练 LLM 策略的几个工作:Yao (2022)将 REINFORCE 用于学习的值基线,ArCHer(Zhou & Zanette,2024)使用结合离线策略和在线策略训练的分层方法,而 AgentQ(Putta,2024)将树搜索与直接策略优化 (DPO) 相结合。

本文证明强化学习 (RL) 是训练长范围交互式 LLM 智体的有效方法。其方法不需要昂贵的真实动作序列或大量的训练场景数据集。

自回归语言模型 (LM) p_θ 将token序列 x_1:t 映射到下一个token的概率分布 p_θ(x_t+1|x_1:t)。使用自回归 LM 进行生成时,通过对下一个 token x_t+1 ∼ p_θ(·|x_1:t) 进行采样,直到遇到停止 token ⊥。

语言生成可以看作是一个马尔可夫决策过程 (MDP)。MDP 的状态 [c, x_1:t] 是上下文 c 和迄今为止的生成 x_1:t。动作产生下一个 token x_t+1 ∼ p_θ(·|c, x_1:t),通过附加 token [c, x_1:t, x_t+1] 过渡到新状态。

MDP 优化的目标为

请添加图片描述

REINFORCE (Williams, 1992) 对上述目标 (1) 进行了基于采样的梯度估计:

请添加图片描述
其中 A(c, x) 是降低梯度估计方差的优势估计(Schulman,2016)。REINFORCE Leave-One-Out (RLOO) 生成 K 个独立样本 x_1,…,x_K ∼ p_θ(·|c),并使用所有其他样本来计算当前回报的一个基线,即

请添加图片描述

该目标的等效形式通过减去平均回报基线来估计优势(Kool,2019):

请添加图片描述

使用 LLM 的人工反馈强化学习 (RLHF) 通常使用 PPO,其设计目的是在每次训练迭代中执行多次梯度更新。PPO 是一种策略梯度算法,允许更新的策略在某个信任区域内偏离采样策略 (Schulman,2017)。

它依赖于 MDP 目标的重要性加权估计:

请添加图片描述

对于 MDP,PPO 源自策略改进理论(Kakade & Langford, 2002)使用逐动作的重要性权重:

请添加图片描述

用于交互式数字智体的 POMDP

IDA 与读取-求值-打印循环 (REPL) 环境交互,该环境使用与预定义 API 的变量绑定进行初始化。给定任务指令,智体与环境交互以完成任务,并在适用时调用 API 函数。每次交互都包括智体在环境中执行代码块并接收响应字符串。交互持续到智体指示完成(例如通过调用“complete task()”)。重要的是,环境是有状态的。在 AppWorld 中,环境的状态是 (i) 可以通过各种 API 函数查询或修改的关系数据库(例如发送消息或将文本附加到 SimpleNote note)和 (ii) REPL 本身的状态(例如智体定义的 Python 全局变量)。

将 IDA 任务制定为 POMDP。 POMDP 的状态 [s_0 , c, x_1:t ] 是环境 s_0(例如 Python REPL 和数据库)的初始状态、任务上下文 c(即用户提示)以及迄今为止的生成 x_1:t。动作会产生下一个 token x_t+1 ∼ p_θ (·|c, x_1:t )。大多数转换再次简单地附加一个token [s_0, c, x_1:t] → [s_0, c, x_1:t+1]。然而,某些转换(当智体发出停止 token 时)会触发环境执行代码。这些转换将生成的 token x_t+1 和 token 化的环境响应 x_t+2:t+1+k 附加到状态 [s_0, c, x_1:t+1+k]。在连续回合中,LLM 会观察到生成 x_1:t+1 和环境响应 x_t+2:t+1+k。如图描述这个过程。
请添加图片描述

令 a(x) ⊆ {1,…,T} 表示轨迹 x 中由 LLM 发出的 token x_t 子集(相对于环境响应的一部分)。令 I(s_0, x) ∈ {0, 1} 表示为初始状态 s_0 具有一致 API 响应的轨迹指标。轨迹上的分布为

请添加图片描述

智体 p_θ 的目标是最大化其预期回报:

请添加图片描述

当展开从 ρ_ψ 中采样时(即使用不同的 LLM p_ψ),PPO 的重要性权重降低到

请添加图片描述

Token-级 PPO 梯度简化为 LLM 生成的 token x_t 的总和。

Leave-one-out 近端策略优化

LOOP 将 PPO 与 Leave-one-out 优势估计相结合(Kool,2019)。该算法分为两个阶段:展开收集和策略更新。在展开收集期间,从数据集 D 中的每个初始状态和上下文对 (s_0, c) 的 POMDP 中抽取 K 个样本。然后,使用 Leave-one-out 估计器直接计算每个部署的优势。在更新期间,会迭代 N_epoch 个 epochs 所有收集的展开。每个 epoch 都会迭代随机小批量,以使用 PPO 目标更新策略。随机打乱轨迹,而不考虑它们的初始状态-上下文对 (s_0, c)。该过程总结在如下算法中:

请添加图片描述

带有 token、轨迹和轮回的 PPO。在上述算法的第 9 行中,尝试每个token、每个轨迹或每个轮回的重要性权重(如上图所示)。

LOOP 作为 REINFORCE Leave-One-Out(Ahmadian,2024)。如果 LOOP 纯粹按策略运行(N_epoch = 1,没有小批量),则该算法简化为 REINFORCE Leave-One-Out (RLOO),因为 PPO 中的策略更新简化为 REINFORCE。

LOOP 作为 GRPO(Shao,2024)。LOOP 和 GRPO 主要在优势估计方面有所不同。GRPO 使用 Leave-One-Out 估计,由回报的标准差归一化。这不成比例地有利于低-标准-差轨迹,LLM 可从中获得一致的回报。通过实验,放弃这种标准化是有益的。

AppWorld 基准测试(Trivedi,2024)代表用户测试 IDA 与九个模拟消费者应用程序(包括电子邮件、支付、音乐、购物、电话和文件系统)的 API 交互能力。智体与状态 Python 解释器交互,以完成不同难度的任务(难度等级 1 到 3)。每个任务包含一系列单元测试,以确保 (1) 成功完成对环境状态的请求更改,(2) 环境或应用程序状态没有多余的更改,以及 (3) 智体生成的最终答案与基本事实相符(如适用)。

AppWorld 总共包含 250 个任务模板或场景,每个场景有 3 个任务变型,总共 750 个任务。任务分为训练(35 个场景,105 个任务)、开发(20 个场景,60 个任务)、测试-正常(Test-N)(56 个场景,168 个任务)和测试-挑战(Test-C)(139 个场景,417 个任务)。Test-C 的任务需要更复杂的交互序列,并涉及训练期间未见过的新应用程序。计算任务目标完成率 (TGC) 和场景目标完成率 (SGC) 指标,即每个任务和每个场景的成功率。只有当所有相应任务都成功时,场景才被视为成功。

使用 Qwen2.5-32B-Instruct (Yang et al., 2024) 作为基础模型,并使用 LoRA (Hu et al., 2022) 进行微调。在所有难度为 1 和 2 的训练场景(30 个场景中的 24 个,列于附录 D.1)上进行训练,并将智体在训练期间的交互次数限制为 40 次,在评估期间的交互次数限制为 50 次。对每个任务使用 K = 6 次部署,奖励 R(s_0, c, x) ∈ [0, 1],对应于该任务通过的单元测试比例。

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

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

相关文章

sql语言语法的学习

sql通用语法 sql分类 DDL(操作数据库和表) 操作数据库 操作表_查询 操作表_创建 举例: 操作表_删除 操作表_修改 DML(增删改表中数据) DML添加数据 DML删除数据 DML修改数据 DQL 单表查询 基础查询 条件查询 案例演示: 排序查询 聚合函数 分组查询…

kkFileView二开之pdf转图片接口

kkFileView二开之Pdf转图片接口 kkFileView二开系列文章:1 kkFileView源码下载及编译2 Pdf转图片接口2.1 背景2.2 分析2.2 接口开发2.2.1 编写Pdf转图片方法2.2.2 编写转换接口 2.3 接口测试2.3.1 Pdf文件准备2.3.2 pdf2Image 3 部署 kkFileView二开系列文章&#x…

Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档

Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档 本文将对七个流行的定时任务调度库:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。这些库都可以用来处理定时任务,但它们的特点和适用场景有所不同。我们将从…

驱动开发系列37 - Linux Graphics 2D 绘制流程(二)- 画布创建和窗口关联

一:概述 前面介绍Pixmap表示一块画布,是绘制发生的地方,本节看看驱动程序如何为画布分配内存/显存,以及如何与窗口关联的。 二:为画布分配BO 在系统启动时(用户登录系统之后,会重启Xorg),在 Xorg 服务器初始化时,要为屏幕创建根窗口的 Pixmap,并绑定到 GPU framebu…

Numpy简易入门

1.1 认识Numpy数组对象 1.1.1 导入NumPy工具包 #导包并起别名为np import numpy as np1.1.2 创建一个三行五列的数组 data np.arange(15).reshap(3, 5)打印结果&#xff1a; 1.1.3 查询data类型 print(type(data))打印结果&#xff1a; <class numpy.ndarray> nda…

【设计模式】【行为型模式】访问者模式(Visitor)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…

建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11

这次我们继续解读代码&#xff0c;我们主要来看下面两个部分&#xff1b; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习&#xff1a; #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…

源代码防泄密沙箱是啥意思?

SDC沙盒通过多种技术手段实现环境隔离&#xff0c;从而有效防止数据泄露。以下是其具体的隔离机制&#xff1a; 1. 创建隔离的加密沙盒 SDC沙盒在员工电脑上虚拟出一个对外隔绝的加密沙盒。这个沙盒会主动与服务器进行认证对接&#xff0c;形成服务器-客户端沙盒这样一个涉密…

【复现DeepSeek-R1之Open R1实战】系列4:SFT和GRPO源码逐行深度解析(上)(3万字长文,从零开始到入门,包含详细的拓展基础知识)

目录 1 前言1.1 Open R1项目简介1.2 主要步骤1.3 原理图 2 基础知识2.1 Vocabulary和Tokenizer2.1.1 vocab.json, tokenizer.json, tokenizer_config.json2.1.2 什么是tokenizer2.1.3 在哪一步将tokenizer转成embedding2.1.4 tokenizer的代码实现 2.2 SFT和GRPO2.2.1 SFT2.2.2 …

课题推荐:高空长航无人机多源信息高精度融合导航技术研究

高空长航无人机多源信息高精度融合导航技术的研究&#xff0c;具有重要的理论意义与应用价值。通过深入研究多源信息融合技术&#xff0c;可以有效提升无人机在高空复杂环境下的导航能力&#xff0c;为无人机的广泛应用提供强有力的技术支持。希望该课题能够得到重视和支持&…

python_excel批量插入图片

提取excel的指定列的值的后4位&#xff08;数值&#xff09;&#xff0c;在其它列名的单元格中&#xff0c;批量嵌入与该数值匹配的图片&#xff08;未实现居中&#xff09;&#xff0c;每间隔4行处理一次&#xff08;合并过单元格&#xff09;。 import pandas as pd from ope…

DeepSeek 助力 Vue 开发:打造丝滑的颜色选择器(Color Picker)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

Jenkinsdebug:遇到ERROR: unable to select packages:怎么处理

报错信息&#xff1a; 报错信息解释&#xff1a; musl-1.2.5-r0 和 musl-dev-1.2.5-r1: 这里说明 musl-dev 需要一个特定版本的 musl&#xff0c;即 musl1.2.5-r1&#xff0c;但是当前版本的 musl&#xff08;1.2.5-r0&#xff09;并不满足这个条件。版本冲突: 当尝试安装新…

并查集基础+优化(下标从0开始)

#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N 1e510; int n,m; int fa[N]; void set(int u,int v) {fa[v] u; } int find(int arr[],int i) {while(arr[i] ! -1){i arr[i]; } return i;//返回的是这个节点…

STM32创建静态库lib

创建静态库lib 1. 新建工程1.1 创建工程文件夹1.2 编写用户相关代码1.2.1 stm32f4xx_it.h1.2.2 stm32f4xx_it.c1.2.3 标准库配置&#xff1a;stm32f4xx_conf.h1.2.4 HAL库的配置&#xff1a;stm32f4xx_hal_conf.h1.2.5 LL库配置&#xff1a;stm32f4xx_ll_conf.h 1.3 移植通用文…

CV -- 基于GPU版显卡CUDA环境+Pycharm YOLOv8 检测

目录 下载 CUDA 下载 cuDNN 下载 anaconda 安装 PyTorch pycharm 搭配 yolo 环境并运行 阅读本文须知&#xff0c;需要电脑中有 Nvidia 显卡 下载 CUDA 打开 cmd &#xff0c;输入 nvidia-smi &#xff0c;查看电脑支持 CUDA 版本&#xff1a; 我这里是12.0&#xff0c;进入…

MATLAB图像处理:图像分割方法

图像分割将图像划分为具有特定意义的子区域&#xff0c;是目标检测、医学影像分析、自动驾驶等领域的核心预处理步骤。本文讲解阈值分割、边缘检测、区域生长、聚类分割、基于图的方法等经典与前沿技术&#xff0c;提供MATLAB代码实现。 目录 1. 图像分割基础 2. 经典分割方…

海康摄像头IPV6模式,手动,自动,路由公告

海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议&#xff08;IP&#xff09;的第六版&#xff0c;用于替代IPv4&#xff0c;提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接&#xff1a; 手动&#xff1a;用户可…

NewMap10.3土地勘测定界自动化系统

“NewMap报件通”适用于建设项目用地土地勘测定界工作&#xff0c;其设计理念是以最大化提高作业效率与最简化作业员操作为原则&#xff0c;后台采用数据库管理技术&#xff0c;以“GIS概念”实现了图形数据与属性数据的双向联动&#xff0c;利用该系统可以方便快捷地绘制数字化…

栈(典型算法思想)—— OJ例题算法解析思路

目录 一、1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; 算法代码&#xff1a; 1. 初始化结果字符串 2. 遍历输入字符串 3. 检查和处理字符 4. 返回结果 总结 二、844. 比较含退格的字符串 - 力扣&#xff08;LeetCode&#xff09; 算…