这个任务是基于androidenv的。这个环境之前学过,是一个用来进行强化学习的线上环境。而这篇文章的工作就是要给一些任务加上中间的奖励信号。这种训练环境的优点就是动态,与静态的数据集(比如说我自己的工作)不同,因此可以在更大更真实的任务上训练。
“我们改编了一个流行的桌面web代理来在Android上工作,我们发现它在移动设备上的效率较低,这表明未来的研究需要实现通用的,跨平台的代理。最后,我们还进行了鲁棒性分析,表明任务变化会显著影响代理性能,表明如果没有这样的测试,代理性能指标可能无法完全反映实际挑战。”
可以看到这篇工作的核心就是“评估”,如何去评估代理在实际工作中的表现。如果没有这个评估的话,强化学习就难以进行下去。现有的评估方法基本上就是拿人类范例比较,而且经常就只给一个标准答案。androidworld闪亮登场,为的就是解决这些问题。
之前有一些用人类品测或者LLM评测来作为中间奖励,但这样扩展性不太行。
“与现有的测试环境不同(miniwob++[48]是一个明显的例外),ANDROIDWORLD中的每个任务都是使用随机生成的参数动态实例化的,具有数百万个独特任务目标和条件的代理。MiniWob++由简单的合成网站组成,而ANDROIDWORLD利用了实际的Android应用程序。ANDROIDWORLD必须解决的一个主要挑战是,如何确保在使用现实世界的应用程序和动态变化的任务参数时,奖励信号是持久的。ANDROIDWORLD的关键见解是利用Android操作系统的广泛和一致的状态管理功能,使用与应用程序本身使用相同的机制来存储和更新数据。”
androidworld只需要2GB内存和8GB硬盘。除了116个Android任务外,我们还通过集成miniwob++[48,34]基准将ANDROIDWORLD扩展为web任务。
miniwob是啥?
“MiniWoB(Miniature World of Bits)是一个微型的基准测试环境集合,用于在网页环境下研究和测试强化学习(Reinforcement Learning,RL)算法。MiniWoB 提供了一系列简单的网页任务,主要用于研究智能体(agent)在网页操作、任务完成和用户界面交互中的表现。这些任务通常基于一些典型的网页活动,如点击按钮、输入文本、选择下拉菜单等。”
简单来说就是一个在网页环境下的类似于androidenv的东西。
“为了证明ANDROIDWORLD作为基准的实用性,我们构建并发布了一个多模态代理M3A (Android的多模态自治代理),并在ANDROIDWORLD上建立了最先进的结果。我们使用多模态和纯文本输入分析了M3A(Multimodal Autonomous Agent for Android)的性能,我们观察到,虽然多模态感知在某些情况下可以提高性能,但它通常不会优于纯文本方法。”
纯文本目前还是效果更好的办法,多模态战未来。
“总的来说,我们做出了以下贡献:(i)创建了一个新的,高度多样化和逼真的移动UI控制代理环境;(ii)用最先进的多模态智能体建立基准性能,(iii)仔细分析表明,由于模型和环境中固有的随机性,需要在不同的任务参数和条件下评估智能体。”
首先介绍一下androidworld怎么和android设备交互。
“ANDROIDWORLD为代理提供了一个接口来接收观察并在Android上执行操作。它使用AndroidEnv[58]和Android Device Bridge来促进Android和代理之间的交互。观察空间由全分辨率屏幕截图和为可访问性目的开发的UI树表示组成。操作空间类似于人类使用的空间,由手势(如轻敲、长按和滑动)、输入和导航按钮(如回家和返回)组成。除了这些自然的动作之外,ANDROIDWORLD还公开了一组有限的调用api的函数,比如发送文本消息,以帮助代理完成目标。”
下面是一些例子:
可以看到,这样子就可以通过不断地修改一些细节的方法排列组合出海量的任务了。
“除了管理应用程序和操作系统的状态,ANDROIDWORLD精确地定义和控制任务执行期间的状态。每个任务都有自己独特的设置、奖励决定逻辑和拆除程序(详见附录C.2和C.3),以确保完全可复制的任务套件。”
“
这种方法提供了对代理适应性的更细粒度的分析——这是实际部署的一个重要属性。除了测试智能体鲁棒性之外,任务的动态构建支持在线学习方法的使用,特别是强化学习[48,34,23,18]。它还简化了不同训练/测试数据集的生成,便于监督学习实验[23,47,15]。
”可以用来生成数据集,完美。
“ANDROIDWORLD通过使用Android调试桥(adb)管理应用程序状态来提供奖励信号。通过adb工具,ANDROIDWORLD可以完全访问系统资源,包括文件系统、应用程序数据库和系统设置。从系统状态确定奖励信号有几个好处。它是高度精确的,因为应用程序的状态可以使用与应用程序本身相同的机制来快速检查和操作。使用底层系统状态比匹配表面的UI更改要持久得多。”
归根结底还是要用adb,不可能不用的啦。
同时本片工作还结合了miniwob,并将其命名为mobileminiwo++。每个mobileminiwo++任务使用标准ANDROIDWORLD接口实例化,继承自TaskEval基类,并包含initialize state和is successful等方法。由于miniwo++利用JavaScript进行任务配置和成功检测,文章构建了一个WebView应用程序来在Python和应用程序之间进行通信。例如,每个任务的is_success()函数通过Android意图从WebView应用程序中检索奖励值。
下面介绍一下本文使用的模型:
我们为Android开发了一个多模式自主代理M3A。它是zero-shot,集成了ReActstyle[72]和reflection style[49]的提示,以消费用户指令和屏幕内容,推理,采取行动,并根据其行动的结果更新其决策
在第一阶段,M3A生成一个以JSON表示的操作,并对该操作进行解释(当然模型有收到截图,边界标记和UI结构树)。文章还做了一个纯文本版本的。代理每做一个动作或者是观察了当下成功或失败的情况都要做出解释。
(好家伙,都用的付费模型,没用过自己的)
“我们观察到,在应用筛选启发式删除不可交互元素后,大多数屏幕包含的候选元素少于50个。”
agent目前暴露出的问题:
“代理很难理解移动ui,通常无法检测到完成任务所必需的视觉线索(参见图6a)。此外,智能体与特定的UI模式和功能支持作斗争,当它们犯推理错误时(参见图6b),它们通常缺乏像人类一样探索和适应的能力(参见图6c)。此外,智能体有时难以处理仅仅涉及确认系统状态的任务,例如确认WiFi是否打开,这表明在任务和屏幕理解方面都存在挑战。”
而且模型定位能力堪忧,记性也不好。大模型动作还很慢。
后续实验发现修改任务的参数对模型的性能有很大影响。可见模型有不确定性,模型自己的鲁棒性不强。