Bengio团队提出BabyAI:首个有人类参与的AI语言学习平台

简介

如何训练智能体去理解人类的自然语言指令?无论从实用技术还是科学研究的角度看,该问题都十分重要。虽然人工智能技术在不断演进,但是如何实现可更好地理解自身需求的智能助手的问题仍然未得到很好的解决。从另一方面看,心理学、认知科学和语言学研究等领域也在研究类似问题,但是这些研究主要针对人类儿童阶段。要实现扎实的语言学习能力,需要将计算机科学与对人类语言的识别研究结合起来。

近期,蒙特利尔大学Yoshua Bengio研究团队实现了一种称为“BabyAI”的研究平台。该平台将人类加入到了语言学习过程中,并通过模拟人类专家去训练神经网络学习者(Learner)。BabyAI构建了一个二维的网格世界,通过合成指令让智能体巡航该网格(包括房门开锁)并移动物体到指定的位置。BabyAI中提供了课程学习(curriculum learning)和交互教学(interactive teaching)方法,用于模拟人类参与智能体训练循环中的一些关键过程,由此改进了一些前期研究。
 
已有多项研究提出使用课程学习(curriculum learning)训练机器学习模型的方法。BabyAI的理念是,正如人类之间教学一样,通过逐步增加任务的难度可以提高人类和机器的学习效率。为推进课程学习,当前BabyAI实现了19个层级,逐层增大了环境和语言的难度。
 
交互教学(interactive teaching)指的是根据学习者当前可达到的水平因材施教。因材施教是人类教师的一个重要能力,现有的研究提出了一些有效的交互式智能体训练方法。为了支持交互实验,BabyAI实现了一种启发式专家智能体,能够实时提供新的演示,为学习者给出如何继续操作的建议。

研究指出,将人类加入到语言学习循环中所面对的主要障碍,在于所需的数据量以及人类与机器之间的交互。尽管现有研究表明,目前在模仿学习(IL,Iimitation Learning)和强化学习(RL,Reinforcement Learning)中使用深度学习方法对一些语言学习的设置和应用卓有成效,但这通常需要提供大量的数据,以数百万次回报函数查询的形式,或是数十万次演示(Demonstration)的 形式。为展示BabyAI平台如何适用于数据效率研究,论文中给出了多个用例,并通过实验确定了使用IL和RL求解每个层级所需的最小样本数量。论文以此为基线,进而确定了使用预先训练和交互IL对数据需求的降低情况。

BabyAI平台的组成

BabyAI平台由一个高效的模拟网格环境(MiniGrid)和一系列遵循指令的任务组成。其中的任务组合称为“层级”(level),而任务是使用一种被称为“Baby语言”的人工语言形式化表示的。BabyAI平台中还包括了一种名为“启发式专家”的组件,该重要组件用于评估在教学循环中加入人类的作用。BabyAI的所有代码已经在GitHub开源,项目地址是https://github.com/mila-udem/babyai

2.1 模拟网格环境MiniGrid

数据效率的计算代价非常高,因为需要多次运行各种规模的数据。BabyAI环境的设计目标是实现一种最小化且高效的环境,这对于当前通用的智能体学习方法提出了多个挑战。为此,BabyAI给出了一种称为“MiniGrid”的二维模拟网格环境。在MiniGrid中,环境表示为不同颜色的各种实体,包括智能体、球、箱子、门和钥匙等,如图一所示。智能体可向对象执行拾起(PickUp)、放下(Drop)和移动(Move)等操作,房门(door)可使用与其颜色相匹配的钥匙(Key)开锁。在每一步,智能体会接收到其可视区域的一个表示,以及一条文本字符串形式的Baby语言指令。

\"image\"

图一 使用MiniGrid环境构建的三个BabyAI层级,分别为GoToObj(图a)、PutNextLocal(图b)和BossLevel(图c)。其中,红色三角表示智能体,浅灰色阴影区域表示智能体能部分观察到的可视区域。

MiniGrid是一种快速和轻量级的环境。在当前的多核笔记本上,可实现每秒3000帧的通量。该环境支持快速地开展实验。MiniGrid环境开源在线提供,并支持与OpenAI Gym的集成。具体细节可以参见原论文附录。

2.2 Baby语言

