GRPO:GUI 接地做得好

社区文章 发布于 2025 年 6 月 11 日

预计阅读时间:8 分钟

强化学习 (RL)(例如 GRPO)有助于接地,因为它具有固有的目标对齐——奖励任何成功的点击——而不是鼓励冗长的文本思维链 (CoT) 推理(也称为“思考”)。在本博客中,我们将分享一套使用 GRPO 训练最先进的 GUI 接地模型的完整方法。
作者
杨彦、李东旭、杨宇豪、罗子扬、戴雨桐、陈泽元、徐然、潘立元、熊才明、李俊楠
所属机构
Salesforce Research、澳大利亚国立大学、香港大学、北京理工大学

🤔 什么是 GUI 接地?

当图形用户界面 (GUI) 代理代表用户执行任务时,一个关键步骤是接地,即根据用户指令确定要“点击”UI 的坐标。形式上,任务是根据文本指令预测 GUI 屏幕截图图像上的 (x,y) (x,y) 坐标。目标是根据用户意图识别并点击正确的目标元素,例如按钮、链接或图标。下面,我们提供一个具体的示例。

一个 GUI 接地示例。用户指令是“点击菜单”,模型需要预测屏幕截图图像右上角三点图标(用红色圆圈突出显示)的中心 (x,y)(x, y) 坐标。

🧪 为什么选择 GRPO?

在 GUI 接地中,目标元素内的任何点击都被认为是正确的预测,这意味着输出坐标 (x,y)(x, y) 只需要落在正确元素区域内即可。与监督微调 (SFT) 严格训练模型预测目标元素的精确中心不同,组相对策略优化 (GRPO) 采用更灵活的方法。它学习优化成功操作,接受目标区域内一系列有效的点击,这更符合真实用户交互行为。

SFT 和 GRPO 的比较概述。左:SFT 强制只预测目标元素的中心(由红色星号表示)。右:GRPO 采样多个预测(由红色星号表示),并奖励任何落在目标元素区域内(蓝色边框)的预测,而不是要求精确中心。落在蓝色边框之外的错误预测会受到同等惩罚。

通常,在使用 GRPO 训练模型时,模型会先对指令和图像进行推理,然后生成最终答案,预期输出格式为

<think> the textual reasoning process </think>
<answer> the answer to the user instruction </answer>

我们将 <think> 标签中包含的推理过程称为文本思维链 (CoT) 和“思考”。


📦 GUI 接地数据集

为了有效地使用 GRPO 训练模型,我们需要包含以下内容的数据集:

  • 指令;
  • GUI 图像;
  • 目标元素边界框(即,有效点击区域)。

例如,

 {
  "instruction": "Click menu",
  "image_path": "images/screenshot_001.png",
  "target_bbox": {
    "x_min": 12,
    "y_min": 10,
    "x_max": 42,
    "y_max": 40
  }
}

通常有三种主要类型的训练数据:

  • 移动端(例如,Android 或 iOS 应用程序);
  • 桌面端(例如,Windows、Linux 应用程序);
  • Web 端(例如,基于浏览器的界面)。

对于桌面和 Web 数据集,数据通常通过屏幕截图以及 A11y 或 HTML 解析器等辅助工具收集,以提取元素结构和边界框。然而,由于 UI 动画或时间不一致,这些边界框有时可能与视觉渲染不一致。在我们的工作中,我们主要依赖于从 Aria-UIOS-Atlas 整理的数据集,我们发现它们比其他数据集合更干净、对齐更好。

为了进一步提高数据质量,我们采用了一种轻量级的清理策略:

  • 使用 OmniParser 检测屏幕截图上的所有元素;
  • 计算每个带注释边界框与检测到元素之间的最大交并比 (IoU);
  • 过滤掉目标边界框低于预定义 IoU 阈值的样本。

这有助于确保训练数据与实际视觉目标保持一致,减少由于注释未对齐而导致的噪声。虽然这种方法偶尔会过滤掉少量误报,但我们发现这种情况占数据的不到 3%。有关详细信息,请参阅我们的代码

