生成对抗网络(GANs)是一种用于生成建模的深度学习技术。
GANs是令人惊讶的逼真生成人脸背后的技术,以及诸如照片着色、人脸去老化、超分辨率等令人印象深刻的图像转换任务。
入门GANs可能非常具有挑战性。这是因为该领域非常年轻,始于2014年的第一篇论文,而且每月都有大量的论文和应用在此主题上发表。
在本文中,您将发现可以用来了解生成对抗网络的最佳资源。
阅读本文后,你将了解:
- 什么是生成对抗网络以及该技术的具体应用示例。
- 由该技术发明者提出的关于GANs的视频教程和讲座。
- 阅读清单,包括最常阅读的GANs论文和深度生成模型书籍。
开始您的项目,请参阅我的新书《Python生成对抗网络》,其中包括分步教程和所有示例的Python源代码文件。
让我们开始吧。
概述
本教程分为五个部分;它们是:
- 什么是GANs?
- GAN应用
- GAN视频演示
- GAN论文阅读清单
- GAN书籍
什么是生成对抗网络?
生成对抗网络,或称GAN,是一种用于生成建模的神经网络架构。
生成建模涉及使用一个模型来生成新的、看起来可能来自现有样本分布的样本,例如生成新的照片,这些照片在总体上与现有照片数据集相似,但在具体上有所不同。
GAN是一种使用两个神经网络模型进行训练的生成模型。一个模型称为“生成器”或“生成网络”模型,它学习生成新的合理样本。另一个模型称为“判别器”或“判别网络”,它学习区分生成的样本和真实的样本。
这两个模型被设置成一种竞赛或游戏(从博弈论的角度来看),其中生成器模型试图欺骗判别器模型,而判别器则同时接收真实样本和生成的样本。

生成对抗网络概述
训练后,生成模型就可以按需用于创建新的合理样本。
生成对抗网络的应用
GAN的大多数研究和应用都集中在计算机视觉领域。
原因是,在过去5到7年中,深度学习模型(如卷积神经网络(CNN))在计算机视觉领域取得了巨大成功,例如在目标检测和人脸识别等具有挑战性的任务上取得了最先进的结果。
GAN的典型例子是生成新的逼真照片,最令人惊讶的例子是生成逼真的人脸。

