目录
生成对抗网络(Generative Adversarial Networks,GAN)
一、什么是GAN
二、GAN的模型结构
三、实战案例
3.1 使用GAN生成人脸照片
四、深入理解GAN模型
4.1 GAN是一种非监督学习框架
4.2 GAN是一种生成模型
五、GAN的应用场景
5.1 生成图像数据集
5.2 图像到图像的转换
5.3 照片编辑
5.4 提高照片分辨率,让照片更清晰
5.5 照片修复
生成对抗网络(Generative Adversarial Networks,GAN)
一、什么是GAN
GANs全称生成对抗网络。是由蒙特利尔大学Ian Goodfellow在2014年提出的机器学习架构。
顾名思义是生成模型的一种,而他的训练则是处于一种对抗博弈状态中的。下面举例来解释一下GAN的基本思想。
假设一个城市治安混乱,很快,这个城市里就会出现无数的小偷。在这些小偷中,有的可能是盗窃高手,有的可能毫无技术可言。假如这个城市开始整饬其治安,突然开展一场打击犯罪的「运动」,警察们开始恢复城市中的巡逻,很快,一批「学艺不精」的小偷就被捉住了。之所以捉住的是那些没有技术含量的小偷,是因为警察们的技术也不行了,在捉住一批低端小偷后,城市的治安水平变得怎样倒还不好说,但很明显,城市里小偷们的平均水平已经大大提高了。
警察们开始继续训练自己的破案技术,开始抓住那些越来越狡猾的小偷。随着这些职业惯犯们的落网,警察们也练就了特别的本事,他们能很快能从一群人中发现可疑人员,于是上前盘查,并最终逮捕嫌犯;小偷们的日子也不好过了,因为警察们的水平大大提高,如果还想以前那样表现得鬼鬼祟祟,那么很快就会被警察捉住。
为了避免被捕,小偷们努力表现得不那么「可疑」,而魔高一尺、道高一丈,警察也在不断提高自己的水平,争取将小偷和无辜的普通群众区分开。随着警察和小偷之间的这种「交流」与「切磋」,小偷们都变得非常谨慎,他们有着极高的偷窃技巧,表现得跟普通群众一模一样,而警察们都练就了「火眼金睛」,一旦发现可疑人员,就能马上发现并及时控制——最终,我们同时得到了最强的小偷和最强的警察。
现在大家对于GAN的思想应该有了感性的认识了,下面开始进一步窥探GAN的结构和思想。
二、GAN的模型结构
相比于传统的神经网络模型,GAN是一种全新的非监督式的架构(如下图所示)。GAN包括了两套独立的网络,两者之间作为互相对抗的目标,第一套网络是我们需要训练的分类器(下图中的D),用来分辨是否是真实数据还是虚假数据;第二套网络是生成器(下图中的G),生成类似于真实样本的随机样本,并将其作为假样本。
详细说明:
D作为一个图片分类器,对于一系列图片区分不同的动物。生成器G的目标是绘制出非常接近的伪造图片来欺骗D,做法是选取训练数据潜在空间中的元素进行组合,并加入随机噪音,例如在这里可以选取一个猫的图片,然后给猫加上第三只眼睛,以此作为假数据。
在训练过程中,D会接收真数据和G产生的假数据,它的任务是判断图片是属于真数据还是假数据。对于最后输出的结果,可以同时对两方的参数进行调优。如果D判断正确,那就需要调整G的参数从而使得生成的假数据更为逼真;如果D判断错误,则需调节D的参数,避免下次类似判断出错。训练会一直持续到两者进入到一个均衡和谐的状态。
训练后的产物是一个质量较高的自动生成器和一个判断能力较强的分类器。前者可以用于机器创作(自动画出“猫” “狗”),而后者则可以用来机器分类(自动判断“猫” “狗”)。
三、实战案例
3.1 使用GAN生成人脸照片
四、深入理解GAN模型
4.1 GAN是一种非监督学习框架
要全面理解生成对抗网络,首先要理解的概念是监督式学习和非监督式学习。监督式学习是指基于大量带有标签的训练集与测试集的机器学习过程,比如监督式图片分类器需要一系列图片和对应的标签(“猫”,“狗”…),而非监督式学习则不需要这么多额外的工作,它们可以自己从错误中进行学习,并降低未来出错的概率。监督式学习的缺点就是需要大量标签样本,这非常耗时耗力。非监督式学习虽然没有这个问题,但准确率往往更低。自然而然地希望能够通过提升非监督式学习的性能,从而减少对监督式学习的依赖。GAN可以说是对于非监督式学习的一种提升。
4.2 GAN是一种生成模型
如下图所示生成图片模型的概念示意图。这类模型能够通过输入的样本产生可能的输出。举个例子,一个生成模型可以通过视频的某一帧预测出下一帧的输出。另一个例子是搜索引擎,在你输入的同时,搜索引擎已经在推断你可能搜索的内容了。
五、GAN的应用场景
5.1 生成图像数据集
人工智能的训练是需要大量的数据集的,如果全部靠人工收集和标注,成本是很高的。GANs 可以自动的生成一些数据集,提供低成本的训练数据。
5.2 图像到图像的转换
简单说就是把一种形式的图像转换成另外一种形式的图像,就好像加滤镜一样神奇。例如:
- 把草稿转换成照片
- 把卫星照片转换为Google地图的图片
- 把照片转换成油画
- 把白天转换成黑夜
5.3 照片编辑
使用GANs可以生成特定的照片,例如更换头发颜色、更改面部表情、甚至是改变性别。
5.4 提高照片分辨率,让照片更清晰
给GANs 一张照片,他就能生成一张分辨率更高的照片,使得这个照片更加清晰。
5.5 照片修复
Deepak Pathak等人于2016年发表了题为《文本编码器:通过图片修复学习特征》的论文。论文特别介绍了如何使用GAN的文本编码器进行图片修复或填充空缺,即填补图片中某块缺失的部分。
Yijun Li等人于2017年发表了题为《人脸图像生成性填充》的论文。文中同样介绍了如何使用GAN对损坏的人脸图像进行修复和重建。