从1920年的小说《R.U.R》到《钢铁侠》中的JARVIS,在过去的一个世纪里,人们一直梦想着构建能够自动化日常工作的Digital Agents(数字代理)。如今,随着视觉语言模型(VLMs)的蓬勃发展,构建这样的Agents成为了可能。
1-1 Agent for GUI Control
想要构建一个有效的Computer Use Agents,其必须拥有两个能力:(1)Planning能力,即规划Computer-use任务的能力,能将用户给定的(高阶)指令分步划分为多个子目标**(2)Action能力**,即根据当前目标,执行相应的动作(比如点击,输入,滑动等等)。在现有的研究中,典型的有**(1)以OS-Copilot和UFO-Agent为代表的GUI agents**,它们通过调用API和a11ytree来与数字世界(如手机、网站)中的GUI进行交互。(2)以SeeClick,OS-ATLAS为代表的Action model(动作模型),根据用户的指令执行动作,比如预测GUI中的元素坐标并进行点击等动作。这些工作虽已有所成效,但在实际应用中依然有局限性,前者依赖GPT4o等闭源模型,只能通过提示词交互且成本较高;后者需要在动作模型外搭配一个planner模型一起使用。 从实际应用角度,构建一个统一的、基于开源模型的GUI Agent将会对通用的GUI控制大有裨益。然而,想要端到端地完成这类Agent构建绝非易事,其最大的瓶颈便是训练数据。
1-2 Data Bottleneck
在构建高质量的GUI agent时,GUI轨迹数据能最有效地让agent学习如何完成任务,其数据稀缺性是当前digital agent领域最关键挑战之一。以下是一个典型的GUI轨迹数据示例,它包括以下部分:
-
高阶指令:明确规定任务目标,例如“将菜单应用中的‘Avocado Toast with Egg’标记为收藏”。
-
低阶指令:分解为具体的操作步骤,例如“点击‘Avocado Toast with Egg’以查看更多选项”。
-
动作:与低阶指令相关的具体操作,如“CLICK [Avocado Toast with Egg]”。
-
状态:包括执行动作前后的可视化和文本化表示,例如屏幕截图和GUI的a11ytree结构。
现有的轨迹数据采集方法通常依赖于人工监督或基于预定义任务(Task-Driven)的合成数据生成。这些方法在实际应用中存在以下局限性:
- 人工采集的过高成本:人工标注轨迹数据需要大量的人力资源,不仅需要手动设计高阶指令,还需逐步记录每一步操作。这使得数据收集过程成本高昂且效率低下。
- 合成数据的局限性:基于模型生成的轨迹数据虽然可以缓解人工标注的成本问题,但通常依赖于预定义的高阶任务。这种方法不仅限制了生成数据的多样性,还容易导致与真实环境的差距。特别是在中间步骤出错或任务目标/环境不匹配时,生成的轨迹可能是不完整或不连贯的。
因此,如何在成本可控的情况下,有效地构建GUI Agents轨迹是一个非常重要的课题。在此动机下,本文提出了OS-Genesis:一套无需人工监督的高质量GUI数据合成框架。
2 方法
OS-Genesis的在数据构建上的核心思想是:通过先探索性地交互GUI环境,捕捉每一步动作及其前后状态变化。
然后基于这些变化逆向生成高质量的低阶指令(Low-level instruction,比如’点击Chrome APP’),再根据环境导出一个高阶指令(High-level instruction,比如’添加日程:看机器之心推文’)。随后,让模型执行这一合成的指令,此过程完全摆脱了人工干预和任务预定义的限制,实现了GUI轨迹数据生成的高效性和多样性。我们认为,本工作可以为构建通用的GUI agent提供新的思路,其具体方法如下所示
2-1 反向任务合成
OS-Genesis的核心是反向任务合成(Reverse Task Synthesis),它使得我们在构建GUI轨迹数据时摆脱需要人工/机器预定义任务(pre-defiend task)的局限。其流程如下所示
- 动作记录与状态捕捉(Record)
在没有预定义任务的情况下,OS-Genesis通过在GUI环境中系统性地执行基本动作(例如CLICK、TYPE、SCROLL等),生成大量的三元组数据 ⟨状态前,动作,状态后⟩,即 ⟨spre, action, spost⟩。这些三元组记录了每个动作对环境状态的影响,为后续的任务合成提供了原始数据。
- 低阶指令生成(Low-Level Isntruction)
利用GPT-4o模型,将每个三元组 ⟨Screen1, Action, Screen2⟩ 转化为描述具体操作的低阶指令(Low-level Instruction)。例如,若动作CLICK使某菜单展开,低阶指令可能为“点击下拉菜单以显示选项”。
- 高阶任务生成(High-Level Isntruction)
在低阶指令的基础上,OS-Genesis进一步生成高阶指令(High-level Instruction)。高阶指令通过结合低阶步骤和当前GUI环境,描述了一个更为抽象且目标明确的任务,例如“配置应用程序设置”。这种从低阶到高阶的逐步生成方法不仅确保了指令的逻辑一致性,还能最大化利用GUI环境中的动态特性。
通过上述反向任务合成,OS-Genesis可以在没有人工干预的情况下构建多样化、语义丰富的任务集合,显著提升了数据生成的效率和质量。
2-2 轨迹构建与奖励模型
反向任务合成生成的高阶指令随后被用作探索GUI环境的起点,进一步构建完整的轨迹数据(Trajectory)。为了确保生成轨迹的质量,OS-Genesis引入了一个奖励模型(Trajectory Reward Model, TRM),对生成的轨迹进行质量评估和筛选。以下是轨迹构建与奖励模型的详细流程:
- 轨迹执行
利用反向任务合成生成的高阶指令,GUI agent会执行一系列动作以完成任务。每条轨迹由以下内容组成:高阶指令、低阶指令、动作序列以及状态(包含截图和a11ytree)。
- 轨迹奖励模型(Trajectory Reward Model)
为避免低质量或不完整轨迹对模型训练的负面影响,OS-Genesis使用TRM对每条轨迹分配一个奖励分数。奖励分数基于以下两个指标:
- 完成度(Completion):衡量一条GUI轨迹是否成功完成High-level 任务,包括每个步骤的正确性和逻辑连贯性。
- 一致性(Coherence):评估轨迹的逻辑是否恰当,确保动作序列能够高效地实现任务目标。
- Reward-driven的数据筛选方法
根据奖励分数,轨迹数据会被优先用于模型训练。与传统的二元过滤方法(即抛弃执行失败的任务)不同,TRM允许部分不完整但具有探索价值的轨迹保留在数据集中,从而最大化地利用生成的数据。
通过结合反向任务合成和奖励模型,OS-Genesis实现了从任务生成到轨迹构建的端到端流程。实验结果表明,OS-Genesis生成的数据在质量和多样性上均显著优于现有方法,为构建通用GUI agent提供了可靠的数据支持。
3 实验
为了验证OS-Genesis在动态环境中生成高质量轨迹数据的能力,本文在动态环境上进行了实验。对于Mobile场景选择了AndroidWorld和AndroidControl,对于Web场景则使用了WebArena作为测评基准。在这些复杂的环境中,我们测试用OS-Genesis合成数据训练的agent表现相对传统方法效果如何。
3-1 模型与基线
VLMs. 我们在实验中选择了代表性的VLSs作为GUI agent的基础模型,以便全面评估OS-Genesis生成的数据在不同模型上的的影响:
- InternVL2-4B/8B:上海人工智能实验室开发的一种支持高分辨率动态输入的开源VLM,主要用于视觉-语言任务。其扩展版本InternVL2-8B具有更大的模型容量。
- Qwen2-VL-7B-Instruct:一种多模态模型,具备一定的GUI交互能力,专为指令执行任务优化。
此外,我们还额外添加了GPT-4o作为一个强baseline,来比较我们所训练的开源模型和商业模型之间的差距
Baselinse. 所有的baseline接受的状态信息均为 Screenshots + a11ytree
- Zero-Shot:直接使用未经过额外训练的模型完成任务。这种方法用于评估模型的原始能力。
- Task-Driven:利用预定义任务和固定策略生成数据,广泛应用于传统数据生成流程。
- Self-Instructions:在Task-Driven的基础上,引入自我指令生成机制来扩展任务的和覆盖范围。
3-2 Mobile
- 在**AndroidWorld(In-domain Mobile场景实验)**中,OS-Genesis所生成的数据显著提升了GUI agents的任务成功率,从baseline VLMs的的9.82%提升至17.41%,几乎可以做到翻倍。尤其是在任务规划和复杂操作中,OS-Genesis的数据展现了更强的适应性和泛化能力。
mobile-exp
- 在AndroidControl中**(OOD实验)**,OS-Genesis生成的轨迹在高阶和低阶任务中均表现出色,特别是在高阶任务中,其规划能力提升尤为明显。此外,OS-Genesis在未见过的应用场景下表现出了较强的泛化能力,验证了其生成数据的高质量和多样性。
3-3 Web
OS-Genesis在WebArena(In-domain Web场景实验)中的表现也显著优于baselines。对于复杂的交互式网页任务(如GitLab和Reddit),由OS-Genesis训练而来的agent相比Task-Driven方法提升了约50%。在多个动态网页场景中,通过OS-Genesis生成的数据,agent表现出了更高的多样性和泛化能力,特别是在需要多步操作的任务中,其生成轨迹更符合逻辑和用户意图。
4 分析
本项工作对GUI Trajectory Data的质量进行了非常详尽的分析,特别是将OS-Genesis生成的数据与人工标注(Human-annotated)数据进行了多角度的对比,以全面评估其在实际应用中的可行性和有效性。
4-1 高阶指令对比
我们首先比较了OS-Genesis生成的高阶指令与人工编写的高阶指令在任务执行中的效果。实验基于AndroidWorld的500个人工标注轨高阶任务,采用GPT-4o探索其对应轨迹,并用这些轨迹训练基于InternVL2-8B和Qwen2-VL-7B。为保证公平性,OS-Genesis和各baseline的轨迹数量保持一致。
结果分析
在任务成功率上,OS-Genesis生成的高阶指令显著优于人工编写的指令。这主要归因于以下两点:
-
动态环境:人工编写的任务往往难以与复杂环境完全匹配,而OS-Genesis通过反向任务合成生成的指令能够自适应GUI动态特性,更符合环境需求。
-
Step-wies生成策略:OS-Genesis从低阶指令逐步构建高阶指令,确保了指令的逻辑连贯性和可执行性,而人工编写的高阶指令有时会因缺乏细节而导致轨迹不完整。
analysis-high
4-2 轨迹数据对比
为了进一步验证轨迹质量,我们探讨了OS-Genesis生成的完整轨迹与人工标注(Human-annotated)轨迹在GUI agent训练中的差异。我们从AndroidControl的训练集中选取了1,000条众包标注的轨迹进行训练并对比。正如图下,OS-Genesis显著缩小了合成轨迹与人工标注轨迹之间的性能差距。
这种提升在高阶任务中尤为显著,表明基于OS-Genesis轨迹训练的agent在任务规划和问题解决方面表现更接近于人类操作方式。从平均任务成功率来看,将人工标注数据视为gold standard,OS-Genesis数据的性能保留率超过了80%。
analysis-traj
5 总结
OS-Genesis为有效构建GUI Agents提供了全新的视角和崭新的方案。 通过引入一种全新的交互驱动合成方法,OS-Genesis成功克服了以往数据收集中构建(1)有意义且(2)多样化的GUI任务的关键瓶颈。在多个挑战性的online基准测试中,我们证明了OS-Genesis生成的数据在构建GUI agents的规划和动作能力上实现了突破。此外,OS-Genesis生成的轨迹数据展现出了更高的多样性,并显著缩小了合成数据与人工标注数据之间的质量差距。 在GUI Agents如此火热的今天,使用这种方法构建通用的GUI Agents数据有很大的前景。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。