GAN生成的逼真人脸示例。摘自“生成对抗网络的风格化生成器架构”。
有许多“生成新样本”的问题,例如
- 生成新动漫角色。
- 生成新Logo。
- 生成新宝可梦。
- 生成新服装。
GAN可用于令人惊讶的照片和视频图像处理任务。广泛来说,这被称为图像转换,例如
- 将夏天的照片转换为冬天。
- 将草图转换为照片。
- 将白天的照片转换为夜晚。
一些更具体的图像转换示例包括
- 人脸照片的自动年龄增长或减龄。
- 黑白照片的自动着色。
- 照片的自动分辨率增强。
- 自动风格迁移(例如,将绘画风格应用于照片)。
- 自动图像修复(例如,填充图像中被遮挡的部分)。
GAN也可用于生成图像序列或视频,并用于预测视频帧序列和甚至用于训练强化学习模型而生成场景等任务。
除了图像处理,该技术还可以普遍用于数据增强,即在训练模型时可以生成全新的、合理的样本作为输入。
有关GAN有趣的应用程序的更多示例,请参阅
想从零开始开发GAN吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
生成对抗网络的视频演示
一个温和地介绍GAN、它们的工作原理和应用的好方法是观看视频演示。
Ian Goodfellow,被认为是该技术的发明者,他给出了许多在YouTube上免费提供的讲座和教程演示。Ian是一位出色的沟通者,为该技术提供了清晰的演示。
我建议观看Ian在2016年NIPS(现为NeurIPS)的教程。
该视频时长约两个小时,包括对GAN、理论和应用的详细回顾,并在最后有与观众的问答。
我强烈建议阅读配套的幻灯片和教程的纸质版
- NIPS 2016教程:生成对抗网络,幻灯片,2016年。
- NIPS 2016教程:生成对抗网络,论文,2016年。
如果您对更集中的演示(约28分钟)感兴趣,且理论较少,我推荐Ian在2016年为“AI With the Best”在线会议的演示。
- 生成对抗网络,Ian Goodfellow,AIWTB, 2016.
最近,Ian在2019年向AAAI做了一个关于对抗性机器学习的更广泛主题的演示,其中也涵盖了GANs,这个演示也强烈推荐。
- 对抗性机器学习,Ian Goodfellow,AAAI, 2019.
如果您正在寻找更学术的GAN演示,那么我推荐斯坦福卷积神经网络课程中关于生成模型的讲座。
这个讲座为GANs提供了有用的背景,并涵盖了相关的技术,如变分自编码器和PixelRNN。
- 生成模型,用于视觉识别的卷积神经网络, 2017.
生成对抗网络的论文阅读清单
GAN是一个非常新的研究领域。
我试图将此阅读清单与更广泛的GAN应用论文列表分开,重点关注GAN模型理论和训练的发展。
关于GAN作为生成模型的第一篇论文由Ian Goodfellow等人于2014年发表,题为“生成对抗网络”。
该论文介绍了通用技术,并通过一些简单的例子来生成MNIST(手写数字)、CIFAR-10(小照片)和人脸的图像。
- 生成对抗网络, 2014.
Alec Radford等人于2015年的论文“使用深度卷积生成对抗网络进行无监督表示学习”使用现代配置和卷积神经网络训练实践,提供了GAN的更新版本,称为深度卷积生成对抗网络,或DCGANs。
这是一篇重要的论文,因为它展示了如何通过生成逼真的房间和人脸等示例来释放该技术的潜力。
- 使用深度卷积生成对抗网络的无监督表征学习, 2015.
在DCGAN论文之后,涌现了大量关于训练GAN模型固有不稳定性问题的改进论文。其中最重要的论文可能包括
- 训练 GAN 的改进技术, 2016.
- 基于能量的生成对抗网络, 2016.
- InfoGAN:通过信息最大化生成对抗网络进行可解释表示学习, 2016.
一些最近关于训练和评估GAN挑战的高质量论文包括
- Wasserstein GAN, 2017.
- GANs是创建的平等吗?一项大规模研究, 2017.
- GAN景观:损失、架构、正则化和归一化, 2018.
除了这些论文,您可以在GANs维基百科页面上看到相关生成模型历史的概览。
有一些GAN的调查论文可以帮助您了解该领域的范围。精选几篇包括
- 生成对抗网络:概述, 2017.
- 生成对抗网络:简介和展望, 2017
许多人尝试整理GAN的阅读清单,但鉴于该领域的新颖性和新论文的快速发布,这非常具有挑战性。其他一些论文阅读清单包括
生成对抗网络书籍
现代深度学习书籍中包含了一些关于GAN的介绍。
也许最重要的起点是Goodfellow等人编写的《深度学习》教科书。第20章题为“深度生成模型”,并提供了20.10.4节中涵盖的各种技术的有用总结,包括GAN。
- 第20章。深度生成模型,《深度学习》, 2016.
Keras深度学习框架的作者Francois Chollet在他的2017年著作《Python深度学习》中,提供了一个关于深度生成模型的章节。特别是,第8.5节题为“生成对抗网络入门”,涵盖了GAN以及如何在Keras中训练DCGAN。
- 第8章。生成深度学习,《深度学习与Python》, 2017.
在撰写本文时,还有两本关于深度学习生成建模的有趣书籍正在编写中,预计将于今年晚些时候发布。它们是
很高兴看到这些书将涵盖的内容。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 第20章。深度生成模型,深度学习,2016年。
- 第8章。生成深度学习,Python深度学习,2017年。
- 生成深度学习, 2019
- GANs实战, 2019.
论文
- NIPS 2016 教程:生成对抗网络, 2016.
- 生成对抗网络, 2014.
- 使用深度卷积生成对抗网络的无监督表征学习, 2015.
- Wasserstein GAN, 2017.
- GANs是创建的平等吗?一项大规模研究, 2017.
- GAN景观:损失、架构、正则化和归一化, 2018.
- 生成对抗网络:概述, 2017.
- 生成对抗网络:简介和展望, 2017
视频
- 生成对抗网络,Ian Goodfellow,NIPS, 2016.
- 生成对抗网络,Ian Goodfellow,AIWTB, 2016.
- 对抗性机器学习,Ian Goodfellow,AAAI, 2019.
- 生成模型,用于视觉识别的卷积神经网络, 2017.
文章
总结
在本文中,您了解了可以用来学习生成对抗网络的最佳资源。
具体来说,你学到了:
- 什么是生成对抗网络以及该技术的具体应用示例。
- 由该技术发明者提出的关于GANs的视频教程和讲座。
- 阅读清单,包括最常阅读的GANs论文和深度生成模型书籍。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
嗨,Jason Brownlee,
你能添加关于生成对抗网络的新主题吗?谢谢
是的,我计划了很多关于这个主题的教程。
期待阅读您的新作品
谢谢,我真的很期待它!
您什么时候发布?
希望很快。几周内。
这就是我总是向初学者推荐您的书的原因!
谢谢!
我只想说这是完美的工作
谢谢!
这个频道是金矿
谢谢!
有可供学习的Python示例代码吗?
是的,就在这里。
https://machinelearning.org.cn/start-here/#gans
感谢您发布这些精彩的信息。
您是否推荐一门只专注于生成对抗网络的课程?
谢谢你,
不客气。
是的,我写了一本关于这个主题的书,可以在这里找到
https://machinelearning.org.cn/generative_adversarial_networks/
我会看看您的书,很可能会购买。但有一个请求?
当我遇到问题时,您能否回答一些关于您书中的材料的问题?
是的,读者可以随时联系我,我会尽力提供帮助
https://machinelearning.org.cn/faq/single-faq/will-you-help-me-if-i-have-questions-about-the-book
我想用谷歌图片测试我的ML模型,但图片有限。我正在进行图像分类,我希望我的模型能够正确预测输入图像的名称。请问我如何使用GAN来创建谷歌图片的伪造图片,以便用它们重新训练我的模型?
GAN不适合图像分类。
也许您可以使用预训练模型直接开始进行预测
https://machinelearning.org.cn/use-pre-trained-vgg-model-classify-objects-photographs/