BabyAI给出了一种称为“Baby”的人工合成语言,用于向智能体发出指令,并自动检验指令的执行情况。Baby语言是英语的一个相对较小的子集,便于人类理解,并可提供丰富的语义组合。在Baby语言中 ,智能体根据指令走向对象(GoTo)、拿起对象(PickUp)、打开房门(Open),并将对象置于其它对象旁边(Put)。Baby语言还可以表达多个任务的组合,例如,“开门后将一个红色的球置于绿色的箱子旁”。图二给出了Baby语言的 BNF语法,图三显示了使用Baby语言生成的一些例子。为了使得指令便于人类阅读,Baby语言中添加了一些结构上的限制。例如,连接符(connector)以“then”和“after”的形式给出,指令中只能包括不多于一个“then”和“after”。Baby语言可组合生成2.48x10^19种指令。

\"image\"

图二 Baby语言的BNF语法
 
\"image\"

图三 Baby语言指令的一些例子

BabyAI平台还给出了验证器,用于检查在给定环境中执行一系列动作的智能体是否成功地完成了给定指令,并实现了目标。语言中的描述符用于表示一个或者多个对象。例如,如果一个智能体按指令走向“红色的房门”,那么在指令执行时,智能体可能会走向环境中任何一个红色的房门。连接符“then”和“after”用于构建按顺序完成的指令子目标序列,而“and”表示必须完成所连接的各个子目标,但是没有完成顺序上的限制。注意,Baby语言并未明确指定指令执行的具体细节。例如,智能体要实现打开房门的目标,必须首先找到相应的钥匙;或者智能体要完成一个指令,必须移除行进路径上的所有阻碍物。对此无需在指令中明确指明。

2.3 BabyAI的层级

大量现有文献研究表明,使用课程(curriculum)在很大程度上能促进神经网络对复杂任务的学习。为了支持课程以提高数据效率,BabyAI提供了一系列的层级。在每一层级中,设定了不同复杂度的环境,智能体只需要理解Baby语言的部分有限子集。或者说,层级发布了一些任务,而每个任务是指令和环境初始状态的组合。在构建每个层级时,考虑了选取所需的技能(competency)子集,并实现了仅处理这些技能的智能体便可求解的任务生成器。技能定义了智能体可做的事情,列举为:

  • 巡航房间(ROOM):巡航一个6x6大小的房间。
  • 忽略干扰箱子(DISTR-BOX):环境巡航,即使其中存在着多个以灰色干扰箱子表示的对象。
  • 忽略干扰者(DISTR):和DISTR-BOX一样,但是干扰者可以是任何对象,包括箱子、钥匙,或是任何颜色的球。
  • 巡航迷宫(MAZE):巡航由 6x6房间组成的3x3迷宫,其中的各个房间通过房门随机连通。
  • 去除路障(UNBLOCK):巡航环境,即便需要移动一些阻碍行进路线的对象。
  • 房门开锁(UNLOCK):在指令明确指定的情况下,找到钥匙,开锁房门。
  • 通过猜测开锁房门(IMP-UNLOCK):以猜测的方式执行指令。智能体需要识别需要开锁的房门,找到相应的钥匙,并进一步执行指令。
  • GoTo指令(GOTO):理解“go to”。例如,“走向红色的球”。
  • Open指令(OPEN):理解“open”。例如,“打开右侧的房门”。
  • Pickup指令(PICKUP):理解“pick up”。例如,“拿起一个箱子”。
  • Put指令:理解“put”。例如,“将球放在蓝色钥匙旁”。
  • 定位语言(LOC):理解指向对象的指令。引用对象时不仅通过对象的形状和颜色,而且使用对象的相对于智能体初始位置的定位。例如,“走到面前的红色球处”。
  • 命令序列(SEQ):理解组合指令中需要智能体按顺序执行一组指令语句。例如,“在开门后将红色球置于绿色箱子旁”。

表一 BabyAI的层级和各层级所需的技能

\"image\"

表一列出了当前BabyAI的所有层级,以及解决各个层级所需的技能。每个层级构建了通关该层级所需的技能过程,直至最终抵达需要掌握所有技能的BossLevel。

2.4 启发式专家

