引子
首先来跟我做个实验,你能分辨下图哪个是真人,哪个是AI生成的假人吗?
谜底揭晓:两个都是。
如果你仔细看图片右下角会有一行小小的黑字:StyleGAN2(Kerras et al),StyleGAN2是算法名称,Kerras et al是作者,而这个图片来自于一个叫“这个人不存在”的网站:https://thispersondoesnotexist.com/
今天就和大家聊聊styleGAN2的祖先:GAN算法,聊过了你就知道为啥它会生成的这么逼真,而且GAN也是当前生图算法中的核心算法之一,另外一个是Diffusion,我们下一篇细讲。
- WHAT: 什么是GAN算法
GAN是Generative Adversarial Nets(生成式对抗网络)的简称,是深度学习在图像生成方面的开山之作。
1.1 一句话说原理
- GAN是造假币者与打假币者之间的零和博弈游戏。我们通过循环交替训练造假者与打假者的能力,直到造假者的作品不能再被打假者识别为止。
在网络上也有人用这样的方式来说明GAN的原理,也非常直接:“让一个普通人画一幅蒙娜丽莎,很难,但如果让你识别这是不是蒙娜丽莎,就变得简单了许多。”
我们把原理用如下架构图来表示。
1.2 GAN的架构
GAN 架构图
- GAN的训练过程
2.1 第一步:训练判别器,保持生成器不变。
以真实图片(真币)和随机生成的虚假图片(假币)训练判别器(打假者)。目标是将真实图片识别为真,虚假图片识别为假。
GAN中训练判别器
2.2 第二步:训练生成器,保持判别器不变。
生成器生成图片,输入判别器,以判别器输出作为反馈训练生成器的权重。目标是生成器生成的图片可以蒙混过关 。
GAN中训练生成器
2.3 第三步:上述步骤交替训练多次,直到生成器和判别器能力相当。
最初在学习GAN的时候有一个误区,以为是首先将判别器训练好,然后再训练生成器,导致自己很多地方想不清楚,后来才发现, 判别器和生成器的训练是交替进行的 。这样才能保证在这场造假者与打假者的零和博弈中,双方共同进步,否则任何一方如果以压倒性优势强于对方,则训练难以进行。因为:
- 当生成器特别厉害,而判别器很弱,在第二步训练生成器时,判别器的输出接近于真,就无法给出足够的误差来训练生成器。
- 反之,当判别器特别厉害,而生成器很弱,在第二步训练生成器时,由于给出的误差太大(降维打击),而让生成器无法准确感知能力差距在哪,从而也不能很有效的提升自己。
- HOW: GAN最初的效果如何
在2014年,GAN的实验效果大概是如下图所示,最右侧为生成图片,左侧为真实图片的样本。可以看出对于手写数字的生成还是很厉害的,但是其他的情况并不是很好。因此在GAN之后,有大量的变种和更新来改进GAN的算法。
摘自GAN论文
- WHO-谁发明了GAN
Ian Goodfellow: GAN发明者
虽然有些许争议,但是目前学术界普遍认为GAN的发明者是 Ian Goodfellow(1987年出生)。 Ian Goodfellow 本科在斯坦福师从吴恩达,博士是在加拿大蒙特利尔大学师从Yoshua Bengio(2018 图灵奖得主)。发表论文的时候Ian在谷歌大脑工作,但GAN 主要的工作是在他攻读博士期间完成的。
应该说,Ian在学生期间就是是彻底的站在AI 的连接主义这一边,他的导师都是深度学习的践行者。之后Ian先后在open AI, Deep mind,Apple等从事AI相关 公司工作。
在GAN论文发表前,遭到审稿人Jürgen Schmidhuber的质疑,认为GAN 和他在1992年提出的Predictivity minimization 高度重合,但是最终GAN 论文仍然发表,而Jürgen Schmidhuber 也被认为是“被图灵奖遗忘的人工智能专家”,有人认为他对人工智能的贡献不亚于深度学习教父Geoffrey Hinton。
- WHY: 为什么GAN如此重要
5.1 在GAN之前
在GAN论文发表前,图像生成工作的主流是推理模型。还是拿造假币来说明,之前的造假币者都是通过研究造假币的过程来制造,过程一样了,则造假就会越逼真,但可以想象,造假过程的研究是一个非常复杂的过程。而GAN则不去研究造假过程,只追求结果一致就可以,这样大大降低了计算量。
5.2 在GAN之后(2014年6月之后)
在GAN论文发表之后,带来了一系列的GAN变种,也足以证明GAN的影响力。以下举一些GAN的衍生品(按论文发表时间排序)
1) Face Inpainting(2016/07/26)
可用于图像恢复。比如下图人脸破坏后,可以恢复成最右侧图的模样。
论文链接 : https%3A//arxiv.org/pdf/1607.07539.pdf
2) SR GAN(Super resolution GAN) (2016/09/15)
可应用于将一幅低分辨率图片恢复为高分辨率图片, 论文链接 。
论文链接:https%3A//arxiv.org/pdf/1609.04802.pdf
3)用条件GAN进行图生图(2016/11/21)
Conditional Adversarial Networks是限定条件生成图像,效果大概是像这样。
放在具体的应用中,可能是用户输入线条框线图,输出就可以是一个上色了的图片。
论文链接:https%3A//arxiv.org/pdf/1611.07004.pdf
- CycleGAN(2017/03/30)
CycleGAN 会学习如何将一组图像转换为可能属于另一组的图像。比如下图中的图画迁移。比如把草原中的“斑马”变成“马”。
- Progressive GANs( 2018年11月 )
生成器的第一层会生成分辨率极低的图像,后续图层则会添加细节。相较于类似的非渐进式 GAN,此方法允许 GAN 训练得更快,并且可以生成更高分辨率的图像,实验结果如下图, 论文链接 。
论文链接:https%3A//arxiv.org/pdf/1710.10196.pdf
- StyleGAN(2018/12/12)
通过两组图片来合成新的图片,如下动图中,第二排右侧的四张图片是由第一排图片和二排左一图片合成。 论文链接 。
论文链接:https%3A//arxiv.org/pdf/1812.04948.pdf
- GAN的优劣势
6.1 优势
- GAN准确的来说,是无监督学习,因为他对样本没有进行标注,但是它用了一个有监督学习的损失函数来进行无监督学习(即图片是来源于生成器还是真实样本,这本身也是一种标注),所以在训练上比纯粹的无监督学习更加高效,也因此,开创了一种全新的训练方式。
- 生成图片逼真,因为原理上GAN追求的就是以假乱真的目标。
6.1 劣势
- 训练中如何均衡生成器和判别器的能力是比较困难的。
- 生成图片多样性较差,不适用于创新型的图片,这也是因为其原理上追求的就是以假乱真的目标。
- GAN的对手
- GAN是2014年诞生的,不过在2020年,GAN遇到了另外一个对手Diffusion, 可以说是目前GAN和Diffusion是图像生成算法领域的老二,老大。从原理上来说,Diffusion算法更具创新,GAN算法更具可控性。二者结合适用不同场景,至于啥是Diffusion算法,我们下一篇细细讲。
我是关注AI产品的产品二姐,致力于带来丰富的AI学习分享、体会,欢迎你和我一起学习,如果你觉得文章有用,欢迎关注、点赞、转发。