两年前,蒙特利尔大学 Ian Goodfellow 等学者提出“生成对抗网络”(Generative Adversarial Networks,GANs)的概念,并逐渐引起 AI 业内人士的注意。其实,直到 2015 年,生成对抗网络还称不上是炙手可热。但自今年(2016)以来,学界、业界对 GANs 的兴趣出现“井喷”:
现在,雷锋网获得消息,就连苹果也跳上了 GANs 的彩车:苹果有史以来第一篇公开发表的 AI 论文,讲的是如何更好地利用 GANs,来训练 AI 图像识别能力。这是继苹果本月初在 NIPS 大会上宣布“将对外公布 AI 研究成果”之后,为兑现诺言做出的行动。
那么,GANs 是如何从一个原本“不温不火”的技术,成为今天人工智能的主要课题之一?
雷锋网对此进行了梳理,归纳了 GANs 从诞生到现在如何一步步走向技术成熟。以下是它发展路线中的大事件(主要研究进展):
Ian Goodfellow
2014 年 6 月,Ian Goodfellow 等学者发表了论文《Generative Adversarial Nets》,题目即“生成对抗网络”,这标志着 GANs 的诞生。文中,Ian Goodfellow 等作者详细介绍了 GANs 的原理,它的优点,以及在图像生成方面的应用。
那么,什么是 GANs?用 Ian Goodfellow 自己的话来说:
“生成对抗网络是一种生成模型(Generative Model),其背后基本思想是从训练库里获取很多训练样本,从而学习这些训练案例生成的概率分布。 而实现的方法,是让两个网络相互竞争,‘玩一个游戏’。其中一个叫做生成器网络( Generator Network),它不断捕捉训练库里真实图片的概率分布,将输入的随机噪声(Random Noise)转变成新的样本(也就是假数据)。另一个叫做判别器网络(Discriminator Network),它可以同时观察真实和假造的数据,判断这个数据到底是不是真的。”
对不熟悉 GANs 的读者,这番解释或许有些晦涩。因此,雷锋网特地找来 AI 博主 Adit Deshpande 的解释,更加清楚直白:
“GANs 的基本原理是它有两个模型:一个生成器,一个判别器。判别器的任务是判断给定图像是否看起来‘自然’,换句话说,是否像是人为(机器)生成的。而生成器的任务是,顾名思义,生成看起来‘自然’的图像,要求与原始数据分布尽可能一致。 GANs 的运作方式可被看作是两名玩家之间的零和游戏。原论文的类比是,生成器就像一支造假币的团伙,试图用假币蒙混过关。而判别器就像是警察,目标是检查出假币。生成器想要骗过判别器,判别器想要不上当。当两组模型不断训练,生成器不断生成新的结果进行尝试,它们的能力互相提高,直到生成器生成的人造样本看起来与原始样本没有区别。”
早期的 GANs 模型有许多问题。Yan Lecun 指出,其中一项主要缺陷是:GANs 不稳定,有时候它永远不会开始学习,或者生成我们认为合格的输出。这需要之后的研究一步步解决。
GANs 最重要的应用之一,是生成看起来‘自然’的图像,这要求对生成器的充分训练。以下是 Ian Goodfellow 等人的 2014 年论文中,生成器输出的样本:
可以看出,生成器在生成数字和人脸图像方面做得不错。但是,使用 CIFAR-10 数据库生成的风景、动物图片十分模糊。这是 GANs 早期的主要局限之一。
2015 年 6 月 Emily Denton 等人发表的研究《Deep Generative Image Models using Lapalacian Pyramid of Adversarial Networks》(“深度图像生成模型:在对抗网络应用拉普拉斯金字塔”)改变了这一点。研究人员提出,用一系列的卷积神经网络(CNN)连续生成清晰度不断提高的图像,能最终得到高分辨率图像。该模型被称为 LAPGANs 。
其中的拉普拉斯金字塔,是指同一幅图像在不同分辨率下的一系列过滤图片。与此前 GAN 架构的区别是:传统的 GAN 只有一个 生成器 CNN,负责生成整幅图像;而在拉普拉斯金字塔结构中,金字塔的每一层(某特定分辨率),都有一个关联的 CNN。每一个 CNN 都会生成比上一层 CNN 更加清晰的图像输出,然后把该输出作为下一层的输入。这样连续对图片进行升采样,每一步图像的清晰度都有提升。
拉普拉斯金字塔结构图像生成示意
这产生了一个新概念:有条件生成对抗网络(conditional GAN,CGAN),指的是它有多个输入:低分辨率图片和噪音矢量。该研究生成的高质量图片,在 40% 的情况下被真人裁判当做真实图像。
对该研究的意义,李嫣然评论道:它将 GAN 的学习过程变成了“序列式” 的——不要让 GAN 一次学完全部的数据,而是让 GAN 一步步完成这个学习过程。
把文字转化为图像,比起把图像转为文字(让 AI 用文字概括、描述图像)要难得多。一方面是近乎无限的像素排列方式;另一方面,目前没人知道如何把它分解,比如像(图像转为文字任务中)预测下一个词那样。
2016 年 6 月,论文《Generative Adversarial Text to Image Synthesis》(“GANs 文字到图像的合成”)问世。它介绍了如何通过 GANs 进行从文字到图像的转化。比方说,若神经网络的输入是“粉色花瓣的花”,输出就会是一个包含了这些要素的图像。该任务包含两个部分:1. 利用自然语言处理来理解输入中的描述。2. 生成网络输出一个准确、自然的图像,对文字进行表达。
为实现这些目标,生成器和判别器都使用了文字编码技术:通过循环文字编码器(recurrent text encoder)生成的文字属性,来作为条件对 GAN 进行训练(详情参考论文)。这使得 GAN 能够在输入的文字描述和输出图像之间建立相关性联系。
原理示意
该任务中,GAN 其实完成了两件任务:1.生成自然、说得过去的图像;2.图像必须与文字描述有相关性。
利用 GAN, GAN-CLS, GAN-INT,GAN-INT-CLS 生成的结果示意。GT 是真实图像,从左到右三组图像的任务分别是:1.全黑色的鸟,粗圆的鸟嘴;2.黄胸、棕冠、黑眉的小鸟;3. 蓝冠、蓝羽、黑颊的超小鸟,嘴小、踝骨小、爪小。
这是推特 Cortex 研究团队进行的一项研究,在今年 9 月发表。它的主要贡献是开发出全新的损失函数(loss function),使得 GANs 能对大幅降采样后的图像,恢复它的生动纹理和小颗粒细节。
对于不熟悉超分辨率的雷锋网读者,它是一个能把低分辨率图像重建为高清图像的技术。在机器学习中,实现超分辨率需要用成对样本对系统进行训练:一个是原始高清图像,一个是降采样后的低分辨率图像。本研究中,低分图像被作为输入喂给生成器,它重建出高分辨率图像。然后,重建图片和原始图片被一起交给判别器,来判断哪一幅是原始图像。
该研究中的损失函数可分为两个部分:对抗损失(adversarial loss )和内容损失(content loss)。在较高层面上,对抗损失使图像看起来更自然;内容损失则保证重建图像与低分辨率原始图像有相似的特点。其中,对抗损失和传统的 GANs 应用类似,创新的是内容损失。该研究中的内容损失,可被看作为重建的高分辨率图像和原始高分图像之间特征图(feature map)的欧式距离(Euclidean distance)损失。而 GAN 的损失函数是对抗损失和内容损失的加权和。
左栏是原始图像,右三栏是GANs重建的高分图像
以上是 GANs 2014-2016 发展期间的主要里程碑。但读者们注意,2016 年以来,GANs 的研究应用层出不穷。以上只是最具代表性的几个,不代表其他 GANs 研究就没有价值。
值得一说的是,今年 6 月一篇关于深度卷积 GANs (Deep Convolutional Generative Adversarial Networks, DCGAN)的论文在业内引发强烈反响:《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》(“使用深度卷积 GANs 进行无监督表征学习”)。研究人员们发现,用大规模数据库训练出的 GANs 能学习一整套层级的特征 (a hierarchy of features),并具有比其他无监督学习模型更好的效果。而此前使用 CNN 训练 GANs 的尝试大多以失败告终。当研究人员修改架构创造出 DCGAN,他们能够看到神经网络在每一层级学习到的过滤器 。Yan Lecun 评论道,这打开了 GANs 的“黑箱”。
最后,我们来看看在大神 Yan Lecun 眼里,GANs 为什么这么重要:
“它为创建无监督学习模型提供了强有力的算法框架,有望帮助我们为 AI 加入常识(common sense)。我们认为,沿着这条路走下去,有不小的成功机会能开发出更智慧的 AI 。”