WebRL: Training LLM Web Agents via Self-Evolving Online Curriculum Reinforcement Learning
论文阅读:WebRL——通过自演化在线课程强化学习训练 LLM Web Agent
论文标题:WebRL: Training LLM Web Agents via Self-Evolving Online Curriculum Reinforcement Learning
作者:Zehan Qi, Xiao Liu, Iat Long Iong, Hanyu Lai, Xueqiao Sun, Wenyi Zhao, Yu Yang, Xinyue Yang, Jiadai Sun, Shuntian Yao, Tianjie Zhang, Wei Xu, Jie Tang, Yuxiao Dong
作者机构:Tsinghua University(清华大学)、Zhipu AI(智谱 AI)
发表位置:ICLR 2025,Conference Paper / Poster
arXiv 编号:2411.02337
原文链接:https://arxiv.org/abs/2411.02337
PDF:https://arxiv.org/pdf/2411.02337
OpenReview:https://openreview.net/forum?id=oVKEAFjEqv
代码:https://github.com/THUDM/WebRL
主题:Web Agent、Agentic RL、Online RL、Curriculum Learning、Self-Evolving
核心问题:如何让开源 LLM 在交互式网页环境中通过不断与环境交互、生成新的训练任务并进行 RL,持续成长为能力更强的 Web Agent?
1. 论文要解决什么问题?
LLM 被用作 Web Agent 时,需要根据用户指令不断观察网页、点击按钮、填写表单、搜索内容,经过多步操作最终完成任务。
例如:
找到 2022 年 3 月到 2023 年 4 月之间所有处于 Pending 状态的订单,然后返回交易金额最高的 8 个订单的 Purchase Date。
这类任务和普通的文本问答有明显区别。
Agent 需要形成一个长达多步的交互 trajectory:
其中:
- \(s_t\):当前网页状态;
- \(a_t\):Agent 执行的网页操作;
- \(T\):任务结束时的交互步数。
作者认为,当时的 Web Agent 存在一个明显问题:
强 Web Agent 往往高度依赖 GPT-4 等 proprietary LLM,而开源模型直接拿来做 Web Agent 的能力非常弱。
例如在 WebArena-Lite 上:
| 模型 | Success Rate |
|---|---|
| Llama-3.1-8B-Instruct | 4.8% |
| GLM-4-9B-Chat | 6.1% |
| GPT-4-Turbo | 17.6% |
| AutoWebGLM | 18.2% |
仅仅依靠 prompting,并不能让较小的开源模型获得足够强的网页决策能力。
因此作者希望直接通过 online reinforcement learning,让模型在网页环境中不断交互和学习。
但这么做又会遇到三个问题。
1.1 训练任务太少
WebArena-Lite 虽然提供了训练数据,但只有约一千条带 oracle trajectory 的 instruction。
对于训练一个 Web Agent 来说,这远远不够。
如果始终在固定的任务集上学习,模型很快就会把这些任务学完,之后很难继续提高。
1.2 Reward 极其稀疏
Web Agent 一条 trajectory 可能包含十几甚至几十步操作。
但环境通常只能告诉 Agent:
最后任务完成了吗?
也就是只有最终 reward:
中间操作基本没有 reward。
因此很容易出现:
前 9 步都做对了
↓
第 10 步点错
↓
最终任务失败
↓
reward = 0
这样一来,前面那些实际上正确的操作也很难获得有效的学习信号。
1.3 Online Learning 容易发生策略漂移和遗忘
假设 Agent 已经学会了任务 A、B、C。
下一阶段开始训练更加复杂的新任务 D、E、F。
如果只在这些新任务上更新参数,模型可能出现:
D、E、F 学会了,但是 A、B、C 又不会了。
也就是典型的 catastrophic forgetting。
从策略分布角度看,就是新策略 \(\pi_\theta\) 和之前的策略发生了过大的 distribution shift。
因此 WebRL 实际上要同时解决:
| 问题 | WebRL 的解决方案 |
|---|---|
| 训练任务不足 | Self-Evolving Curriculum |
| 新生成任务没有环境 reward | Outcome-Supervised Reward Model(ORM) |
| Reward 稀疏 | Critic + Advantage Estimation |
| 新阶段训练导致旧能力遗忘 | KL-Constrained Policy Update |
| 历史经验被丢弃 | Experience Replay Buffer |
| Replay 太简单或太困难 | Actor Confidence Filtering |
这些组件共同构成了 WebRL。
2. WebRL 整体思路
WebRL 最核心的思想可以先简单概括成一句话:
哪里做不会,就从哪里继续生成新的训练题,然后不断训练。
假设当前 Agent 遇到下面一批任务:
Task A → 成功
Task B → 失败
Task C → 成功
Task D → 失败
WebRL 不只是把 B 和 D 再训练几遍。
而是把这些失败任务作为种子:
Task B
Task D
↓
生成一些相似难度、相关类型的新任务
↓
过滤掉太简单、太困难或网页环境中根本无法完成的任务
↓
得到下一阶段 curriculum
Agent 再去这些新任务上 rollout。
新的失败任务又继续成为下一轮课程生成的种子。
于是形成:
当前 Agent
↓
执行任务
↓
成功 / 失败
↓
失败任务
↓
生成新的训练任务
↓
筛选适合当前 Agent 的任务
↓
Online RL
↓
更强的 Agent
↓
继续生成下一阶段任务
这就是论文标题里的:
Self-Evolving Online Curriculum Reinforcement Learning

