安妮 夏乙 编译整理
量子位 出品 | 公众号 QbitAI

晚上9点,一下午开了3个会的你终于回到家,换了衣服瘫倒在沙发里。放空了三分钟之后,你缓过神来,喊了一声:

Siri,把我刚才挂在衣架上的浅色衣服放到洗衣机里去!

这样的任务,大概只能在科幻片里实现。

不过我们可以设想一下,如果你在几十年后真的拥有一个有机器人身体的Siri,要完成你给出的任务,它需要哪些能力呢?

  1. 听懂这句话,明白你的意图,理解“衣架上”、“洗衣机里”分别是什么地方,“衣服”又是什么东西;

  2. 导航到“衣架”,定位到上面的衣服;

  3. 从里选出“浅色的”那几件,抓住;

  4. 导航到“洗衣机”,打开门,把抓着的衣服送进去,放下。

在这个过程中,她可能还需要问你一些问题,比如说:哪个衣架?包括这件衣服吗?……

抛开导航、定位、抓取物体这些机器人在真实3D环境中的行动能力不谈,单是理解指令、规划出怎么完成任务,就需要你家的AI能够理解语言感知环境理解物体之间的关系、主动交流、规划行为。

不容易啊!

不过,已经有科学家开始在这方面努力了,比如说最近有一项研究,就把上面描述的这类任务简化简化再简化,做成了一个“你说我画”的游戏,给两个AI智能体玩。

这个游戏名叫CoDraw,需要两个智能体协作完成。

一个智能体面前摆着一幅画,它需要把这幅画上有什么、某个东西放在哪用语言描述出来;

另一个面前摆着一张空白画布,要按照之前那个智能体的描述,画一幅画,遇到不确定的地方,还要提问。

这两个智能体,分别叫描述者(Teller)和作图者(Drawer)。

玩CoDraw游戏的具体过程是怎样的呢?我们来举个例子(T代表描述者,D代表画图者):

T:图里左侧中上方有棵浓密的树,树节在右侧,树干左边部分不在画面里。
D:好的。(根据对T的描述的理解,画一棵树。)
T:右侧中上方有一棵常青树,树干贴着画面右边的边缘。
D:第二棵树的树干在哪?高还是低?
T:在画面上半部分。图上边还有个太阳,有一部分被那棵浓密的树挡住了。
D:(画了常青树和太阳。)大小呢?
T:(没回答这个问题。)有个男孩盘腿坐在离画面左边两指的地方,笑着看向右边,左手拿着热狗,右手拿着汉堡包。
D:OK。(照着描述画个男孩。)
……(双方配合着又画出了女孩、烧烤架)……
T:(看了一眼D的画。)浓密的树再往上移一点,太阳再大一点,烧烤架也往上移一点。其他都挺好的。
D:(不说话,改改自己的画。)

完成撒花~ 把画出来的作品跟原画比较,就能判断两个AI智能体配合得怎么样了。

这个游戏是怎样做出来的?智能体玩得怎么样?

在国立首尔大学、乔治亚理工大学、Facebook人工智能实验室(FAIR)和Surromind Robotics合著的论文CoDraw: Visual Dialog for Collaborative Drawing中,研究人员将为你解答全部疑问。知乎大神田渊栋,也是作者之一。

搞定绘画素材

想让AI玩上“你说我画”,第一个问题就是:画图素材从哪来呢?

放眼望去,研究人员觉得Zitnick和Parikh两位同行之前提出的Abstract Scenes数据集还不错。

这个数据集包含10020个语义一致的场景,每个场景包含最少6种、最多17种物体。

整个数据集共包括58个物体的clip arts,在这里我们将其称为“贴纸”。这些贴纸包括在公园中游玩的男孩麦克和女孩珍妮的7种姿势和5种表情,此外还包括树、玩具、帽子、动物、食物等各种物体。