启发式专家(或称为机器人)是BabyAI的一个关键组成。在语言学习中,启发式专家模拟了人类教师的角色。该机器人会为每个BabyAI层级生成给定环境状态下的演示或建议动作。在这些演示或动作中,BabyAI学习者是通用的,可以扩展应用于更复杂的新任务上,而机器人则是使用任务的知识构造的。机器人表示了参与语言学习中的人类,实现在理解给定层级中任务并教授初学者的功能。机器人可直接访问指令树,所以无需去解析Baby语言。从实现机制看,机器人的执行使用了一种表示指令和子目标的堆栈。这种基于堆栈的设计,机器人可以中断正在做的事情,去实现新的子目标,然后再恢复执行原始的任务。例如,智能体在走向指定目标的过程中,可能需要探索环境去发现对象。

机器人实现的子目标包括:

  • Open:打开智能体面前的房门。
  • Pickup:执行PickUp操作。
  • Drop:执行Drop操作。
  • GoToObj:走向一个符合给定描述(类型、颜色)的对象。
  • GoNextTo:走向给定位置近邻的单元。
  • GoToAdjPos:走向对象近邻位置。该目标对于实现PutNext指令是必要的。
  • Explore:探索环境中未被前期行动探索的部分。这是机器人内部逻辑中最复杂的部分。

Baby语言的所有指令均可分解为一些内部的子目标,机器人理解如何完成这些子目标。很多子目标在堆栈上执行时,也会推出一些新的子目标。在机器人的设计中,一个核心问题是如何追踪未被机器人探索的环境单元。探索行动是“Explore”子目标的一部分,实现为递归运算。例如,探索环境可能需要打开一个房门,或是移动挡在路上的某个对象。打开锁着的房门则需要找到相应的钥匙,这本身需要探索并移动一些阻碍物。机器人设计中的另一个核心问题是最短搜索路径问题。在巡航对象定位最近的房门时,或是巡航最近邻的未探索元素时,都要用到最短路径算法。

实验

实验通过训练每个级别的模拟学习基线,评估BabyAI各个层级的困难度。实验还估计了求解一些较简单层级所需要的数据量,并通过使用基础课程学习和交互式教学方法评估了数据量需求的降低程度。实验用的所有代码以及容器化的预训练模型均在线获取。

3.1 实验设置

BabyAI平台的每一步输入默认为7x7x3环境的符号观察值x(即对部分和局部环境状态的自中心视图)和可变长度的指令c。实验中使用由标准组件组成的基本模型,预测基于x和c的下一个动作a。具体而言,实验使用了GRU对指令和卷积网络编码,采用前期研究提出的两个批量标准化FiLM层联合处理观察和指令,使用LSTM存储整合FiLM模块在每步所生成的表示(representation)。在实验中使用了两个版本的模型,分别称为Large模型和Small模型。在Large模型中,存储LSTM具有2048个单元,指令GRU是双向的,并具有256个单元。此外,还使用了注意机制(attention mechanism,Bahdanau等于2015年 提出)聚焦于GRU的相关状态。Small模型使用了具有128个单元的较小内存,并使用单向GRU对指令编码,没有使用注意机制。

\"image\"

3.2 基线结果

为了获得BabyAI所有层级的基线结果,在实验中使用IL训练Large模型,并在每个层级使用一百万个由启发式专家生成的演示过程(demonstration episode)。模型训练进行了大约一个星期,表二给出了在具有512个过程的验证集上的最终成功率。从表二可见,对于所有只有单个房间的层级,求解的成功率是100%。通常,层级中的演示过程越长,越难以求解。

表二 BabyAI所有层级上IL学习的基线结果。每个模型的训练都使用了相应层级中的100万次演示。作为对比,表中还列出了每个层级中演示的平均长度。

\"image\"

即便是对于GoToRedBall这样的简单层级,使用一百万个演示的效率也非常低,几乎不可能达到支持人类训练的长期目标。BabyAI平台的目的是支持神经网络智能体研究使用更少量的数据学习。为推进这类研究,必须确定IL和RL方法在求解BabyAI层级上的基线数据效率。如果智能体在某个层级上能达到至少99%的成功率,那么就可以说该智能体可以求解(solve)该层级。实验中,定义数据效率(data efficiency)为训练能求解该层级的智能体所需的最小演示数量,或者是最小RL过程数量。为评估IL的数据效率,实验中尝试使用不同数量的演示训练模型,从一百万个开始,每次尝试将降低\"image\"倍数量。每个模型训练更新\"image\"数量的参数,其中\"image\"是在L层级上使用一百万次演示并获取99%目标性能所需更新的参数数量,确保最小数量演示存在于\"image\"区间中。部分层级的实验结果给出于表三的“IL from Bot”列。表三的“RL”给出了使用RL求解每个层级所需的过程数量。从表三可见,RL的数据效率要显著地低于IL,在本实验中介于4到8倍之间。