来自 Aria-UI 数据集集合的示例。蓝色边界框显示了派生注释,而红色边界框是使用 OmniParser 检测到的。大绿色箭头用于引起人们对未对齐的蓝色边界框的注意。我们的轻量级清理策略会过滤掉注释与实际 UI 元素不匹配的此类情况。

🛠️ 模型训练

我们使用各种开源模型作为基线模型(例如,UI-TARSQwen2.5-VL),参数规模从 7B 扩展到 32B 和 72B,并使用 VLM-R1 代码库进行训练。训练过程可以在大约 800 H100 GPU 小时内完成,经过 250 次优化迭代。在此,我们分享训练过程中的关键见解和经验教训。

  • 使用 GRPO 实现强大的接地性能不需要“思考”。GRPO 的有效性主要来自于其目标对齐——无论点击如何表达,都会奖励成功的点击。事实上,避免“思考”和 KL 正则化通常会导致更灵活和准确的坐标预测。我们稍后将更详细地讨论使用“思考”的权衡——它往往只在特定场景下有帮助。
  • 基于点击的奖励就足够了。我们尝试了各种奖励函数(例如,基于 MSE 的、基于 IoU 的、用于“思考”的格式奖励等等)。一个简单的奖励,即检查预测点是否落在目标区域内,就足以实现强大的性能。
  • 对于“思考”和“非思考”GRPO,执行 SFT 作为冷启动是不必要的。Qwen2.5-VL 和 UI-TARS 已经足够强大,并且在 GRPO 之前进行 SFT 不会显着改善接地性能。
  • 使用大于 128 的批量大小。较小的批量(例如,16 或 32)可能导致训练不稳定。例如,如果一个批量只包含完全正确或不正确的样本,奖励信号可能会消失,导致模型崩溃。
  • 每个指令采样 8 个响应通常足以实现强大的性能。增加这个数字会产生递减的回报。(重要提示:在采样期间,请务必添加“坏词”(即禁止的标记)以防止模型生成 <img> 标记。在多样化的数据集和更长的训练运行中,忘记这一点可能导致对齐问题或与图像标记生成相关的虚假行为。)
  • 不需要与参考模型进行 KL 散度。Qwen2.5-VL 在移动领域通常表现强劲。虽然添加 KL 惩罚可能有助于在移动环境中保持性能,但它往往会限制在桌面和 Web 领域中的探索。
  • 模型对学习率不敏感。1e-6 的峰值学习率在大多数设置中通常效果很好。
一个图表显示了 TensorBoard 可视化的奖励(y 轴,0-1 范围)随优化迭代次数(x 轴)的变化。

📈 模型表现如何?

我们遵循标准评估协议,并在三个具有挑战性的数据集上对我们的模型进行了基准测试。我们的方法在所有开源模型家族中始终取得最佳结果。以下是比较结果:

模型 大小 开源 ScreenSpot-V2 ScreenSpotPro OSWORLD-G
OpenAI CUA 87.9 23.4
Claude 3.7 87.6 27.7
JEDI-7B 7B 91.7 39.5 54.1
SE-GUI 7B 90.3 47.0
UI-TARS 7B 91.6 35.7 47.5
UI-TARS-1.5* 7B 89.7* 42.0* 64.2*
UGround-v1-7B 7B 31.1 36.4
Qwen2.5-VL-32B-Instruct 32B 91.9* 48.0 59.6*
UGround-v1-72B 72B 34.5
Qwen2.5-VL-72B-Instruct 72B 94.00* 53.3 62.2*
UI-TARS 72B 90.3 38.1
GTA1 (我们) 7B 92.4 (∆ +2.7) 50.1(∆ +8.1) 67.7 (∆ +3.5)
GTA1 (我们) 32B 93.2 (∆ +1.3) 53.6 (∆ +5.6) 61.9(∆ +2.3)
GTA1 (我们) 72B 94.8(∆ +0.8) 58.4 (∆ +5.1) 66.7(∆ +4.5)

