MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

方栗子 发自 凹非寺

量子位 出品 | 公众号 QbitAI

先提一个可能直击灵魂的问题:

你家水池里的碗,放了几天了?

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

显然,你和TA都不想先去洗,那样就是低了头。

让服务机器人出面化解这场僵持,可能还只是想想而已。

不过,训练AI在虚拟世界里做家务,已经有人在做了。

他们还说,教AI做虚拟家务,是为了今后能让机器人全权代理人类的家务工作。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

△ 女仆机器人嘿嘿嘿

以麻省理工 (MIT) 和多伦多大学的研究人员为主的一支AI团队,建立起了名为VirturalHome的家庭环境模拟器,化为人形的智能体可以在里面学习大量的生活技能。

事无巨细模拟器

VirtualHome由三个部分组成。

一是家务知识库,里面包含了人类在家庭生活里会经历的各种活动。

教AI做事情不容易,比如让它看电视,如果不告诉它坐到沙发上、拿起遥控器,它自己并不会去做这些准备动作。

所以,不论一项技能多么日常,都需要把它尽可能拆解成细小的步骤,比如走进厨房,拿起杯子之类。

于是,知识库里的每一个任务,都要包含分解动作的文字描述,以及用来执行的脚本。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

二是3D模拟器,里面有6个公寓,以及4个人物可以选择。虚拟环境中,示例、语义标签注解、深度、姿势以及光流,应有尽有。

在这里面,角色可以执行程序给定的任务,可以生成各种家务活动的视频。

三是脚本生成模型,根据自然语言描述或者视频内容,生成相应任务的执行程序。

在模拟器并不十分广阔的天地里,研究人员要训练神经网络的各项家务技能。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

论文里说,这项研究的目标,就是让AI在自然语言和视频的指引之下,自己写出程序来做好家务。

一步很难登天,那么,三步怎么样?

1 数据怎么搞

要训练出一只可靠的家务AI,首先就是搜集各种家务活动的数据,这要分为两个部分——

第一部分,让一群临时工 (AMT worker) 来提供任务的口头描述。每个人要想出一项日常家庭活动,给出高级名称,比如“做咖啡”,然后描述它的分解步骤。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

活动按起始场景分类,于是就有8种,客厅、厨房、餐厅、卧室、儿童房、浴室、玄关、书房。每个场景都包含了350个物体。

第二部分,临时工们会用图形编程语言,把这些描述翻译成程序,当然也需要详细的步骤 (每一步都是一个block) ,而且要比描述的还要全面——要让 (目前还不存在的) 机器人能够贯彻落实。

数据集就这样建好了,里面充满了大大小小的任务所对应的程序。

2 动画化

把数据集里的程序变成动画,首先要看房间里的哪个物体才是要操作的对象,同时生成合理的动作。这里,系统需要把一个任务的所有步骤都看过一遍,然后规划一条合理的路径。

比如,执行一项“打开电脑然后敲键盘”的任务,比较理想的流程是,开机之后就在离目标电脑最近的键盘上操作就可以了,不用再确定哪一个才是目标键盘。

原子动作动画化

每个任务都是由大量原子动作 (Atomic Actions) 组成的,把它们全部动画化是个不小的工程。

这里用到了12种最常见的动作:走/跑、抓取、按键开/关、(物理) 打开/关闭、放置、望向、坐下/站起,以及触摸。每种动作的执行方式不唯一,比如开冰箱开抽屉,姿势就不一样了。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

团队用Unity引擎里的NavMesh来导航;用RootMotion FinalIK反向动力学包,把每个动作动画化。

另外,跟人物发生交互的物体,也要发生相应的动作。

程序动画化

要让程序里的任务显现成动画,就要先在程序中的物体、和模拟器场景中的物体之间建立映射

然后,是为程序里的每一步,计算人物和目标物体的相对位置,以及计算其他与动画化相关的数字。

记录动画

模拟器的每个房间里,有6-9枚摄像头,每个公寓平均下来26枚。

并非每时每刻,都需要所有摄像头,系统根据人物所在的位置来决定启用哪些摄像头。

记录下来的视频,下一步可以喂给神经网络,训练它生成自己的程序

3 用视频和自然语言生成程序

给AI一段视频,或者一段自然语言,让它自动生成相应的家务执行程序,做一只有觉悟的AI。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

△ LSTM

团队调整了seq2seq模型,来适应这个任务,然后用强化学习来训练它。

这里的模型,是由两只RNN组成的,一只给输入序列编码,另一只负责解码。神经网络每次可以生成一项家务中的一个步骤。

给文本编码,用的是word2vec

处理视频的话,就把每条视频拆成许多个2秒长的片段,然后用模型来预测中间帧的样子。这里用到了DilatedNet,还用到了Temporal Relation Netork

学习和推断

这个过程分为两步。

第一步,用交叉熵损失 (Cross Entropy Loss) 对解码器做预训练。

第二步,强化学习登场,智能体要学习一下策略 (Policy) ,用来生成程序里面的步骤。

模拟器里很幸福

数据集的质量如何?动画化的效果怎样?系统生成的程序又能不能指向希望的任务呢?

测试过程请见论文。不过在那之前,先看看这个人。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

看电视的任务做得很流畅,他还会找个舒服的姿势坐下来,很悠然。

团队也觉得,从生成的视频来看,各种任务的完成度还是不错的。

下一步,就要给AI喂真实拍摄的视频了,毕竟模拟器里发生的一切,和物理世界还是不一样的。

是太幸福了吧?

毕竟,模拟器里的家庭环境一成不变,东西都摆在它该在的地方,也没有小朋友跑来跑去。

在机器人接手任务之前,AI可能还需要在更加难以预测的模拟环境里,训练很长时间。

另外,就算环境变化不是问题,真实的家务操作也并不像捡个装备那么简单,且容错率非常低。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

比如,端一杯咖啡不可以只有90%的准确度,95%也不太行。因为,百分之一的差错,会造成百分之百的灾难。

不过,作为一个日常手抖的操作渣,我端咖啡也没那么安全,从某种程度上说,还是很有潜力成为机器人女仆的重度用户。

CVPR欢迎您

不久以后,研究团队就要怀着激动的心情,登陆CVPR,在世人面前宣告,他们为了这个宏远的理想,踏出了多么坚实的一小步。

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

代码还没放出来,不过可以先看看论文啊。

传送门:

VirtualHome: Simulating Household Activities via Programs

http://virtual-home.org/paper/virtualhome.pdf

MIT怎样教AI做虚拟家务?让它写个程序指挥自己啊|CVPR 2018

—  —

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态

版权所有,未经授权不得以任何形式转载及使用,违者必究。