表三 求解每个层级所需的演示(和过程)数量。所有数值均以一千为基础单位。对于RL实验,表中给出了多轮运行中的最小和最大数据效率。对于基线IL结果,表中给出了在\"image\"区间中的结果。

\"image\"

为评估IL的数据效率多大程度上取决于演示的来源,实验中使用了由RL训练的智能体生成的演示。结果给出于表五的“IL from RL”列。有意思的是,智能体生成的演示非常易于学习者模拟。例如,在GoToLocal层,模拟机器人需要17.7个演示,而模拟RL专家仅需7.07万个演示。这可以解释为,RL专家和学习者具有相同神经网络结构。

3.3 课程学习

为展示如何使用BabyAI平台实现课程学习研究,在实验中执行了一系列基本的预训练实验。具体而言,实验中选择了基础层级和目标层级的五种组合,以确定基础层级上的预训练是否有助于智能体在使用更少演示的情况下求解目标层级。实验结果如表四所示。在使用GoToLocal和GoToObjMaze为基础层级并使用GoTo为目标层级时,预训练的作用最大,将求解GoTo层级所需的演示数量从35.4万降至12.5万。在另外一些情况下,例如只使用GoToObjMaze为基础层级时,预训练并未体现出多少作用。

表四 预训练实验的数据效率。表中列出了实验所尝试组合的多种基线层级和目标层级,所需的演示数量,以及从头开始训练所需的基线演示数量。结果均是\"image\"范围的情况。注意,基础层级的选择对于预训练是否有用是十分关键的。

\"image\"

3.4 交互学习

根据智能体已经学习到的情况,通过交互方式为智能体给出更多有信息量的例子,这样能在多大程度上提高智能体的据效率?对此问题,实验中做了一次实例分析,实例使用迭代算法实现智能体训练集的自适应增长。具体而言,就是在一开始使用5000个基础演示,并每轮迭代增加数据的 规模1.2倍,并提供给机器人一些智能体产生失败的演示。在每次增大数据集规模后,从头开始训练一个全新的智能体。然后报告使得智能体性能超过99%阈值的训练集规模。对于GoToRedBallGrey、GoToRedBall和GoToLocal层级,重复上述实验四次,并报告最大和最小数据效率。结果给出在表五的“iterative imitation learning”列。结果表明,经过一些轮运行后,原始IL取得了显著的改进。例如,GoToLocal层级的演示数据流从19.2万降低到11.1万。但是需要注意的是,迭代IL给出结果的方差相对较高。

表五 来自使用RL预训练专家和交互IL的数据效率。数据效率定义为求解每个层级所需的演示数量,所有数值以一千为基础单位。表中给出了迭代IL在多轮运行后观察到的最小和最大数据效率。对于基线IL则给出了在\"image\"范围内数值。

\"image\"

结论和进一步工作

BabyAI研究平台用于开展人类参与情况下的语言学习研究。该平台包括了19个难度依次递增的层级,每个层级将任务分解为一组基本的技能。对各个层级的求解,需要智能体理解作为英语一个子集并使用形式化定义语法表示组合属性的Baby语言。尽管Baby语言是最小化的,并且各个层级看上去非常简单,但是从实验结果看,对于当前研究的方法而言,求解各个层级依然是非常具有挑战性的。Baby平台是开源的,并可扩展,研究中可以轻松地集成新的层级和语言。

论文给出的实验结果表明,对于一些具有组合结构的学习任务,当前IL和RL方法扩展和泛化能力不好,完成学习任务需要数十万演示,这对于人类而言过于繁琐。采用课程学习和交互学习等方法,可在一定程度上提高数据效率。

如何找出改进语言学习中数据效率的有效策略,这是一个很有前景的未来研究方向。为解决该挑战,可能需要研究人员提出一些新的模型和新的教学方法。目前已经看到一些很好的研究,例如神经模块网络(Neural Module Networks,Andreas等于2016年提出)和神经编程解释器(Neural Programming Interpreters,Reed和de Freitas等于2015年提出)等。希望BabyAI平台可以成为语言学习中数据效率的基准测试平台。

查看英文原文: BabyAI: First Steps Towards Grounded Language Learning With a Human In the Loop

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值