【Figure 2(WebRL 整体框架,包括 Web 交互、Actor、Critic、Self-Evolving Tasks、Replay Buffer 和 KL Policy Update)】
不过这里需要特别注意 self-evolving 的具体含义。
WebRL 所谓的“自演化”,主要是:
训练任务集合 / curriculum 随 Agent 当前能力不断演化。
它不是让 Agent:
- 修改自己的源代码;
- 修改 Agent framework;
- 修改 tool schema;
- 自动重构 Prompt;
- 自动设计新的 Agent architecture。
真正被 RL 更新的仍然主要是模型参数。
因此 WebRL 中的 self-evolving,更准确地理解应该是:
self-evolving curriculum + continuously updated policy
而不是后来某些 Self-Improving Agent 工作所讨论的“Agent 自己修改自身系统结构”。
3. WebRL 中 Agent 到底看到了什么?
论文将 Web Agent 的 observation 设计为三部分:
- User Instruction;
- Action History;
- 当前网页的 HTML。
即:
用户任务
+
此前采取过的动作
+
当前网页 HTML
作者会对 HTML 进行简化,并给网页中的可交互元素分配 element ID。
例如:
<button id="25">Clear all</button>
模型可以输出:
Click element 25
Agent 支持的操作包括:
- Click;
- Hover;
- Type;
- Search;
- Press;
- Scroll;
- Select dropdown option;
- New tab;
- Tab focus;
- Close tab;
- Goto;
- Go back;
- Go forward;
- Exit。
因此这里的 LLM 本质上就是一个 policy:
根据:
- 当前网页状态 \(s_t\);
- 用户任务 \(I\);
决定下一步执行什么 action。
4. WebRL 的完整训练流程
WebRL 并不是直接拿一个基础模型开始 RL,而是分成两个阶段:
Part 1:SFT 冷启动
Part 2:Self-Evolving Curriculum RL
4.1 第一阶段:先用 SFT 得到一个基础 Web Agent
首先使用 WebArena-Lite 提供的 demonstration data 对基础模型进行 SFT:
这是必要的,因为如果直接让一个几乎不会操作网页的模型做 online RL:
随机点击
→
几乎所有任务失败
→
reward 几乎全部为 0
→
没有有效学习信号
因此 SFT 相当于给 Agent 一个初始能力。
随后让 \(M_{\mathrm{SFT}}\) 在训练任务上 rollout。
任务被分成:
- 成功任务;
- 失败任务。
失败任务会进入 Failure Set:
成功经验则成为历史经验的一部分。
之后正式进入 Self-Evolving Curriculum RL。
5. Self-Evolving Curriculum:失败任务如何变成新课程?
这是 WebRL 最核心的设计之一。
论文的基本逻辑是:
如果 Agent 在某类任务上失败,就说明这个区域正好位于 Agent 当前能力边界附近。
与其随机生成大量任务,不如围绕这些失败任务继续生成训练数据。
5.1 用失败任务作为 seed
假设上一阶段模型无法完成:
Fetch the "Order Quantity" from the report on best-selling products between October 1st and 31st, 2022.
那么这个任务会进入 Failure Set。
接下来作者使用 GPT-4o,以这些失败任务作为 examples,通过 in-breadth evolving 的方式生成更多新 instruction。
生成的新任务需要:
- 保持相同 domain;
- 与原任务具有相关能力要求;
- 表达更加多样;
- 难度大致相近,可以略简单或略困难。
因此不是简单复制失败任务,而是在它附近扩展一个新的任务分布。
5.2 为什么不能直接使用所有生成任务?
LLM 生成出来的任务可能存在两个问题。
第一种是:
太难。
当前 Agent 根本没有能力探索出成功 trajectory。
如果一直训练这种任务:
rollout
→
全部失败
→
reward = 0
还是无法学习。
第二种是:
根本无法在 WebArena 中完成。
例如生成一个网站不存在的功能或者不存在的数据。
所以生成之后必须过滤。
6. 用 Critic 控制 curriculum 难度
作者首先使用当前 Critic 对新 instruction 的初始状态进行评分。
只保留:
的任务。
直观来说:
如果 Critic 给出的 value 很高:
V ≈ 1
说明 Agent 已经非常有把握,这个任务太简单。
如果:
V ≈ 0
则说明当前 Agent 几乎不可能完成,任务太难。
WebRL 希望保留的是:
位于当前 Agent 能力边界附近的任务。
这就是 curriculum learning 的核心。
任务难度并不是提前人工规定:
Easy
Medium
Hard
而是相对于当前 policy 的能力动态确定。
同一个任务:
Phase 1:可能非常困难
Phase 5:可能已经非常简单
因此课程本身会随着 Agent 变化。
6.1 再过滤不可完成任务
仅仅依靠 Critic 仍然不能判断:
这个任务到底能不能在 WebArena 中完成。
作者首先人工分析了一些生成任务,找出典型的 infeasible instruction。
然后根据这些情况构造 Prompt,再调用 GPT-4o 自动判断生成任务是否能在 WebArena 环境中完成。
所以任务生成实际上是:
Failure Tasks
↓
GPT-4o 生成新任务
↓
Critic 过滤难度
↓
GPT-4o 过滤不可执行任务
↓
当前 Phase 的 Curriculum
论文实验中,每一个 phase 最终会选取 500 个新的 instruction。
7. Curriculum 到底是如何“演化”的?
论文的 Case Study 很好地解释了这件事。