每张贴纸都可被拖放到画布上的任意(x,y)位置,来创建一个抽象场景。这些贴纸还支持大小和空间转换,包括大中小三种型号、前中后三种景深和面朝左右2种方位,总共3×3×2=18种变体。

 作画者界面

描述者看图说话,作图者听话作画,就靠这些贴纸了。

对话数据

画图素材敲定后,研究人员开始考虑对话数据的来源了,去哪收集这部分数据呢?

亚马逊的Amazon Mechanical Turk是一个向全球人类发布任务的数据标注平台。需要标注、处理数据的机构将任务发布在上面,有时间的兼职者去认领任务。虽然这个平台在国内并不出名,但在国外早已是研究机构处理数据的好帮手。所以,对话数据的收集有了大量人手。

每次数据的收集过程需要两名兼职协作。和描述者与作图者的任务相同,一名兼职负责看着面前图像准确描述图中信息,而另一名兼职需要在空白画板上作图。为了方便收集,研究人员基于Visual Dialog聊天界面构建了一个拖放界面方便收集数据。

 兼职人员看到的拖拽界面

在每轮对话中,每方一次只能发一条消息,之后需要等待对方回复。每轮对话限制在140字内。负责作图的人根据描述逐步修改场景,并且可以询问是否画得正确。

 CoDraw数据集演示示例,作图者根据描述者的内容逐步生成的图像

等到双方都对做出的图像满意,这轮对话也就结束了,完成的质量好的兼职会获得额外的奖金。

怎样判断双方完成的质量如何?这还得根据与描述者看到原图的相似度来判断。研究人员用Scene Similarity Metric (SSM)来评判原图S和重构图S^之间的差距:

最后,研究人员收集了9993段对话,总共包含138000个句子。他们将整个数据集的80%(7989)的示例用于训练、10%(1002)用于验证、10%(1002)用于测试。

整个对话集是什么画风?研究人员用以下三个维度进行了可视化——

 token数量

上图中,蓝色和绿色分别代表描述者和作图者消息中token的个数。可以发现,作图者发出单token消息41195条,占比(62.6%)。其中,描述者和作图者token的中位数分别为16和1。

 对话轮数的中位数为7分钟

 对话时间的中位数为6分钟

构建模型

搞定了数据集后,研究人员就要分别为描述者和作图者构建模型、开始训练了,还要通过重建场景的质量评估模型的好坏。

研究人员选取训练集里最常见的贴纸并用分类属性的模式和中间位置作为基线,如下图所示:

 基准图

研究人员从目标图像S中提取出特征φ(S)后,采用了两种方法对对话建模,这也是为了从中选出更适合这项任务的方法。

一种是用连续单注意(Sequential single attention)法构建的模型SeqAtt,遵循预定义的、内容独立顺序随机的原则,描述者每次顺序选择一个贴纸Si,之后生成表达uˆ (T) t。一旦作图者接收到这个消息,它将在画布上添加这项内容,并将结果uˆ (D) t反馈给描述者。

这种方法不考虑历史对话,并且描述者是顺序选择物体而不是首先描述图中最重要的物体。用这种方法模拟对话使用了训练集中37.6%的对话回合。

为了对会话历史建模,并让注意机制学会感知内容,研究人员提出了第二种方法,即动态多注意(Dynamic multi-attention)法构建的模型DynAtt。

 DynAtt模型完成协同绘图任务示意图

它能赋予描述者和作图者记忆,损失函数可以写成下面的形式——

在这里,研究人员使用到了对话中的监督信号u,注意力α和作图者的行为a。没有^的符号表示真实值(ground-truth value)。

根据所用编码器和解码器的不同,研究人员组合出了五种模型,即SeqAtt(GRU)、SeqAtt(BoW)、DynAtt(LSTM)、DynAtt(BoW)和DynAtt-NJ(LSTM)。需要注意的是,DynAtt-NJ和DynAtt是同一种模型,只不过DynAtt-NJ在训练中添加了共同注意力模型(Joint attention models)。

实验结果

最后,研究人员评估了多个基线和模型。通过上述提到SSM评估方程

