陈桦 允中 编译整理
量子位 出品 | 公众号 QbitAI
还记得去年Google Brain推出的小游戏“Quick, Draw!”吗?机器给出一个名词,你需要在20秒内画好,还得让机器猜出来。
量子位编辑部全体同事都表示玩过这个小游戏,我们打算在自己简历里加一条:参与了谷歌大脑的Sketch-RNN项目。
说正事。
谷
歌大脑团队研究员David Ha和Douglas Eck今天在博客中宣布,他们用“Quick,
Draw!”游戏的玩家涂鸦作品教会了人工智能像人类一样画画,并发表了论文《A Neural Representation of Sketch
Drawings》来详细解释这个名为Sketch-RNN的项目。
为训练Sketch-RNN网络,研究员们收集了人类在“Quick, Draw!”中画的75类、70000幅涂鸦,还记录了人类画画的整个过程:画笔的运动轨迹、何时落笔何时停止等等。
在训练过程中,AI还对自己所画的东西产生了抽象概念,比如说,它知道猫应该有两只眼睛,不会画出这样的惊悚作品:
两位研究员的博客全文
抽象的可视通信是人们相互之间表达思想的重要部分。从儿童时代开始,人类就开始形成用画笔描绘对象、甚至情绪的能力。这种简单的涂鸦可能与真实照片有很大差异,但却能告诉我们,人类如何对周围世界的画面进行展现和重建。
△ Sketch-RNN生成的绘画
在我们近期的论文《A Neural Representation of Sketch
Drawings》中,展示了一种生成性的循环神经网络(RNN),可以绘制普通物体的涂鸦,其目标是训练机器以类似人类的方式来画画,并概括抽象的概
念。我们使用由手绘涂鸦构成的数据集去训练我们的模型,而这些涂鸦的绘制由一系列控制画笔的肢体运动组成:画笔运动的方向,何时提笔,何时停止绘画。通过
这样的训练,我们创造了一种可能有多种用途的模型,例如协助艺术家的创意过程,以及指导学生学习绘画。
尽
管基于神经网络的图像生成模型已获得了大量研究,但大部分这类工作都专注于由二维像素网格构成的图像建模。目前,这些模型被用于生成具有真实感的图像,但
这样做的关键挑战在于,如何生成结构协调的图像。例如,这些模型生成的宠物猫有时会出现三只眼睛,而生成宠物狗可能有好几个脑袋。
△ Ian Goodfellow, NIPS 2016 Tutorial
在
这项工作中,我们基于人类的绘画方式研究了较低维度、基于向量的表现方式。我们的模型Sketch-RNN基于seq2seq自动编码框架,利用了变分推
断,并使用超网络(hypernetworks)作为可重复的神经网络单元。使用seq2seq自动编码器的目的是训练神经网络将输入语句编码为一个浮点
数向量,即隐藏向量,并利用这一隐藏向量和解码器去生成输出序列,以尽可能接近的方式重建输入序列。
△ Sketch-RNN原理图解
在
我们的模型中,我们有意向隐藏向量加入了噪声信号。在论文中,我们展示了,通过在编码器和解码器之间的通信信道中引入噪声,这一模型无法再准确重建输入涂
鸦,而是必须学会捕捉输入涂鸦的本质。我们的解码器获取这一隐藏向量,生成动作序列,用于绘制新涂鸦。在以下图片中,我们将多幅猫涂鸦输入至编码器,并利
用解码器生成了重建的涂鸦。
需要强调的一点在于,重建的猫涂鸦并不是输入涂鸦的直接模仿,而是与输入对象类似的新涂鸦。为了证明,这一模型并非简单地模仿输入序列,而是学会了人类涂鸦的方式,我们可以向编码器输入非标准的涂鸦。
当我们向编码器输入三只眼睛的猫涂鸦时,模型生成了外形类似,但只有两只眼睛的猫涂鸦。这表明,模型已经知道,猫只有两只眼睛。
为
了证明,我们的模型并不是从大量已记忆的猫涂鸦中选择了最接近的一个,我们可以输入完全不同的内容,例如一把牙刷的涂鸦。我们看到,这一神经网络生成了类
似猫的涂鸦,但胡须很长,像是这把牙刷。这表明,神经网络学会将输入涂鸦编码为一系列抽象的猫概念,并嵌入至隐藏向量中,随后基于隐藏向量重建全新的涂
鸦。
我们重复了试验,让这一模型学习猪的涂鸦,并取得了类似结果。在输入8条腿的猪涂鸦时,这一模型生成了外形类似,但只有4条腿的猪涂鸦。如果我们向其中输入卡车涂鸦,那么模型会生成看起来像是卡车的猪涂鸦。
为
了研究这些隐藏向量如何编码动物的概念特征,在下图中,我们首次获得了来自两个明显不同的猪涂鸦的隐藏向量,包括一个猪头(绿色框)和一只完整的猪(橙色
框)。我们希望了解,模型如何重建猪涂鸦,而方式之一是在两个不同的隐藏向量之间进行插值,随后从每个插值的隐藏向量去生成涂鸦。在下图中,我们展示了猪
头涂鸦如何逐渐演化成了整只猪的涂鸦,并在这一过程中演示了,我们的模型如何组织猪涂鸦的概念。我们看到,隐藏向量控制了鼻子与头部的相对位置和大小,以
及涂鸦中身体和腿部是否存在。
我
们还想知道,如果模型能学会多种动物涂鸦的重建,那么在这样的情况下,最终涂鸦看起来会是什么样?在下图中,我们利用基于猫头和整只猪之间的插值隐藏向量
去生成涂鸦。我们看到,最终涂鸦逐渐从一只猫头变成了有尾巴的猫,再变成躯体肥胖的猫,最终变成一只猪。与儿童学习画动物的方式类似,我们的模型在画动物
时也是将头、腿和尾巴连接到身体上。我们还看到,这一模型绘制的猫头与猪头有明显不同。
这些插值的例子表明,隐藏向量确实编码了输入涂鸦的概念特征。那么,我们是否可以使用这些特征去增强不具备这类特征的其他涂鸦,例如在猫头上加一个身子?
△ 通过这样的隐藏向量算术,系统学会了抽象概念之间的关系
实
际上,在我们用猫涂鸦和猪涂鸦训练模型的过程中,我们发现,涂鸦的类推是可能的。例如,我们可以从整只猪涂鸦的隐藏向量中删除属于猪头的隐藏向量,从而得
到属于身子的向量。将这样的差异添加到猫头的隐藏向量中,我们就可以得到一只完整的猫。这样的涂鸦类推使我们可以探索,模型如何组织其隐藏空间,在重建涂
鸦的过程中呈现不同的概念。
创意应用
在这项工作中,除了研究目的以外,我们也非常关注Sketch-RNN的潜在创意应用。例如,在最简单的应用场景中,图案设计师可以使用Sketch-RNN为布艺和墙纸图案生成大量类似,但各有不同的设计。
△ 绿色和黄色方框中的是输入涂鸦,其他是系统生成的类似却不同的设计
正如我们此前所见的,经过训练,能绘制猪涂鸦的模型也可以绘制出类似猪的卡车,只要提供卡车涂鸦的输入即可。我们可以将这样的成果投入应用,帮助创意设计师得出抽象设计,满足目标人群的喜好。
例如在下图中,我们将4把不同椅子的涂鸦输入至能够画猫的模型中,生成了与椅子有相似之处的猫涂鸦。我们可以更进一步,利用插值方法去探索看起来类似椅子的猫的隐藏空间,生成一系列设计供选择。
探索不同对象之间的隐藏空间或许可以帮助创意设计师找到有趣的交汇点,以及不同图案之间的关系。
我们还可以将Sketch-RNN的解码模块视为独立模型,训练其预测未完成涂鸦的可能结果。这种技术可以协助艺术家完成创意流程,推荐更多方式去完成尚未完成的作品。在下图中,我们绘制了多个不同的未完成涂鸦(用红色表示),并让这一模型以多种可能的方式去完成绘画。
我
们甚至可以将这一概念更进一步,让不同模型去处理同一幅未完成涂鸦。在下图中,我们看到,同样的圆形和方形图案如何演变成了蚂蚁、火烈鸟、直升机、猫头
鹰、沙发,甚至画刷的一部分。通过使用多样化的模型去绘制不同对象,设计师可以探索具有创新性的方式,向受众传达有意义的可视化信息。
对于生成性向量图像建模未来的各种可能性,我们感到非常兴奋。这些模型将在多个方向上,赋能许许多多有趣的创新应用。它们也可以被作为工具,协助我们加强对自身创新性思维流程的理解。
论文
A Neural Representation of Sketch Drawings
摘要:
We
present sketch-rnn, a recurrent neural network (RNN) able to construct
stroke-based drawings of common objects. The model is trained on
thousands of crude human-drawn images representing hundreds of classes.
We outline a framework for conditional and unconditional sketch
generation, and describe new robust training methods for generating
coherent sketch drawings in a vector format.
地址:https://arxiv.org/abs/1704.03477
各方评价
谷歌大脑的负责人Jeff Dean第一时间在Google+(是的,这个网站还活着)上发文这篇博客文章和团队的论文,还评价说,Sketch-RNN是对机器学习在未来能够提供何种创意工具的试水。
最让众网友感兴趣的大概有两点。
一是算术问题,猫头的图片+(整只猪的图片-猪头的图片)=?系统能知道是一只猫,让网友们很惊讶。
二是PASCUAL JUAN NUÑEZ提出的,这一研究的关键不是画画,而是概念化,可以应用到二维图像、一维的压力波动、三维建模等各种领域。
至于那些fun、nice、awesome、interesting,我们就不提啦。
还没玩过“Quick, Draw!”,以及前两天推出的Auto Draw的胖友,可以去玩一下:
Quick, Draw!传送门:quickdraw.withgoogle.com
Auto Draw传送门:autodraw.com
△ 扫码强行关注『量子位』
追踪人工智能领域最劲内容