Home
[1]
|
GitHub
[2]
|
Twitter
[3]
|
Youtube
[4]
|
Bilibili
[5]
本文介绍字节跳动刚刚发布的 UI Agent 工作
UI-TARS: Pioneering Automated GUI Interaction with Native Agents
[6]
。
UI-TARS
基于 Qwen2-VL 微调,通过大量 grounding 和 navigation 数据,经过三阶段训练,利用特定方法迭代优化,以远超多数工作的数据训练规模,实现了对中英文图片和指令的良好支持。
UI-TARS 的模型(2B、7B、72B)开源,但数据和训练代码都不开源。
一些相关链接:
-
•
https://github.com/bytedance/UI-TARS
[7]
-
• https://github.com/bytedance/UI-TARS-desktop
-
•
Demo
: https://huggingface.co/spaces/Aheader/gui_test_app
UI-TARS
整体框架就是用一个 VLM 端到端的输出 Thought 和 具体动作。模型也是在
Qwen2-VL
的基础上进行微调得到的,不过他们训练的数据很大,grounding 数据量 20~40M 这种量级,navigation 数据量 300K 这种量级。
几点主要的贡献:
-
• 感知能力训练加入了几个新的任务,如 Dense Captioning,State Transition Captioning,Set-of-Mark (SoM)。
-
• 训练数据规模很大,是大部分工作的10+倍量级,效果确实不错,对中文图片和中文指令的支持也很好。
-
• 利用 Online Trace Bootstrapping 和 Reflection Tuning 方法从长期记忆的过往经验中不断迭代优化模型效果。
-
• 训练分为3阶段,但与SeeClick的阶段不同。这里第一和二阶段都是混合使用各种感知和决策数据,只是第一阶段量比较大,而第二阶段只使用质量较高的少量数据,同时加入了 Reflection Tuning 数据。第三阶段使用了 preference pairs 和 DPO。
整体框架
参考
CoT
结构,基于指令和当前状态
,先生成
思考过程
,再生成
具体的动作
:
预测时会把历史上所有的
和
都用上,同时用上最近历史动作的
个截图
(作者的实验中
):
接下来介绍训练数据的构造方式。
感知训练数据
作者采用一种
自下而上
的数据构建方法,
从单个元素起步,进而发展到对整体界面的理解
。先关注 GUI 中小的局部部分,然后再把它们整合到更宽泛的背景中,此方法在识别组件的精度与解读复杂布局的能力之间实现平衡的同时,将错误降至最低。
主要包含上图中的 6 类数据。
-
•
Task Grounding
:一般的 grounding 任务。
-
•
Element Description
:为增强对 GUI 内特定元素,尤其是微小元素的识别与理解,作者专注于
为每个元素创建详尽且结构化的描述
。这类描述基于运用解析工具提取的元数据,并由 VLM 进一步综合而成,涵盖四个方面:
(1)元素类型
(例如,窗口控制类型):对元素进行分类(例如,按钮、文本字段、滚动条);
(2)视觉描述
,对元素的外观加以描述,包含其
形状、颜色、文本内容和样式
,直接源自图像;
(3)位置信息
:描述
每个元素相对于其他元素的空间位置
;(4)
元素功能
,描述
元素的预期功能及可能的交互方式
。作者训练 UI-TARS 列举一张截图内的所有可见元素,并依据该截图生成它们的元素描述。
-
•
Dense Captioning
:
作者训练 UI-TARS 理解整个界面,同时保持准确性并最大程度减少幻觉。
Dense Captioning 的目标是为 GUI 截图提供全面、详尽的描述,不但要捕捉元素本身,还要捕捉它们的空间关系以及界面的整体布局
。对于截图中每个记录的元素,首先获取它们的元素描述。其后,使用 VLM 将所有图像和元素描述整合到一个具有凝聚力、高度详尽的 caption 中,该 caption 保留了 GUI 布局的结构。在训练过程中,只给 UI-TARS 提供图像,并要求其输出相应的密集标题。
-
•
State Transition Captioning
:这个任务用来识别和描述两张连续的屏幕截图之间的差别,并判断是否出现了诸如鼠标点击或键盘输入之类的动作。作者还引入了与
非交互式 UI 变化
(例如动画、屏幕刷新或背景更新)相对应的屏幕截图对。在训练过程中,给 UI-TARS 呈现一对图像,其任务是
预测这两张图像的具体视觉变化(以及可能的原因)
。通过这种方式,
UI-TARS 得以学习到细微的 UI 变化,涵盖用户发起的动作和非交互式的转变
。这种能力对于需要精细交互理解和动态状态感知的任务而言至关重要。
-
•
Question Answering (QA)
:
QA 提供了一种更为动态和灵活的方式,将这些任务与推理能力相融合
。作者合成了各种各样的 QA 数据,其涵盖了广泛的任务,包括界面理解、图像解读、元素识别以及关系推理。这提升了 UI-TARS 处理涉及更高程度抽象或推理的查询的能力。
-
•
Set-of-Mark (SoM)
:作者还增强了 UI-TARS 的 Set-of-Mark(SoM)提示能力。作者依据空间坐标在 GUI 屏幕截图上为解析出来的元素绘制出
视觉上有区别的标记
。这些标记在
形式、颜色和大小
等属性方面存在差异。通过这样的方式,UI-TARS 能够更好地将视觉标记与相应的元素关联起来。作者把 SoM 标注与 Dense Captioning 和 QA 等任务进行了集成。例如,会训练模型来描述被突出标记的元素。
整体的数据统计:
推理数据(System-2 Reasoning)的构造构成
包含 2 大类推理相关的数据。
1. Reasoning Enrichment with GUI Tutorials
从 MINT 和 OmniCorpus 两个图文交织的通用数据集中过滤和清洗出
6M 高质量的 GUI tutorials
。
平均来说,每个教程包含 510 个文本 token 和 3.3 幅图像。这个数据不但增强了模型对 GUI 操作的理解,而且为注入推理能力奠定了稳固的基础。
2. Reasoning Stimulation with Thought Augmentation
作者分 2 阶段构造出训练使用到的
thought
。
(1) ActRe
ActRe
(ReAct反过来):给定历史以及当前的动作
,让 VLM 生成
:
在 ActRe 标注过程中,作者促使 VLM 呈现出更高级的、系统 2 的推理,这包含了深思熟虑、逐步进行的决策与反思。通过推动这些推理模式,作者鼓励模型去进行深思熟虑的、长期的规划与反思,以解决复杂的任务。正如下图所示,作者让 VLM 遵循的推理模式有:
-
•
任务分解
:引导模型把复杂任务拆解为更小的、可管理的子任务,让其能够一步步地处理复杂的工作流程。
-
•
长期一致性
:保证模型在整个任务中保持一致的目标,参考整体目标和操作历史,避免在复杂的多步骤任务中出现偏离。
-
•
里程碑识别
:让模型能够识别中间目标的达成,助力顺利过渡到后续目标。
-
•
试错
:让模型能够假设、测试和评估潜在的动作,特别是在模糊的情形下,比如在不直接交互的情况下核实搜索结果。
-
•
反思
:让模型能够在操作失败时识别并纠正错误,通过反思性推理鼓励适应性和错误恢复。
(2) Thought Bootstrapping
Thought Bootstrapping
:基于真实动作的条件对想法进行反向标注(即 ActRe)可能会产生误报,原因是
生成的想法可能在表面上看似与相应动作相符,却未确立真正的因果关系
。具体而言,动作背后的推理过程或许会被忽视,致使想法与动作的一致仅仅是巧合,而非通过逻辑推理达成。此问题之所以产生,是因为标注过程依赖于事先知晓动作,这可能会使想法倾向于与动作一致,而非反映出导致该动作的实际决策过程。
为解决此问题,作者采取了一种
bootstrapping
方式,在不具备真实动作的先验知识的情况下生成想法。通过对多个想法-动作对进行采样,如下式中所示,作者找出得到正确动作的想法,确保推理与所选动作存在因果关联。这种方法生成了更高质量的标注,因为它迫使模型模拟真实的决策流程,而不仅仅是为预先确定的动作进行辩解(
表示早期的模型 checkpoint)。
📌
ActRe 和 Thought Bootstrapping
这两阶段是怎么组合使用的?先利用 ActRe 的结果训练初版的
?
作者
以中文和英文对想法进行标注
,拓展了语言的多样性。
虽然作者为所有的轨迹都增添了想法(thought),但
在训练过程中也包含了原始的动作轨迹(不含想法)
。这个应该是通过不同的prompt来控制输出中是否包含想法。
跨平台统一的动作空间
从长期记忆的过往经验进行学习(利用已有模型迭代收集更多训练数据)
作者让 UI-TARS 能够从与真实世界设备的交互中动态学习。
借助半自动的数据收集、过滤和完善,在最大程度降低人工干预需求的同时模型持续改进。
Online Trace Bootstrapping
给定指令集合
,利用现有模型和环境交互,获得轨迹集合
,然后对这些轨迹进行过滤(去掉有噪音和不可用的轨迹),得到
。过滤方法包括:
(1)基于规则的奖励
:启发式规则会剔除带有明显异常的轨迹(比如,不会改变环境的冗余动作);
(2)VLM 评分
:VLMs 为剩余的轨迹赋予质量分数,分数低于预先设定阈值的轨迹会被移除;
(3)人工审查
:一部分轨迹会由标注员做进一步的检查,他们
找出出现错误的步骤,丢弃任何后续的动作,并只保留有效的前缀
。
然后利用新得到的轨迹数据
微调现有模型
,得到
:
对于每一轮,作者雇用标注员来改进或扩展指令集: