抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

论文地址:A Data-Driven Approach for Learning to Control Computers

摘要

如果机器能够和人类一样使用计算机,进而在每天的任务上都帮助我们,这会是非常有用的。在这个场景下,还可以利用大规模的专家演示和人类对互动行为的判断,这是推动 AI 最近取得成功的两个因素。在本文中,我们研究基于自然语言描述的目标,利用鼠标和键盘操控电脑的场景。我们不专注于人工设置的课程和特定的动作空间,而是基于实际人机交互的行为先验,提出一个以强化学习为中心的可扩展方法。我们在 Miniwob++ 环境(一套富有挑战性的计算机控制问题)上达到了最先进的水平,和人类的平均水平相当,并且发现了跨任务转移的有力证据。结果表明:在训练机器使用计算机时,使用统一的人机界面是有用的。总之,我们的结果表明了一个范式,可以实现超越控制 MiniWob++ 的能力,并像人类一样控制计算机。

背景介绍

最近关于自然语言、代码生成和 3D 虚拟环境中多模态交互行为方面的研究,已经产生了有着强大的表达能力、上下文意识和通用知识的模型。这些研究引人注目地展示了两种因素的力量:(1)机器和人类之间一致的丰富的组合输出空间;(2)利用大量的人类数据和判断来训练机器行为。

有一个领域,同时具备这两种因素,但是受到的关注较少,那就是数字设备控制。其中包括使用数字设备来完成各种有用的任务。由于它几乎完全使用数字信息,该领域在数据采集和控制并行方面具有良好的扩展性(相较于机器人或者聚变反应堆)。它还将多样的多模态的输入与表达性的,可组合的,与人类兼容的功能结合起来。在本文中,我们关注使用键盘鼠标的计算机控制,其中观测的状态为像素和 DOM 文档。

在计算机控制最初的研究中,一个有用的环境是 MiniWob++ 任务集,其中包含了一系列指令遵循任务,需要进行点击、输入、表单填写和其他基础的计算机交互。MiniWob++ 进一步提供了程序定义的奖励。这些任务是迈向更开放的人机交互的第一步,在这些交互任务中,人类使用自然语言指定任务,并在后续提供性能判断。

我们专注于训练智能体解决这些任务,使用的方法原则上适用于人们希望在任何数字设备上执行的任务,同时具有理想的数据扩展性和计算扩展性。因此我们转向强化学习(RL)和动作克隆(BC)的组合,其中后者得益于人类和智能体之间动作空间(即鼠标和键盘)的对齐。这个组合在 MiniWob 的构想中被提出,但当时并没有发现可以产生高分的智能体。随后的工作一直在尝试提升智能体的表现,包括让智能体访问特定于 DOM 的操作,课程方法,以及探索限制方法,用精心策划的指导减少每一步可行的动作的数量。

重新审视模仿和强化学习的简单且可扩展的组合,我们发现实现高性能的主要缺失因素就是用于行为克隆的人类轨迹数据集的大小。随着人类数据量的增加,性能提升稳定,并且在数据集大小高达先前研究使用数据的 400 倍时,依旧能持续观测到改进。我们使用这些数据的结果大大超过了之前最先进的性能,甚至能够在整个任务集中达到人类的平均水平。

本文方法

MiniWob++

MiniWob++ 是一系列的基于网络浏览器的任务。任务范围包括了从简单的按钮点击到复杂的表单填写。例如:给定特定的指令,预定一个机票。对于每个任务,可以获得程序定义的奖励,这允许我们使用标准的强化学习方法。

之前在 MiniWob++ 上的工作考虑了能够直接访问 DOM 操作的架构,允许智能体直接与 DOM 元素进行交互(即使它实际上不可见),而不需要通过鼠标或键盘来导航到 DOM 元素。相反,我们选择仅仅使用基于鼠标和键盘的操作。这简化了人类行为数据的使用,并且我们进一步假设这样的界面能更好地转移到不需要与 DOM 元素进行交互的计算机控制任务(甚至不基于浏览器的任务)。最后,很多 MiniWob++ 任务需要点击或拖曳动作,这些动作不能被基于 DOM 元素的动作实现。

与之前的 MiniWob++ 研究相同,我们让我们的智能体访问由环境提供的文本字符串词典,这些字符串必须被输入到给定任务的输入字段中(如图 9 所示)。这有助于避免从稀疏强化学习输入学习生成文本模型时的探索问题。但是后续实验结果会表明,即使没有这个输入,智能体也能够展现最先进的性能。

MiniWob 环境是实时的,这带来了技术上和算法上的复杂性。例如,由于观测的状态可能会被计算机资源竞争所带来的滞后性所影响,因此并不能保证动作会在时间上导致哪个状态。对于提供演示的人类参与者,我们保证运行环境的服务器有充足的资源以最小化本地机器上的时间抖动。在机器上,我们以 30Hz 的频率同步进行观测和行动。对于智能体而言,任何时间抖动肯定与人类经历的时间抖动不同。然而,大多数 MiniWob++ 任务对时间不敏感,我们的结果也表明:这种不匹配在实践中并不成问题。此外,我们发现删除演示数据中没有行动的步骤(这种操作只会增大时间上的差异)会得到最好的结果。与之前的研究相同,我们的人类分数和智能体分数并不会随着时间进行折损

环境接口

为了让智能体能够像人类一样使用电脑,需要一个合适的接口以传输和接收状态和动作。原始的 MiniWob++ 任务集提供了一种基于 Selenium 的接口。我们决定实现一个可供替代的环境栈,以灵活支持可以在 web 浏览器中完成的任何任务。这个界面从根本上进行了安全性、功能性和性能的优化。

安全性 我们在 Sandbox2 容器中运行网页浏览器(Google Chrome),该容器提供 chroot 监狱,并限制访问任何可能用于破解主机系统的系统调用。我们进一步使用 TCP 代理服务器讲所有网络流量重定向到本地服务端套接字(socket)。这使得我们能够精确控制可以从浏览器中访问的内容。这些安全特性不仅对安全的智能体-环境交互十分重要,并且能够简化在公开系统如 Amazib Mechanical Turk 上录制演示的过程,因为人类和智能体都不能使用浏览器本身来攻击主机系统或者网络资源。

原始的 MiniWob++ 环境通过 Selenium 访问内部浏览器状态并发出控制指令。而我们直接与 Chrome 开发工具协议(Chrome DevTools Protocol, CDP)交互,以检索浏览器内部信息如 DOM 数等,并且在网页上运行开发者提供的 JacaScript 代码。我们通过在启动时传递给浏览器的文件描述符访问 CDP 。这样做是为了最小化攻击面,并且遵循 web 驱动程序作者提供的安全建议。

功能性 我们希望智能体能使用和人类用户相同的操作方法与标准的网页浏览器进行交互。为了实现这一目标,我们的环境直接连接到 X11 服务器,以输入鼠标和键盘命令,接收当前帧缓冲。这减少了人类和代理环境交互的领域转换,但是原始的 Selenium 接口难以做到这一点。例如,鼠标拖曳操作很难通过 Selenium 实现。

通过 X11 进行工作还有其他关键的优点:(1)智能体可以与完整的浏览器进行交互(包括选项卡和地址栏);(2)因为人类和智能体所处的环境是相同的,大规模录制第一人称的演示数据很容易;(3)我们可以渲染上下文敏感的系统鼠标指针。

我们使用 C++ 实现了整个环境,以支持低延迟交互。这非常重要,因为如果总输入延迟太高,准确的鼠标移动就很难做到。

智能体架构

最终,我们发现没有必要实现专门的 DOM 处理架构(例如基于图网络)。相反,受到最近的多模态架构上的工作的启发,我们使用了最小多模态特定处理,主要依靠多模态 Transformer 灵活地关注相关信息。如图 2 所示:

感知 智能体接收视觉输入(165×220165 \times 220 RGB 像素)和语言输入。像素输入经过一系列的四个 ResNet 块,每块的内核为 3×33\times 3 ,步长分别为 2,2,2,22, 2, 2, 2 ,输出通道数逐渐增长 (32,128,256,512)(32, 128, 256, 512) 。最终得到的结果为一个 14×1114\times 11 的特征向量,我们将其展平成一个 154154 个 token 的列表。

三种语言输入——任务指令、DOM 和任务字段(任务字段只用于策略)使用同一个模块进行处理:每个文本字符串都被划分成 token,每个 token 又通过可学习的嵌入表(词汇量为 370 词)映射为 64 维的嵌入向量。我们为词汇表之外的输入单词保留了额外的 1000 个可索引的嵌入。对于这些单词,使用 64 位哈希函数计算索引,并将输出缩减为 370 到 1369 之间的整数。使用具有 4 个头的 1 层 transformer(language transformer),我们通过交叉注意力机制处理每个单独字符串的 token 嵌入,以产生一个单独的 512 维嵌入向量——token 嵌入被用来生成键和值,并且使用额外的可学习嵌入作为查询。额外的可学习嵌入为注意力机制提供了独立于输入的组件。这类似于 BERT 中使用的特殊 [CLS] 标记,其输出可以直接用作 transformer 的总输出。

多模态集成和记忆 视觉输入嵌入,从 DOM 和任务指令中产生的语言嵌入以及两个额外的学习嵌入被输入到具有 8 层,8 头和 512 维嵌入的多模态 transformer 中。

额外嵌入所对应的经过处理后的输出,与特征均值池化操作的结果,通过剩余输出和前一个动作的嵌入进行连接。得到的 1536 维向量被输入到一个双层 LSTM 中,每一层有 512 个隐藏单元。残差连接会绕过每个 LSTM 层。

我们并没有在最终配置中进行 LSTM 消融实验,但是早期的调整表明:相较于单层 LSTM 或前馈网络,双层 LSTM 提升了性能。这可能是因为双层 LSTM 相关的参数数量增加,因为在调整时我们并没有控制参数数量。我们还注意到,记忆对某些任务非常有用,例如那些有着移动元素的任务。

策略 智能体的策略包括 4 个输出:动作类型,光标坐标,键盘按键索引和任务字段索引。除了光标坐标外,每个输出都被建模成一个单独的离散概率分布。光标坐标被建模成两个离散分布(高度坐标和宽度坐标),每个维度被分成 51 个区块。这是唯一一个自回归的策略组件,其中高度坐标取决于宽度坐标。

操作类型是从一个包括 10 个可能的动作的集合中选择的,其中包括了 no-op (表示不进行任何操作),7 种鼠标操作(移动,点击,双击,按下,松开,上滑滚轮,下滑滚轮),和 2 种键盘操作(按下键盘,输入文本)。按下按键这个动作用于输入一个按键或者一组按键(如 CTRL + C)。而输入文本动作用于输入一个 MiniWob 任务字段中的字符串。

对于剩下的策略输出的采样取决于动作类型的选择——即,如果选择移动鼠标,那么就会对光标坐标进行采样;如果选择输入文本,就会对任务字段索引进行采样(以确定输入哪个任务字段);如果选择按下键盘,就会对键盘按键索引进行采样(以确定要按下哪一个键)。

动作类型,光标坐标和键盘按键索引分布的回归值通过线性变换产生;而任务字段索引的回归值通过点积注意力产生。注意力策略的工作方式如下:首先通过线性变换产生一个查询(query)。再使用一个单独的线性变换从可用任务字段的嵌入中生成键(key)。最后的回归值就是通过查询和键的点积,并且应用 softmax 得到的注意力权重。

在消融实验中,我们使用了两种替代动作类型,允许智能体直接对 DOM 进行操作:(1)DOM 点击,用于出发特定 DOM 元素上的点击事件;(2)DOM 文本输入,用于直接将任务字段写入到指定的 DOM 元素中。这些动作需要一个额外的策略输出(DOM 元素索引)以确定需要点击哪个 DOM 元素。这个输出通过上述的注意力策略生成,但是是对 DOM 元素嵌入使用注意力机制。对于 DOM 文本输入动作,我们复用了任务字段索引输出以确定输入哪些文本。

人类数据收集

由于智能体和人类使用相同的接口,人类演示的使用在原始的 MiniWob 环境中就已经被使用。然而,在 MiniWob 的研究中,只使用了 17 小时的人类数据(相较于随机策略,纯行为克隆策略只多解决了 5%5\% 的任务);在之后的 MiniWob++ 论文的一系列任务中,每个任务使用了 1000 个演示。由于最近的研究趋势表明了数据规模对性能的影响,很自然就能想到重新考虑更大量的人类演示的使用。

我们从 77 位人类参与者上收集了 104 个 MiniWob++ 任务的 240 万个演示,总计约 6300 小时。参与者通过众包数据收集平台招募,并且按小时支付报酬。人类数据收集过程收到伦理审查过程的约束。

人类可以在不进行联系的情况下很好地完成很多 MiniWob++ 中的任务。然而,一小部分任务需要练习,学习专业知识(如 POSIX 终端命令),理解模板目标意图中少量的歧义,或者调整时间或滞后。因此,我们观察到随着练习,人类的表现越来越好,为成功的轨迹会从数据集中过滤出去。

训练

我们使用一种直接的方法来训练智能体,即行为克隆(BC)和强化学习(RL)(使用 VMPO 方法)的组合,这样的组合在很多具有挑战性的领域中取得了巨大的成功。训练超参数在表 1 中给出:

为了结合模仿学习和强化学习,可以采取以下两种方法:(1)对两者的损失值进行加权结合,从零开始协同训练;(2)先使用 BC 进行预训练,再用 RL 进行微调训练,其中既可以使用反馈给 BC 的发散惩罚,也可以不使用。在我们的工作中,我们考虑第一种方法,并且给予 BC 和 RL 的损失值同等的权重,虽然能够确认:使用 BC 进行预训练可以提升学习的效率。

在用于 BC 训练之前,我们的人类演示数据首先被分成了训练集和测试集(数据量分别为 220 万和 31 万)。其中,最终奖励少于 0.50.5 的 episode 被视为不成功(约 5%5\%),从数据集中被过滤掉了。除此之外,我们会从演示中删去 no-op 操作,即人类不做出任何操作的动作。最多连续删除 10 步动作。智能体在这些数据上进行了无差别的训练:所有的任务都进行了协同训练,并且在演示上进行均匀采样。这可能会根据收集的数据,过滤过程,以及演示的长度,在任务表示上引入轻微的不对称。

我们选择协同训练基于两个原因:(1)我们观察到了显著的转移效应,在协同训练中,每个任务的帧训练变得更加高效。(2)我们的终极目标是训练一个通用的智能体,因此我们要求一个智能体尽可能拥有多种功能。

实验验证

MiniWob++ 上人类水平的表现

将本文方法的表现与之前的文献进行对比是困难的,引文之前的论文往往只解决了一部分 Miniwob++ 的任务。因此我们为每个单独的任务分别选取了已发表的最好的性能,并且用此聚合性能作为我们智能体的比较性能(对于使用了课程学习和其他增强方法的方法,也使用了单独的聚合措施)。如图 3 所示:本文智能体的性能明显超过了当前 sota 的表现。除此之外,我们发现:我们的智能体在 MiniWob++ 任务集上达到了人类平均水平。这种表现是通过 BC 和 RL 协同训练实现的,消融实验表明:删除这两种信号的任何一种都会使效果变差。图 6 展示了在航班预定任务中智能体找i到的一条成功的轨迹。

仔细检查智能体在任务集中的表现,我们发现:虽然平均分数达到了人类平均水平,仍有部分任务人类表现明显优于智能体(图 4)。具体地,智能体在两个任务上没有获取到任何分数:simon-saysterminal。甚至 simon-says 环境对于人类来说都是有挑战性的。它需要记住一个随机的按键序列,并重复该按键序列。我们的智能体以 2Hz 的频率观察环境,这意味着它经常会错过序列中最少一个按钮的展示。terminal 环境需要使用 Unix 终端搜索和删除文件。由于大多数人没有使用 Unix 终端的经验,人类参与者需要训练如何进行这项任务以获得很好的表现。为了了解为什么智能体无法在这个任务上得到任何分数,需要进一步的研究,尤其是在智能体能够完成一些按键相关的任务(如 text-transformsimple-arithmeticenter-text-2)的情况下。同样地,也有一些任务,智能体表现明显好于平均人类水平。表现差异最大的任务是 moving-items 任务,人类参与者很少成功,这很可能是因为与网络相关的控制延迟。

任务转移

我们发现:在每个任务上的训练步数固定的情况下,在所有的 104 个 MiniWob++ 任务上训练一个智能体的效果要好于为每个任务分别训练智能体的效果。为了比较这些训练方法,我们采取的性能指标为每个单独的任务所消耗的帧数的函数。图 5 显示了所有任务的平均分数。这些结果表明:统一的控制接口在支持多样化人类任务范围内的泛化方面有着巨大的潜力。

缩放

如图 7 所示:人类轨迹数据集的大小是智能体效果好的一个关键因素。如果只使用数据集的 11000\dfrac{1}{1000}(约 6 小时的数据),那么智能体会快速过拟合,并且相较于只使用 RL 的方法没有显著提升。并且随着将数据量逐渐增加三个数量级直到完整数据集的大小,我们发现智能体的效果在持续变好。我们还注意到,通过改变算法或者架构,在这些大小的数据集上可能会实现更高的性能。例如:当我们减小数据集大小时,我们只是通过减小 BC 的损失的权重(根据相对大小的平方根进行缩放)以缓解过拟合,但是实际上更有效的方法可能是对预训练的 BC 策略使用 KL 散度进行惩罚,这个策略会尝试最小化验证集上的损失。然而,为了探索在低数据环境下提高学习效率的方法,应当平衡所需的研究和实验成本与收集更多数据的简便性。

输入输出消融实验

我们的智能体结合了像素图像和 DOM 信息作为输入,并且设置为支持许多不同的动作。因此我们进行了消融实验以探究这些因素的重要性。

首先对输入进行消融。如图 8a 所示:我们现在的智能体设置非常依赖 DOM 信息,如果删除此输入,性能会下降 75%75\%。相比之下,智能体对没有视觉信息的操作不那么敏感,甚至是在需要处理有形状和线条的“画布”时也是如此。对于 DOM 的检查表明:在 MiniWob++ 中,画布在 DOM 中被清晰地表示出来了,这使得智能体可以在没有视觉信息的情况下获取到这些信息。但是这并不适用于更一般的计算机控制任务,因此提升智能体的仅基于像素的性能十分重要。

接下来对输出进行消融,主要考虑不让智能体使用环境给出的输入文本(任务字段)的情况。有趣的是,智能体依然能够完成需要表单填充的任务。但是,智能体从人类轨迹中学到的是:高亮文本,并将其拖到相关的文本框中。值得注意的是,这个拖拽操作在原始的 Selenium 环境中是不能直接做到的。

在图 8b 中,我们进一步探索了智能体不能与特定的 DOM 元素交互的情况。这意味着智能体不能解决在画布内单击,拖拽或者高亮特定的位置的任务。由于我们没有对这种架构进行优化,因此代理可用的动作与人类轨迹存在着较大的不匹配。在模仿学习中,我们简单地忽略了这些动作,但是这仍然会将智能体推向不一定最优的基于 DOM 动作的轨迹。在另外一个实验中,我们发现将原始动作与基于 DOM 的动作结合并不会让效果变得更好。

评论