谷歌AI是怎么猜透我这个灵魂画手的?
偶买噶!谷歌发布了一款基于人工智能的微信小程序“猜画小歌”,瞬间刷爆朋友圈!
用户需要在20秒内内勾勒出一幅图画,AI则需要猜出图画中的物体,比如:
小歌让我画一张笑脸:
画的底部就会提示”猜出来了!这是笑脸”。当然这是最简单的了,题目会渐渐变难,我也越画越没把握,但让我很惊讶的是,小歌居然还猜得出来,而且还没等我画完就猜出来了!
比如,它让我画壁炉:
这么灵魂也能猜出来我也是服气的!但是看了我朋友圈里的“美人鱼”、“袋鼠”、“瑜伽”等等牛鬼蛇神的画都能被猜出来,我就很迷了:
乐趣归乐趣,大家一定非常非常好奇:
为什么我画到一半,小歌就猜出来了?
我画得这么不像,小歌是怎么猜出来的?
让我一一道来。。
其实“猜画小歌”的前身,是谷歌实验室从2016年就开始的一个计划——Quick,Draw!
Quick,Draw!是一款AI游戏。游戏和今天刷屏的“猜画小歌”是一样的,就是让你限时作画,然后AI来猜你画的是什么。
这款游戏的原理,简单来说,不仅关注你画了什么,还关注你是怎么画的。你画的形状、你笔触的顺序、你笔画的方向等,所有这些都成为AI判断你画的是什么的因素。AI可以从数据库中比对其他人的画法,识别出不同概念和事物的特征属性,然后判断你画的到底是什么。
这里就不得不讲到一个高级的模型了——“Recurrent Neural Network”递归神经网络模型。谷歌实验室的大牛们训练这个模型来模拟人类画图的方式。他们首先有一个手画素描的数据库,数据库里的每一个素描都是一个“笔在动态作画的过程”:走笔方向、何时起笔、何时停笔。模型的训练最早就是使用这些手画素描的数据。在经历了无数次训练后,模型就知道了,猫一般有两只眼睛,两个耳朵,和胡须。
经过训练的模型在接受一个新的输入比如你画的画)时,它会解构这个输入,重构一个输出。如果你的图是有瑕疵的(比如,你画的猫没有眼睛),那这个重构的输出就会修正你的瑕疵,还原一个有眼睛的猫(说明模型已经学会识别一个事物最关键的特征了)。
此外,模型还能够将“关键特征”套在“非关键特征”上,比如在猫的头上加一个身体。模型可以把一个“全身猪”的“猪头”向量去除,把剩余的“猪身体”向量加到“猫头”向量上,形成一个“全身猫”的新结果。这样,不管你画的猫是有身体的还是没身体的,模型都知道它是猫。
从2016年11月开始,这款游戏一共收集到了10亿张手画图,这些图都被陆续收录进了谷歌数据库——它因此也成为了世界最大的手画doodling数据库。而这些数据也都被用来训练这个猜画模型了,所以现在的游戏在猜画上也变得越来越强大,强大到,你没画完,就知道你在画什么。
数据多了之后,我们就可以发现更多有趣的现象了!尽管每个人的画都是独一无二的,但人类的画真的有很多共性。
比如说画脸。有人会画眉毛:
有人会画耳朵:
有人会画头发:
但是如果你把所有的画都放在一起看,你会发现一件很有趣的事:大多数人都会画“微笑的脸”:
是不是突然感觉很暖!
当把同一个国家人的画都叠在一起,也能看到这个国家特别的地方:
比如“甜筒”——韩国的甜筒是长的,澳大利亚的甜筒是圆的,而意大利人的甜筒有三个球!
当然,再聪明的AI也有猜不到的一天,因为你的脑回路,可能连自己都不知道自己在画什么!
比如我们团队的小胖画的浣熊(btw楼上那个“瑜伽”也是出自她手。。):
References:Google AI Blog