提出的评价指标SSM对模型进行评估,总体来看,基线模型(Mode)的总分为0.9024,与之相比SeqAtt(BoW)的总分最高,为2.3983。

 各模型分数汇总

可能这些数字对比起来还不够直观,不如直接看看各模型最后画出的图像。研究人员给描述者下面这张原图,要求描述者描述给作图者——

 描述者看到的原图

之后,各模型中的描述者和作图者争分夺秒进行对话,还原图像。结果如何呢?

有这样的——

这样的——

这样的——

和 这样的——

差距还不小~

那么……每个模型之间,描述者和作图者是如何对话的呢?请看下图——

得分最高的,是一组人类(左一)。他们是这样对话的(T代表描述者,D代表作图者):

T:右侧有个面朝左的大滑梯,一只大型猫头鹰坐在滑梯上也面朝左,梯子的顶部和底部稍稍被切掉了。
D:OK。
T:梯子上方有一大朵正在下雨的云,并且上部被切掉了。
D:OK。
T:图画左边有两个人,小灌木的树洞朝左。
D:OK。
T:树的左边有个面朝右的生气的盘腿男孩,男孩的右手被切掉了。
D:OK。
T:树右边的坐着一个脸朝右的生气的女孩。
D:OK。
T:干得漂亮,需要将物体整体向下移动,但不要碰到底面,谢谢!
D:OK

得分最低的DynAtt(BoW)模型(右一)就看起来有些不正常了——

T:一个 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:梯子 D:<无语>
T:一个 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>
T:女孩 D:<无语>

得分最高、生成图像质量比较好的SeqAtt(BoW),对话方式其实和人类不太一样,可以说……非常简练:

T:有云下雨。
D:OK。
T:右侧滑梯。
D:<无语>
T:左侧树小。
D:<无语>
T:左侧男孩生气。
D:<无语>
T:女孩坐着生气。
D:<无语>
T:树猫头鹰。
D:OK

不过从结果来看,作图者似乎不太理解云和雨是什么,反倒给出了一个大太阳。

排在左二的SeqAtt(GRU)和左四的DynAtt(LSTM),对话的语句乍一看还算正常,但描述的顺序总是有些问题,前后还常有矛盾之处。

总的来说,无论是从得分上来看,还是从对话内容上来看,这些模型都和人类还有不小的差距,或者乐观一点说:提升到空间。

对了,研究人员为什么要教智能体玩游戏呢?

“训练智能体用自然语言与人类交互、并基于它所处环境决策和行动是对AI的基本要求。从这个目标出发,我们需要赋予智能体感知环境、理解语言、主动交流、准确理解目标最后做出正确决策的能力。”研究人员在论文中是这样写的。

最后,附论文地址:

https://arxiv.org/abs/1712.05558

加入社群

量子位AI社群13群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot2入群;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进群请加小助手微信号qbitbot2,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

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


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

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