【Figure 8(不同 Phase 下 Self-Evolving Curriculum 生成的任务示例)】
作者观察到课程演化主要出现两类行为。
7.1 第一种:生成相似或更容易的过渡任务
Agent 无法完成一个复杂任务时,并不一定马上生成更难的任务。
系统有时会生成:
- 任务要求相似;
- 表达更加明确;
- 难度稍低;
的新任务。
Agent 先通过这些任务学会对应技能。
随后再回到原来的任务时,就更容易成功。
也就是说,它实际上形成了类似:
困难任务
↓
当前不会
↓
构造附近较简单任务
↓
学习相关技能
↓
重新获得解决困难任务的能力
的 curriculum。
7.2 第二种:生成更复杂、更丰富的任务
当某一类能力已经逐渐掌握之后,又会产生:
- 条件更多;
- 要求更多;
- 推理步骤更长;
的新任务。
这样课程会继续推动模型能力边界。
因此作者总结出的整体过程是:
能力边界上的失败任务
↓
生成附近任务
↓
学会相关能力
↓
生成更复杂任务
↓
继续扩展能力边界
这就是 WebRL 所谓的 self-evolving curriculum。
需要注意,Figure 8 中相邻两个 Phase 展示的任务不一定存在直接父子生成关系,它们主要是用来展示随着训练进行,整体 curriculum 如何变化。
8. 为什么还需要一个 ORM?
新的 curriculum 是自动生成出来的。
这会导致一个关键问题:
新生成的 instruction 没有 WebArena 官方 reward function。
原始 WebArena 数据可以告诉系统:
这个任务成功了 / 失败了
但是 GPT-4o 新生成的任务不存在预定义 evaluator。
那 RL 的 reward 从哪里来?
WebRL 的解决方案就是:
Outcome-Supervised Reward Model(ORM)
9. ORM:判断一整条 trajectory 是否成功
作者训练一个 LLM 作为 ORM:
它的任务非常简单:
给定 Agent 的执行结果,判断用户任务最终有没有完成。
ORM 的输入包含:
- User Instruction;
- Action History;
- 最终网页状态的 HTML。
之所以只保留最后一个网页状态的 HTML,是因为完整 trajectory 中的 HTML 太长,会造成严重的 context 开销。
ORM 最终只输出:
YES
或者:
NO
实际判断时比较:
和
如果:
则认为任务成功:
否则:
因此 ORM 是整个 self-evolving loop 的重要基础设施。
否则系统虽然能够不断自动生成新任务,却无法判断这些新任务有没有完成。
10. ORM 是怎么训练出来的?
WebArena-Lite 本身提供了 1186 条训练样本,每条样本包含:
- instruction;
- trajectory;
- reward function。
作者首先对这些任务进行改写和变量替换,比如修改:
- 地点名称;
- 产品名称;
- 任务表达。
然后让 WebRL 和多个 baseline 在这些任务上 rollout。
因为这些原始任务仍然拥有 WebArena 的真实 reward function,所以可以自动知道:
trajectory → success / failure
最终得到大约 12,200 条样本训练 ORM。
因此这里有一个很重要的数据流:
拥有真实 reward function 的任务
↓
收集大量 rollout
↓
reward function 自动打标签
↓
训练 ORM
↓
ORM 学会判断任务是否完成
↓
用于后来没有 reward function 的生成任务
换句话说,ORM 相当于把原来有限任务上的 evaluator 能力泛化到了新任务上。
11. WebRL 的 RL 部分解决什么问题?
现在已经有了:
- 自动生成的新任务;
- ORM 提供最终 reward。
接下来就可以做 RL。
但是 WebRL 面临一个特殊场景:
Phase 1 学一批任务
Phase 2 换一批任务
Phase 3 又换一批任务
...
如果每一轮都只优化当前 phase:
新任务虽然越来越会做,但以前学到的任务可能不断遗忘。
因此作者重点设计了一个:
KL-constrained policy update
12. KL-Constrained Policy Update
假设:
- 上一个 phase 的 policy 为 \(\pi_{\mathrm{ref}}\);
- 当前需要优化的 policy 为 \(\pi_\theta\)。
WebRL 希望做到两件事:
第一:
新任务要学会。
第二:
新 policy 又不能偏离旧 policy 太远。
论文给出的优化目标为:
其中:
- \(\rho(I)\):当前 phase 的任务分布;
- \(\pi_{\mathrm{ref}}\):上一阶段 policy;
- \(\pi_\theta\):当前正在训练的 policy;
- \(\mathcal H(\pi_\theta)\):policy entropy;
- \(\beta\):控制 KL constraint 强度。
直观上,这个目标可以理解为:
一方面最大化任务 reward,另一方面限制当前 policy 不要离 reference policy 太远。
13. 从 Advantage 推出 WebRL 的 Policy Loss
作者进一步得到:
其中 \(A^*\) 表示:
当前 action 相对于这个状态下平均 action 有多好。
因此,如果一个 action 的 advantage 很高:
那么理想 policy 应该提高这个 action 的概率。
如果:
则应该降低其概率。
WebRL 最终构造的 policy loss 为:
其中 \(\nu\) 是训练经验的数据分布。
这个 loss 的直观意义非常重要。
它实际上要求:
也就是说:
action 的概率应该相对于上一阶段 policy 改变多少,由这个 action 的 advantage 决定。
13.1 Advantage 为正时
如果:
说明这个 action 是好 action。
模型应该提高:
但如果当前 policy 相对于 \(\pi_{\mathrm{ref}}\) 已经把这个 action 提高很多了,KL constraint 就会限制它继续无节制增长。
13.2 Advantage 为负时
如果:
说明这个 action 不好。
模型应该降低这个 action 的概率。
同样,KL constraint 会限制 policy 发生过于激烈的变化。
因此这个更新机制可以简单理解为:
Advantage 决定往哪个方向更新,reference policy 决定最多不要走得太远。
14. Advantage 从哪里来?
真正的 \(A^*\) 不可能直接获得。
所以 WebRL 训练一个 Critic:
来估计:
从当前网页状态出发,最终完成任务的概率/价值。
由于 Web Agent 中间没有 reward,作者重点结合两种信息:
- 下一状态的 value;
- 最终任务是否成功。
主文中给出的 advantage estimator 为:
论文设置:
也就是同时参考:
- one-step value difference;
- trajectory 最终结果。
附录进一步说明,实际实验中使用 discount factor:
因此 Advantage 会同时考虑:
这个 action 有没有让下一状态变得更好,以及整条 trajectory 最终有没有完成任务。
15. 为什么 WebRL 不直接使用 PPO?
论文附录专门讨论了这一点。
PPO 完全可以优化带 KL constraint 的 RLHF-style objective。
问题在于:
PPO 是 on-policy 方法。
也就是说训练过程中需要不断使用当前 policy 重新 rollout 大量数据。
而真实网页交互:
- 速度慢;
- 成本高;
- 环境执行复杂。
因此作者认为 PPO 的 sampling efficiency 不适合 WebArena 这样的环境。
WebRL 特意设计成:
off-policy RL
这样过去收集的 trajectory 也可以继续利用。
15.1 与 DPO 的区别
DPO 依赖 preference pair:
同一个输入
├── preferred response
└── rejected response
但是网页环境很难做到:
回到完全相同的网页状态,然后执行另外一个 action,再观察最终结果。
因此构造 pair-wise trajectory 的成本很高。
WebRL 不依赖这种 pair-wise data。
15.2 与 AWR 的区别
AWR 主要根据 advantage 对行为数据进行加权。
而 WebRL 显式地使用:
约束当前 policy。
作者还强调,WebRL 的更新规则能够直接降低负 advantage action 的概率,而 AWR 并不具备完全相同的机制。
因此论文将自己的 policy optimization 定位为:
适用于昂贵网页交互环境的 off-policy、KL-constrained RL。
16. Experience Replay Buffer:防止遗忘
光靠 KL constraint 还不够。
WebRL 又从数据层面引入:
Experience Replay Buffer
每个 phase 中成功完成的 trajectory 会被保存。
后续训练时:
当前阶段的新 rollout
+
过去成功的历史经验
一起训练 Actor 和 Critic。
这样模型学习新任务时仍然不断复习过去能力。
论文还限制:
Replay 的历史数据量最多为当前新 interaction data 的 2 倍。
避免旧经验完全压过新经验。
17. 为什么 Replay Buffer 只存成功 trajectory?
这是一个非常关键的设计。
假设一条 trajectory:
Step 1 正确
Step 2 正确
Step 3 正确
Step 4 错误
Step 5 失败
最终 reward = 0
如果把这条 trajectory 直接拿来 replay:
由于只有最终 outcome reward,算法可能会把:
Step 1
Step 2
Step 3
这些实际上正确的操作也错误地估计成负 advantage。
结果反而降低正确 action 的概率。
因此作者选择:
历史 replay buffer 只保存成功 trajectory。
这样至少可以保证这些历史 trajectory 整体上是正确的。
论文附录也专门进行了实验:
Replay Buffer 中加入 failed trajectories 后,模型提升速度更慢,而且波动更明显。
18. Actor Confidence Filtering:过去的经验也不能全部学
即使全部都是成功 trajectory,也不能无脑 replay。
为什么?
假设有一条经验模型已经熟得不能再熟:
P(action | state) ≈ 1
继续反复训练几乎没有价值。
反过来,如果某条历史 action 对当前模型来说非常陌生:
P(action | state) 极低
强行学习又可能造成很大的 policy shift。
因此作者使用 Actor 计算 replay experience 的 perplexity。
只保留:
大约就是:
这个中间区间。
也就是说:
太熟悉 → 不学
中等难度 → 学
过于陌生 → 不学
这实际上又体现了一次 curriculum 的思想:
不只是新任务需要控制难度,历史经验也应该选择当前模型“刚好值得学”的部分。
19. 一轮 WebRL 到底发生什么?
把前面的组件串起来,一轮完整的 Phase 可以概括为:
Step 1:从 Failure Set 中取失败任务
保存之前 Agent 没能完成的 instruction。
Step 2:GPT-4o 根据失败任务生成新任务
生成同 domain、相似难度但更加多样的新 instruction。
Step 3:任务过滤
Critic 根据当前模型能力过滤任务,只保留:
的 instruction。
然后再使用 GPT-4o 排除无法在 WebArena 中完成的任务。
每阶段最终选取约 500 个任务。
Step 4:Actor 在这些任务上 rollout
得到新的:
Step 5:ORM 判断成功还是失败
得到:
和:
Step 6:从 Replay Buffer 中选择旧经验
利用 Actor perplexity 找出“中等熟悉度”的历史经验:
Step 7:训练 Actor 和 Critic
训练数据为:
Actor 使用 KL-constrained policy update。
Critic 同样同时利用当前 rollout 和历史经验训练。
Step 8:更新 Memory
成功 trajectory 加入 Replay Buffer:
失败 instruction 加入 Failure Set:
然后继续下一阶段。
最终形成完整闭环:
失败任务
↓
生成课程
↓
难度过滤
↓
Agent Rollout
↓
ORM 判断结果
↓
成功 → Replay Buffer
失败 → Failure Set
↓
Actor + Critic 更新
↓
下一阶段
论文实验中一共进行了 8 个 Phase。
20. 实验设置
作者主要在 WebArena 环境中进行实验。
WebArena 包含多个真实交互式网站环境:
| 网站 | 类型 |
|---|---|
| 社区论坛 | |
| GitLab | 代码管理 |
| CMS | 电商后台管理 |
| Map | OpenStreetMap |
| OSS | OneStopShop 电商网站 |
原始 WebArena 一共有 812 个 instruction。
考虑测试成本,论文使用 WebArena-Lite 中人工验证过的 165 个测试任务进行主要评估。
核心指标为:
Success Rate(SR)
即 Agent 成功完成任务的比例。
21. 主要实验结果
论文最核心的结果如下。
| 模型 | GitLab | CMS | Map | OSS | Avg. SR | |
|---|---|---|---|---|---|---|
| GPT-4-Turbo | 10.5 | 16.7 | 14.3 | 36.7 | 13.3 | 17.6 |
| GPT-4o | 10.5 | 10.0 | 20.0 | 20.0 | 11.1 | 13.9 |
| AutoWebGLM 6B | 9.4 | 15.0 | 28.6 | 24.8 | 17.1 | 18.2 |
| GLM-4-9B | 5.3 | 10.0 | 6.7 | 3.3 | 6.7 | 6.1 |
| GLM-4 + SFT | 47.4 | 13.3 | 31.4 | 23.3 | 13.3 | 22.4 |
| GLM-4 + DigiRL | 63.2 | 30.0 | 34.3 | 26.7 | 26.7 | 31.5 |
| GLM-4 + WebRL | 57.9 | 50.0 | 48.6 | 36.7 | 37.8 | 43.0 |
| Llama-3.1-8B | 0.0 | 3.3 | 2.9 | 3.3 | 11.1 | 4.8 |
| Llama-3.1-8B + SFT | 36.8 | 6.7 | 20.0 | 33.3 | 17.8 | 20.6 |
| Llama-3.1-8B + AWR | 57.9 | 26.7 | 31.4 | 26.7 | 17.8 | 28.5 |
| Llama-3.1-8B + DigiRL | 57.9 | 26.7 | 37.1 | 33.3 | 17.8 | 30.3 |
| Llama-3.1-8B + WebRL | 63.2 | 46.7 | 54.3 | 36.7 | 31.1 | 42.4 |
结果非常明显。
Llama-3.1-8B 从:
提高到:
GLM-4-9B 从:
提高到:
而同样使用 online RL 的 DigiRL:
- Llama-3.1-8B:30.3%
- GLM-4-9B:31.5%
仍然明显低于 WebRL。
作者认为其中一个重要原因就是:
DigiRL 始终使用固定任务集,而 WebRL 会让训练任务随着模型能力变化。
需要注意,论文 Table 1 中 AWM + GPT-4 与 WebPilot + GPT-4o 标有 *,这些数字是文献中在完整 WebArena 上报告的结果,并非全部来自同一个 WebArena-Lite 165-task evaluation 设置,因此解读时需要注意这一点。
22. Scaling:70B 模型是否仍然有效?
作者进一步训练 Llama-3.1-70B。
结果:
| 方法 | Avg. SR |
|---|---|
| Llama-3.1-70B | 12.7 |
| Llama-3.1-70B + SFT | 23.0 |
| Llama-3.1-70B + WebRL | 49.1 |
WebRL 相比 SFT 又提高了:
个百分点。
因此作者认为 WebRL 并不局限于 8B/9B 规模,在更大的模型上仍然能够获得明显提升。
23. 为什么 RL 比单纯 SFT 更适合 Web Agent?
作者发现一个很典型的现象。
SFT 模型很容易过度模仿 demonstration 中高频出现的动作。
比如 CMS 任务中:
Scroll Down
出现得很多。
SFT 模型可能过度学习:
Scroll Down
Scroll Down
Scroll Down
...
最终陷入循环。
因为 SFT 的目标本质是:
当前状态下模仿 demonstration 的下一步 action。
它并不会直接考虑:
这个 action 最终是否帮助完成整个任务?
而 RL 优化的是 trajectory outcome,因此更加关注长期结果。
24. Error Type 分析
论文将失败分成四种类型:
- Fail to Recover;
- Get Stuck Midway;
- Stop at Wrong Page;
- Fail to Make Reasonable Attempt。
WebRL 最明显的改进之一是:
减少 Get Stuck Midway。
也就是 Agent 不容易陷入:
同一个操作
↓
还是同一个操作
↓
继续同一个操作
的死循环。
另外一个提升是 Fail to Recover。
例如 Agent 搜索:
Pharmacy near CMU within a 20-minute walking distance
没有得到结果。
较弱的 Agent 可能继续重复相同搜索。
WebRL 训练后的 Agent 则可能修改为:
Pharmacy near CMU
重新探索。
作者认为 curriculum training 帮助模型提高了失败后的恢复能力。
25. 对 Long-Horizon Task 的表现
作者按照完成任务所需要的交互步数进行分析。
结果表明:
- SFT;
- Filtered BC;
随着任务步数增加,性能明显下降。
DigiRL 在中等长度任务上较好,但当任务需要:
10 步以上
时性能明显变差。
WebRL 在长任务上的表现更稳定。
作者将这个结果主要归因于 curriculum learning:
固定任务上的 online RL 很难从复杂长任务中获得正 reward。
而 WebRL 可以通过:
相关简单任务
↓
逐渐更复杂
↓
长 horizon 任务
逐步建立能力。
26. 不同任务复杂度上的表现
作者还根据 instruction 中包含多少个要求定义 complexity。
例如:
What are the top-3 best-selling products in Jan 2023?
包含:
- 找出 top-3 产品;
- 时间限定为 Jan 2023。
因此 complexity level 为 2。
实验表明,随着 instruction complexity 增加:
- SFT;
- Filtered BC;
- AWR;
- DigiRL;
性能下降更加明显。
WebRL 在复杂 instruction 上仍然保持较明显优势。
这进一步支持了作者的核心论点:
训练任务应该随着模型能力动态变化,而不是从头到尾使用固定任务集。
27. Ablation Study
作者分别移除:
- Replay Buffer;
- KL constraint;
- Curriculum Learning。
8 个 Phase 后的大致结果为:
| 方法 | Success Rate |
|---|---|
| 初始 SFT | 20.6% |
| WebRL w/o KL & Replay Buffer | 20.0% |
| WebRL w/o Replay Buffer | 24.8% |
| WebRL w/o CL | 32.7% |
| WebRL w/o KL | 34.5% |
| 完整 WebRL | 42.4% |
可以看到完整系统明显最好。
27.1 Replay Buffer 的作用
去掉 Replay Buffer 后:
随训练 Phase 增加,性能甚至可能开始下降。
原因是模型不断只学习最新数据,过去能力逐渐遗忘。
因此 replay 的主要作用就是:
防止 continual online learning 中的 catastrophic forgetting。
27.2 KL Constraint 的作用
没有 KL constraint 时,模型更容易:
过拟合当前 Phase 的任务。
尤其当连 Replay Buffer 也删除之后,performance 会快速恶化。
KL constraint 相当于从算法层面限制:
不要偏离上一阶段:
太远。
因此:
Replay Buffer → 数据层面的防遗忘
KL Constraint → 参数 / policy 层面的防漂移
二者实际上是互补关系。
27.3 Curriculum Learning 的作用
去掉 Curriculum Learning 后,Agent 依然能够依靠 online RL 提升。
但是:
- 提升速度更慢;
- 最终性能更低。
因为训练任务从头到尾保持固定。
这也是 WebRL 和普通 online RL 最大的结构性区别之一。
28. Replay Buffer 应该 replay 什么难度的数据?
作者专门做了 perplexity ablation。
| Replay 数据 PPL | Success Rate |
|---|---|
| \([1,\infty)\) | 29.1 |
| \([1,1/0.95]\) | 27.9 |
| \([1/0.95,1/0.5]\) | 31.5 |
| \([1/0.5,\infty)\) | 23.0 |
结果显示:
中等 perplexity 的历史经验效果最好。
过低 perplexity:
模型已经太熟,重复训练反而可能造成过拟合。
过高 perplexity:
对当前 policy 来说过于陌生,容易造成较大的策略漂移。
因此 WebRL 最终使用:
作为过滤区间。
29. KL 系数 \(\beta\) 的影响
作者进一步研究 \(\beta\)。
如果:
太小,那么 KL constraint 太弱。
结果模型容易快速过拟合当前 phase。
但是如果没有 Replay Buffer,而 \(\beta\) 又非常大:
模型又会被 reference policy 限制得太死,导致难以学习新任务。
有 Replay Buffer 时,大 \(\beta\) 的负面影响明显减弱。
原因在于:
Replay Buffer 已经提供了多样的旧经验,使模型可以在保持旧能力的同时进行更多有效更新。
因此 WebRL 的稳定性并不是来自某一个单独组件,而是:
KL constraint + Replay Buffer
共同作用的结果。
30. ORM 到底准不准?
因为整个 RL loop 都依赖 ORM 判断:
成功 / 失败
所以 ORM 的准确性非常重要。
论文进行了单独评估:
| Reward Evaluator | WebArena-Lite Test | Rollout |
|---|---|---|
| WebRL ORM 8B | 80.8% | 79.4% |
| GPT-4 | 71.9% | 71.2% |
| Captioner + GPT-4 | 72.6% | 73.3% |
| GPT-4V | 71.2% | 70.5% |
专门训练的 8B ORM 达到了约 80% 准确率,明显高于这些通用模型方案。
这也说明一个比较重要的设计思想:
与其直接让通用大模型判断 Web Agent 是否完成任务,不如利用环境中已有的真实 reward function 构造大量监督数据,训练一个专用 evaluator。
31. Task Generation 是否依赖某一个固定 Prompt?
Self-Evolving Curriculum 使用 GPT-4o 生成训练任务,因此一个自然问题是:
性能是不是碰巧依赖作者写的那个 Prompt?
作者在附录中测试了三个不同版本的生成 Prompt:
| Prompt | 最终 Success Rate |
|---|---|
| Prompt 1 | 42.4 |
| Prompt 2 | 40.6 |
| Prompt 3 | 43.6 |
三种 Prompt 都能够获得较好的结果。
作者据此认为 curriculum learning 对具体生成 Prompt 具有一定稳定性。
32. WebRL 的几个核心组件到底是什么关系?
读完整篇论文后,可以把 WebRL 拆成三个层次。
第一层:课程生成
解决:
数据不够。
Failure Set
↓
GPT-4o Task Generation
↓
Critic Difficulty Filtering
↓
GPT-4o Feasibility Filtering
↓
New Curriculum
第二层:环境反馈
解决:
新任务没有 reward function。
Agent Rollout
↓
Instruction + Action History + Final HTML
↓
ORM
↓
Success / Failure
第三层:RL 更新
解决:
怎样从这些 trajectory 中稳定学习,而且不要忘掉以前能力。
Current Rollout
+
Filtered Replay Experience
↓
Critic → Advantage
↓
KL-Constrained Policy Update
↓
New Actor
三层连接起来:
┌──────────────────────────┐
│ Failure Tasks │
└────────────┬─────────────┘
↓
Self-Evolving Curriculum
↓
New Instructions
↓
Agent Rollout
↓
ORM
↙ ↘
Success Failure
↓ ↓
Replay Buffer Failure Set
↓ │
└──────┐ ┌────┘
↓ ↓
Actor + Critic
↓
KL-Constrained RL
↓
New Policy
↓
下一 Phase
这才是 WebRL 真正完整的方法结构。
33. WebRL 中“自进化”的准确含义
从今天常见的 Self-Evolving Agent / Self-Improving Agent 语境回头看这篇论文,特别容易对它的名字产生误解。
WebRL 中真正发生演化的是:
任务分布
课程随着 Agent 的失败和能力变化不断变化。
与此同时,模型 policy 通过 RL:
不断更新。
但是 framework 本身,例如:
- Actor / Critic 结构;
- ORM 机制;
- Replay Buffer;
- Action Space;
- 训练算法;
并不会被 Agent 自主修改。
因此 WebRL 的“Self-Evolving”本质上主要是:
数据课程和 policy 在闭环交互中共同迭代。
而不是:
Agent 自己重新设计自己的 harness。
34. 论文的实现边界
论文没有单独设置 Limitations 章节,不过正文和附录中可以看到几个明确的实验与实现边界。
34.1 Task Generation 仍然使用 GPT-4o
虽然最终训练出来的是开源 Llama / GLM Web Agent,但 Curriculum 中:
- 新 instruction 生成;
- infeasible instruction 过滤;
仍然使用 GPT-4o。
因此这里所谓的 open LLM Web Agent,并不意味着整个训练 pipeline 完全不依赖 proprietary model。
这是论文实现流程本身体现出的事实,作者没有将其单独列为 limitation。
34.2 ORM 不是 Oracle
ORM 在 rollout 上的准确率约为:
因此它仍然可能产生 reward noise。
WebRL 的训练实际依赖一个学习得到的 outcome evaluator,而不是完全准确的环境 reward。
34.3 实验范围集中在 WebArena
论文主要验证了:
- Reddit;
- GitLab;
- CMS;
- Map;
- OSS;
五类 WebArena 环境。
论文没有进一步给出跨 Web Agent benchmark 或完全不同交互环境上的系统性验证。
34.4 不同网站之间仍然存在能力 trade-off
附录中作者观察到:
大多数网站随着 phase 增加呈现明显上升趋势。
但 Map:
先提升,后下降。
作者推测,OSS 与 CMS 上的大幅提升可能带来了不同网站能力之间的 trade-off,同时 GitLab 后期也有轻微下降。
因此即使加入 KL constraint 和 replay buffer,也不能保证所有 domain 上的能力都严格单调增长。
35. 总结
WebRL 的目标是解决一个非常现实的问题:
如何真正利用在线环境,通过 RL 把能力较弱的开源 LLM 训练成强 Web Agent?
作者认为仅仅使用固定训练集是不够的,因为 Agent 很快会遇到:
- 训练任务不足;
- Reward 极度稀疏;
- 新旧能力互相干扰。
因此 WebRL 建立了一套完整闭环:
SFT 初始化 Agent
↓
Agent 与网页环境交互
↓
ORM 判断成功 / 失败
↓
失败任务进入 Failure Set
↓
GPT-4o 根据失败任务生成新 instruction
↓
Critic 筛选符合当前能力的任务
↓
形成新的 Curriculum
↓
Agent 再次 Rollout
↓
KL-Constrained Off-Policy RL
↓
成功经验进入 Replay Buffer
↓
Actor Confidence Filtering 选择合适历史经验
↓
继续下一 Phase
其中最核心的几个设计可以概括为:
| 组件 | 作用 |
|---|---|
| Self-Evolving Curriculum | 从失败任务出发,不断生成新的训练任务 |
| Critic Difficulty Filtering | 让任务难度匹配当前 Agent 能力 |
| ORM | 为没有预定义 reward function 的新任务判断成功/失败 |
| KL-Constrained RL | 防止新 policy 过度偏离上一阶段 policy |
| Replay Buffer | 保存过去成功经验,缓解遗忘 |
| Actor Confidence Filtering | 只 replay 当前模型中等难度的经验 |
最终,WebRL 将:
- Llama-3.1-8B:4.8% → 42.4%
- GLM-4-9B:6.1% → 43.0%
- Llama-3.1-70B:12.7% → 49.1%
显著提高了 WebArena-Lite 上的任务成功率。
因此这篇论文的核心并不只是提出了某一个新的 RL loss,而是构建了一套面向 Web Agent 的 online RL training loop:
让训练任务跟着 Agent 的能力一起变化,同时通过 ORM、KL constraint 和经验回放维持一个能够持续学习的闭环。
参考
-
Zehan Qi, Xiao Liu, et al. WebRL: Training LLM Web Agents via Self-Evolving Online Curriculum Reinforcement Learning. ICLR 2025.
https://arxiv.org/abs/2411.02337 -
OpenReview:
https://openreview.net/forum?id=oVKEAFjEqv -
WebRL GitHub:
https://github.com/THUDM/WebRL -
WebArena:
Zhou et al. WebArena: A Realistic Web Environment for Building Autonomous Agents.

浙公网安备 33010602011771号