Deep learning for arts

   主持人刘劲扬:下面首先请王乃岩老师给我们做关于“深度学习的艺术应用”,这两天我们看了,好像画画的那例子。  

    王乃岩:大家好!我叫王乃岩,来自图森科技,非常荣幸能在这里和大家交流一下“深度学习在艺术领域的一些应用”。因为艺术领域一直被认为是人类专属的一个领域,机器之前完全没有涉足过这个领域,但是我在这个里面会大概讲一些我们可以通过深度学习,学习到很神奇的结果。    我分三部分来讲这个事情:    第一部分,模仿。给一幅画或者一个图片,你模仿这个风格。    第二部分,抽象。我们可以把深度学习的内容抽象,然后在一个画中显示出来。    第三部分,创作。完全什么都不给,从零开始生成一幅图片。

    在开始之前我想先简要介绍一下深度学习这个东西,因为大家一直都在提这个东西,好像也没有人来简单的做一个介绍,我花5分钟的时间给大家简要介绍一下,包括AlphaGo我们这些图像识别的应用里面我们在用的一个大概是什么样的技术。    第一个,最常用的一个模型叫做卷积神经网络,简写就是CNN。有两个核心操作,一个是卷积操作,来检测这个图像上的一些特征,这些特征其实都是很简单的东西,比如这里有一个标志,可能第一层我们学习到的特征,我们会检测到比如说这个牌子的边缘、数字的圆弧这里,其实就是一个检测边缘的边缘检测器。还有一个操作叫做下载或者池化,意思就是说把一定区域内的特征融合起来,做了一个综合,就不断的累加这两种操作,像在这里是一层池化,再加一层卷积,这是深度学习模型。

    第一层的检测特征是怎么实现的?大家看到这是在一个很经典的模型里面,我们可以学到的一些第一层的滤波器,明显有一些黑白相间的条文,这些是用来检测图像边缘还有一些图像特征,我们可以检测这个图片哪里有边缘。

    下面一个例子,我从左上到右下的边缘滤波器,具体做法,把这个滤波器在图像的每个位置上都算一下和它的相关性,相关性大的就代表这个地方是有这样一个从左上到右下的边缘。我们会得到这样一张特征图,在这里大家可以看到很亮的地方代表这种特征是很显著的,在那些没有边缘、没有伦理的地方大家可以看到天空就是一片灰色。同理我们可以对每一个这样的滤波器都得到这样一张特征图,然后我们把这些加在一起就完成了最重要的卷积这个。

    下面有一个问题是,我们为什么需要这个卷积的操作?其实大家看到,在很多应用,比如说在自然语言处理,在语音,还有围棋中都会用到卷积神经网络模型,为什么呢?其实我们最关心的一点就是说,这些应用里面都有一个局部相似性的概念,就是说一个图片如果整体看可能是一张人脸、是一个行为、是一个猫、是一个狗,但是你如果看他一个局部很小的区域,比如10×10的小区域,你会发现你并不能一下得到语义的信息,反而得到很相似的一些图像块。同样在这个句子中,常用的关键词组可能在句子的每个位置,语音是这样,围棋也是这样,比如在一个小的区域5×5的区域内会有一个长度的定式,是在整个围棋19×19的范围内都会有重复出现的概念。所以我们通过卷积这个操作,首先可以把计算的复杂度降低,我们每次只关注其中的一小部分,比如我们只关注其中的5×5的区域,另外由于5×5的区域是在各个位置都可能出现的,所以我们可以把5×5区域的滤波器在整个图片上共享,这就是最常有的卷积神经网络最核心的概念,以及为什么能够在这么多应用中都使用的原因。

   大家可以忽略数学形式化的表述,我用通俗化的语言给大家讲解就可以。我们中间看到的就是由5层组成的神经网络,我有两张图片,科学家发现,在整个神经网络中,有一些特征和内容,这个图片的形式叫Style,大家看下面这个图,在神经网络的不同层,第一层、第二层、第三层、第四层,用它的输出重构输入的图片,在前三层都可以很完美的重构。很神奇的事情是说,如果我们设计另外一种特征我们去看,我们输入一张海报的画,我们用第一层的特征重构Style这个,大家看到很细的白色、蓝色和黑色点,随着我们神经网络的高度抽象化,那么高层的特征再返回去重构样式,它的内容虽然和原图差很远,如果第一眼感受上来看,画风是和输入的图像是很像的。下面这个,其实是内容和原始输入图片很像。

    我们可不可以把这两个优势结合在一起呢?其实就是这个工作做的一个任务吧,大家可以看到每一行是不同特征的重构,每一列是在你重构你的样式和重构你的内容之间做的平衡。大家可以看到在右下角的图形中我们重合点,我们看到是房子的图片,同时学到绘画中德阳市,有更多的例子,输入的还是这个图片,但是我们给不同的绘画,然后我们可以看到我们可以生成出、模拟出不一样样式的绘画图片来,其实是很有意思的一个工作。

    下面还有更加神奇的结果,这个是基于前面的一个改进,比如我输入的图片是老式的两箱的背部弧线的车,我现在输入两个现代的车,一个SUV、一个跑车,生成的结果是很有意思的,会保留这个车型的SUV和跑车的信息,但是在后背箱的形式已经变成了输入图片的形式。

    还有一个楼房的例子,我输入比如这个楼房里面的窗户都是很标准的窗户,但是这有一个很花式的图像,我们通过这种技术同样可以把这种花式的窗户迁移到原始的楼房的图像里面去,这个是最终的结果,大家可以看,基本上如果不仔细看的话很难发现其中的一些破绽。    最近这个工作也被拓展到了视频上,由于视频的特性,不考虑时序上的连续性的话,给人的观感会非常奇怪。最近有一个工作通过光流约束了生成的每一帧视频的时序连续性,效果相当稳定,大家可以看下视频。

    在这个部分还有一个很有趣的工作,我们现在前面都是全自动合成,对于艺术家来说,他们都希望有一些能手动的对于内容构图的控制。这里有一个NeuralDoodle,可以给大家看一下他的一个宣传的视频。

    第二部分叫抽象,有一个问题就是说,大家都觉得人工智能是一个黑盒子或者深度学习是一个黑盒子,实际上这个事情也有很多科学家注意到了,而且想用一些可视化的办法探究一下究竟学习到的是什么东西。在这个例子里面,这个神经网络训练去识别一千类的物体,我们想看一下每一层什么内容,我在这里画了一些结果出来。比如第一层,刚才提到的边缘和颜色的检测器,每个下面3×3的小格子对应的是让这个神经元激活的形式。我们把第一层的特征再组合,就会出现很有意思的模式,比如发现有一个神经元专门对这种像毛发的东西会有很强的激活,有一些是对于这种圆形的轮廓有一些激活。再往上走,大家就会发现,在第三层的时候就已经出现那些物体的部分,比如说这个基本上都是对于汽车的轮子,有一个是对于人会有很强的激活的形式。

   我们再把这些物体的部分和局部的模式进行组合,在最早层第四层和第五层我们可以看到,就有很丰富的语义信息,这里面有一些只对于花才会激活的神经元,还有对于这个狗的脸激活的一些神经元。其实神经网络采用的是自下而上抽象的方式来学习到语义的信息,并不是完全的黑盒子。其实在每一层的每个神经元,我都能找出让他最大激发的一个模式,而如果我们能够把这些模式可视化出来的话,就会发现很有意思,他其实很像神经学家探究的人的视觉系统的一些工作模式,人的视觉系统从最开始的层到最高层可能有某些特定物体激活的细胞这样的流程,也是分层次的架构。

    下面一个问题,我们提到不同层可能对应不同层次的抽象,比如第一层,我们对应的是边和这种连接,中层是部分,高层是这种语音信息。我们可不可以把这个东西在图片中显示出来呢,就是Dream工作做的事情,他做的事情就是说,给另一个图像,我改这个图像,让它极大化某一个神经元的激活,在这里随便找一个天空的图像,我让它最大化激活这个第一层的神经元,大家可以看到就是这样的纹理信息就生成在纹理图片上。在高层,大家可以看到有很多塔状的,其实有高层的画在图片上,很像白云苍狗。

    当然也可以直接最大化某一个标签,就是某一类的概率,比如说我现在有一个树,如果我想让它变成一个建筑的话,能看到把这个树冠变成房子形状。叶子我想让它变成一个鸟,其实这也是可以通过这个方法做到的,这个其实蛮有意思的,下面这个鸟的身子、叶子,鸟头是它自己生成的,同理一个山的图片又可以变成一个塔的形式,当然这是最初级的办法。但是如果你把这些方法进行组合,然后重复使用的话,还有一些图像处理的小技巧加入进来,就会出现这种很梦幻的像《盗梦空间》里的场景,1千类的数据里面很多都是狗和鸟,还有各种建筑,这个像梦境一样,所以叫Deep Dream。

    这是我很喜欢的生成的一个画,好像有一个摇滚乐队,他拿的乐器还是一个狗头,当是在这边有很多车的建筑,画面也还是像一个现代抽象画。

    上个月,就是2月底的时候,谷歌在美国对生成这些抽象画办了一个画展,这些画还卖到了差不多10万美金,去资助一下这些年轻的艺术家们,让他们进行创作。

    最后一部分,我们从零开始生成一个图片。其实这两部分有一个是真实图片,一个是通过计算机算法生成的,不知道大家能不能分辨出来,哪一部分是真实的,哪一部分是生成的图片。左边这个图片是生成的,右边这个是真实的一些图片。是因为左边这个图片有一些不真实的边缘还没有处理特别好。

    它这个是怎么做的呢?其实它做的一件事情就和我刚才给大家做的这个游戏很像,在这里有两个卷积神经网络,这两个神经网络进行博弈,一个叫做生成网络,一个是判别网络,生成网络做的一件事情就是说,我生成一个图片,判别网络做的事情,我给你一张真实图片,还有一张生成图片,判别哪个是真实的、哪个是生成的。我们想做一件事情,如果你生成的图片非常真实,我目标就是说,我尽量让迷惑这个判别网络,让他分辨不出哪个是真实的、哪个是生成的,这样就达到了我们生成真实图片的目的。

    下面这个例子,我首先给一个随机数值的向量,我先用这个生成网络生成一个图片,这边是真实的图片,我最后给判别网络文他哪个是真实的、哪个是假的。

    这里有一些非常酷的结果,这些是在室内图片数据集上进行了训练,所有这些图片都是在大概300张图片上训练之后生成的,大家第一眼看上去没有太大的违和感,比如卧室的床、窗户、桌上的装饰,都摆在了很和谐的位置,但是你仔细看细节会有一些奇怪的地方,有一些东西不知道是什么东西,比如说像这个图边缘的地方,但是大体上能学到这个卧室里面应该有什么东西。但神奇的一点是,我并没有告诉他一个卧室可能要有一个窗户、要有一个床,床上要有被子、要有枕头,我没有告诉他那些东西,我是给他多少张室内图片,他自己去生成,其实某种意义上来说,他也是可以创作一些东西的。

    还有一个,在不同场景之间的一个变化,可以看到,比如这是一个客厅,这是另外一个场景,我们可以在这两个场景之间进行一个差值,这是一个很有意思的结果。

    还有一些很有意思的,拿一个微笑女人的照片、减去一个中性女人的照片、加上一个中性男人的照片,生成一个微笑男人的照片,其实也可以把这种语义的信息通过生成的方式展现出来。

    最后我想跟大家一些讨论,我个人的一些看法。    第一,什么是创造力?我个人觉得,创造力就是说,把平常的东西组合起来,生成一些不平常的但是又合理的东西。算法擅长什么呢?算法擅长于去识别这些常见的模式,比如前面提到的这些边缘、物体的部分,但是你如果想把这些常见的模式组合成一些有意义但是又不常见的组合,其实这件事情我觉得并不是计算机所擅长的,人其实是应该负责这项工作的,算法只是为了减少人在这面重复的一些劳动。    第二,小数据还是大数据这个问题。有一个很常见的观点就是说,比如说给一个人一两张猫的照片,人就可以学到这个概念,但是机器可能需要几千张、上万张才能学好,所以一个观点机器并不能算智能体。我的观点恰恰相反,人是大数据的学习体,因为人每天都在学习,人从睁眼第一秒开始,都接收外界传输的一些信号,正因为如此人才有强大的,我们叫泛化的能力,人从一个知识迁移到另外一个任务的能力,神经网络训练的时候有两个很重要的概念,一个叫做初始化,就是说你怎么把那些连接初始化,我想把这个东西对应成,比如说在人的遗传,在训练神经网络的时候一个很常见的,如果初始化好你最后的结果可能好一些,其实很像人遗传的一些因素,比如像智商这样的因素。还有一个概念叫迁移学习,人虽然只看一两张猫的图片就能知道什么是猫,他可能之前看了10万张什么是狗、什么是兔子,很相关的这样的概念他已经习得了,所以他才能把这个猫的图片通过小样本习得。比如猫是有四条腿、猫是一个在地上跑的四肢的动物。所以在机器和人工智能中其实有人去研究怎样把已经习得的一些概念迁移到新的任务。    最后一点,算法是不是真的理解这个艺术?这个问题其实就像在问潜水艇会不会游泳一样没有意义,我觉得这个取决于你怎样定义这个理解,如果说你只想生成一个很像艺术家画的画,确实是可以达到。但是你说我想生成一个气氛是欢快的、气氛是忧伤的,可能这个暂时还没法做到。但是如果随着我们,我前面提到,可以从别的任务中迁移来一些知识的话,这个事情不是遥不可及的。

    最后一点,机器学习和深度学习,其实已经成为艺术家的工具,纽约大学在2016年春天的时候他们已经开了一门课,他们也意识到这可能是一笔很大的财富。

    我就讲这么多,谢谢大家。

原文链接:https://mp.weixin.qq.com/s/f4AbWVCxYfuIQNkYRY-2lQ


入门入门课程文体娱乐艺术