注意

  • 模型大小以十亿(B)参数表示。
  • 破折号(—)表示目前无法获得的结果。
  • 上标星号(﹡)表示我们评估的结果。
  • UI-TARS-1.5 7B、Qwen2.5-VL-32B-Instruct 和 Qwen2.5-VL-72B-Instruct 用作我们的基线模型。
  • ∆ 表示我们的模型相对于其基线的性能提升 (∆)。

🤔 什么时候“思考”有帮助?

在各种静态基准测试中,我们观察到经过“思考”和未经“思考”训练的模型之间的性能差异很小,通常在 0.5% 以内。然而,它们通常在不同的样本上取得成功,这可能是由于训练不稳定而非系统推理增益。下面,我们提供几个示例,其中“思考”模型或非“思考”模型是正确的,但不是两者都正确。

“思考”失败的示例:蓝色星号(“思考”预测)不正确,而红色星号(非“思考”预测)落在绿色边界框内,正确击中目标区域。
“思考”有帮助的示例:蓝色星号(“思考”预测)正确地落在绿色边界框内,而红色星号(非“思考”预测)不正确且位于有效目标区域之外。

然而,我们发现“思考”在动态环境(例如 AndroidWorld)中可能有效,在这种环境中,模型会获得任务对象、过去轨迹和用户指令。例如,我们使用 AndroidControl 数据集训练了一个领域内 7B 模型。虽然接地性能在 AndroidControl 测试折叠上相似,但使用“思考”时,AndroidWorld 上的任务成功率从 39% 增加到 44%。这种改进归因于文本提示的复杂性增加(即任务对象、过去轨迹和用户指令的组合),这鼓励模型在具有挑战性和动态条件下运行时进行“思考”。


💬 SFT 与 GRPO 的比较如何?

为了回答这个问题,我们使用相同的数据集,同时训练了一个 SFT 模型和一个 GRPO 模型。SFT 模型在 ScreenSpot-V2 上的得分是 90.2,在 ScreenSpotPro 上的得分是 42.5。相比之下,GRPO 训练的模型分别达到了 92.4 和 50.1。这表明 GRPO 提供了显著的性能提升。然而,值得注意的是,GRPO 只有在基础模型已经表现出相当好的性能时,才能带来显著的改进。如果基线太弱,GRPO 可能会因为奖励信号不足而难以发挥作用。

社区

已删除
此评论已被隐藏

感谢这篇富有洞察力的博客文章!我们非常感谢您的深入分析和全面的比较。
我们 H 公司正在训练视觉语言动作模型,专门研究 GUI 接地,我们最近发布了一份技术报告 (https://huggingface.co/papers/2506.02865) 和一篇博客文章 (https://huggingface.co/blog/Hcompany/holo1),其中包含一些可能补充您工作的相关发现。我们的模型权重和基准也已在 Hugging Face 上提供,以供重现。您是否会考虑将我们报告中的数据纳入您的分析并更新相应的表格?我们相信这可以为读者提供更完整的当前领域概况。
此外,如果可能,如果您能包含我们 WebClick 基准 (https://huggingface.co/datasets/Hcompany/WebClick) 的结果,那将非常棒,因为我们认为这会为您的比较添加宝贵的上下文。
如果对您有帮助,我们很乐意提供有关我们方法的任何额外详细信息或澄清。再次感谢您的工作,我们期待着该领域的持续发展!

三个月前,已经有很多关于 GUI 接地的 GRPO 工作了,比如 GUI-R1 (https://arxiv.org/abs/2504.10458) 和 UI-R1 (https://arxiv.org/abs/2503.21620)。

三个月前,已经有很多关于 GUI 接地的 GRPO 工作了,比如 GUI-R1 (https://arxiv.org/abs/2504.10458) 和 UI-R1 (https://arxiv.org/abs/2503.21620)。

这些看起来很酷

注册登录 发表评论