AI何时能懂环境会沟通?别急,这个“你说我画”小游戏开了个好头 | 论文相关推荐

  1. 谷歌“猜画小歌”被吐槽:这AI怕是个傻子吧

    相信大家的朋友圈最近一定被"涂鸦"刷屏了. 西雅图IT圈:seattleit [今日作者]宇直 宇宙第一直男 最近,谷歌推出了旗下首款微信小程序"猜画小歌".和 ...

  2. 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 小时候,有没有玩过一个叫做立体图游戏. 就是那种给你一张二维图,让你看图背后有啥东西. 比如,像这张图. 这其实是一张六角星. 在比如这张. ...

  3. 开发者说:愿为你点亮“懂环境知冷暖”智能的灯

    摘要:看一个城市发的白光多还是黄光多,就能看出它的经济水平和智能化水平. 乘坐夜班飞机的时候,你一定看过窗外的城市夜景,俯瞰下去,城市灯火辉煌,一片灿烂. 而你所看见的光亮,大部分由路灯构成. 一般人 ...

  4. 滴滴开源AoE:一种快速集成AI的终端运行环境SDK

    作者:石臻臻, CSDN博客之星Top5.Kafka Contributor .nacos Contributor.华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家 . LogiKM PMC( ...

  5. 百度AI studio配置tensorflow环境

    目录 1 安装准备 2 环境配置 2.1 新建虚拟环境 2.2 激活环境 3 自动化安装 之前做了ai studio 安装pytorch环境的教程后来发现tensorflow也是可以安装的.由于ai ...

  6. AI: 机器学习必须懂的几个术语:Label、Feature、Model...

    目录 1.标签 Label 2.特征 Feature 3.样本 Example 3.1有标签样本(labeled): 3.2无标签样本(unlabeled): 4.模型 Model 5.回归 Regr ...

  7. AI版「按图索骥」,比猜画小歌更复杂的的AI交互游戏

    郑集杨 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你能在时间结束前根据Emoji找到你身边的物品吗?大概,像这样: 跟我玩?不不不,是你自己跟这个AI玩,找出东西然后让AI辨认它. 这并 ...

  8. python写一个游戏多少代码-使用50行Python代码从零开始实现一个AI平衡小游戏

    集智导读: 本文会为大家展示机器学习专家 Mike Shi 如何用 50 行 Python 代码创建一个 AI,使用增强学习技术,玩耍一个保持杆子平衡的小游戏.所用环境为标准的 OpenAI Gym, ...

  9. Paddle.js PaddleClas 实战 ——『寻物大作战』AI 小游戏

    1. 前言 AI 自诞生以来就应用在各个科技前沿领域,随着发展进程加快,在娱乐方面也有越来越多的趣味性游戏开始将AI融入其中.『寻物大作战』正是一款基于 AI 能力打造的趣味性小游戏,目的就是让玩家通 ...

最新文章

  1. 关键路径法及C语言实现
  2. CentOS 7.2 安装教程
  3. mysql 两列计数_MySQL在两列上计算唯一值,并为每列连接这些计数
  4. nn.BCELoss与nn.CrossEntropyLoss的区别
  5. 3线程的终止方式,线程属性,NPTL
  6. 去除重复数据的SQL语句
  7. 漫步线性代数十七——正交基和格拉姆-施密特正交化(上)
  8. Python高手之路【十】python基础之反射
  9. 在Silverlight 和WPF中使用预编译指令 if..else..endif (译)
  10. 95-136-043-源码-Operator-CoProcessOperator
  11. [转载]项目风险管理七种武器-离别钩
  12. LaTeX在数学环境中使用直立体
  13. C语言的32个关键字怎么背,C语言32个关键字,精心整理带中文翻译
  14. 进销存excel_Excel教程:简易进销存!厉害了,SUMIFS!
  15. 格林公式、高斯公式及斯托克斯公式的理解及相互关系
  16. Android 音频系统:从 AudioTrack 到 AudioFlinger
  17. 计算机网络中常见的名词缩写
  18. 分享50个优秀的电子商务网站设计案例
  19. 如何防止iOS工程师简历石沉大海的几大秘技(请注意查收)
  20. 解决Unable to open debugger port错误

热门文章

  1. 第 10 章 桥接模式
  2. 第 8 章 建造者模式
  3. PHP三级联动视频教程,PHP教程:thinkPHP实现的省市区三级联动功能示例
  4. python对列求和_对单个列求和的最快方法
  5. ffmpeg 拼接mp4_ffmpeg 合并 拼接 mp4视频
  6. python中什么是数据驱动_携程大牛谈自动化测试里的数据驱动和关键字驱动思路的理解...
  7. mac虚拟机linux性能测试,Veertu 1.0.4 – Mac上最轻便的虚拟机,可以运行Windows/Linux。...
  8. python 100题_python 100题
  9. Linux下hba卡驱动的卸载,SLES11下如何重装qlogic FC HBA卡驱动
  10. python docs库_python库之_thread