admin 管理员组文章数量: 887021
GAN
1 GAN概述
GAN主要由两个网络组成,一个是生成网络G(Generator),另一个是判别网络D(Discriminator)。
以图片生成为例:
- G是一个生成图片的网络,它的输入是一个随机噪声z,通过这个噪声生成的图片记作G(z)
- D是一个判别网络,它可以判别一张图片是不是真实的。它的输入是x,x表示一张图片;输出是D(x),表示图片x是真实图片的概率,如果为1,则表示这张图片是真实的概率为100%,如果为0,则表示这张图片是真实的概率为0%
在训练过程中,G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?
在最理想的状态下,G可以生成“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
定义一个模型来作为生成器G(图中蓝色部分Generator),能够输入一个向量,输出手写数字大小的像素图像。
定义一个分类器来作为判别器D(图中红色部分Discriminator)用来判别图片是真的还是假的(或者说是来自数据集中的还是生成器中生成的),输入为手写图片,输出为判别图片的标签。
2 模型推导
3 GAN的缺陷
(1)模型坍塌(Model collapse)
(2)梯度消失
(3)训练不稳定,训练缓慢
4 优化模型
4.1 DCGAN
全称:Deep Convolutional GAN
4.1.1 概述
使用CNN的方式来实现GAN,在经典CNN中通常是使用卷积逐层实现信息提取,用pooling实现信息筛减。但是在GAN中使用CNN时,需要使用到转置卷积,生成器G将输入的噪声z
通过一层层的转置卷积将信息扩充,生成与目标相似的信息。
DCGAN生成器G的结构如图所示:
转置卷积示意图:
4.1.2 缺陷
1)生成质量不高
2)当需要生成的图片太大的时候,训练的稳定性有问题
3)模型坍塌
4)梯度消失
4.2 LSGAN
全称:Least Squares GAN
4.2.1 概述
LSGAN是为了解决梯度消失和模型坍塌这一系列问题而提出的一种方法。
它通过修改训练中的Loss来改进模型。使用Least Squares
来作为Loss,让梯度更有效的传递回去。
4.2.2 Loss分析
上面的经典GAN和DCGAN使用的是sigmoid cross entropy
,但是sigmoid
的梯度范围非常有限,如果梯度无法有效的传递给网络,那么会导致1)网络的参数更新缓慢;2)网络趋向于停止学习
从上面两幅图可以看出,sigmoid
的梯度值是最小的。
LSGAN通过修改loss,将sigmoid
替换为least squares
。
sigmoid
MeanSquaredError
4.2.3 缺陷
1)新的loss实现方式知识优化了梯度传递中的问题,但是仍然存在模型坍塌的问题。
2)在训练过程中,生成器和判别器是在一种对抗的状态,但是任何一方太强,就会碾压对方,对抗的平衡被打破,从而导致训练失败。
4.3 WGAN
全称:Wasserstein GAN
WGAN使用了一种更好的方式来测量生成数据与真实数据的差距,并用这种方式来拉近他们的距离。
4.3.1 问题提出
1)梯度上的问题
在经典GAN中,它使用的是一种叫做JS散度的数据分布测量方法。知乎上的这篇文章从数学的角度分析了经典GAN中JS散度的缺陷——当两个分布没有重叠部分,或重叠部分比较小的话,其可以用来更新模型的梯度就是0,或忽略不计。
2)模型坍塌的问题
经典GAN中还存在模型塌陷的问题,导致生成器G生成的模式固定,生成多样性非常少。
4.3.2 解决问题
WGAN中,使用Wasserstein
距离来替换经典GAN中loss使用的JS散度
上面公式的详细理解可以参考知乎中的这篇文章
4.3.3 缺陷
WGAN从GAN的理论上深度剖析了经典GAN中loss的劣势,并提出了释放GAN学习能力的方法,用Wasserstein (W) distance
释放GAN的学习力。不过由于里面用了一个clip
截断网络参数的做法,让GAN的学习力还没有完全的发挥出来。
4.4 WGAN-gp
全称:WGAN with gradient penalty
WGAN-gp是对上面提出的WGAN的一种改良:用一种梯度惩罚的方法替换 clip weights。
WGAN在为了保证1-Lipschitz
这种约束条件时,使用了clip weights
的方法,局限住判别器的能力,但是这种一刀切肯定是不好的。WGAN-gp为了解决这种一刀切,提出了一种更柔和的方式,也就是使用gradient penalty
来约束。
4.5 WGAN-div
全称:Wasserstein Divergence for GANs
在WGAN-gp中,为了满足1-Lipschitz
约束,训练出好效果,作者采用了真假数据的插值方法,来模拟全空间的均匀分布。WGAN-div的作者认为,这种做法是一种机械性的,很难靠有限的采样,模拟出这种全空间分布。
4.6 SAGAN
全称:Self-Attention GAN
SAGAN中引入了注意力机制,让模型可以有重点的观察、分析,从而生成效果更好的图像。简单的来说就是:围绕着重点画画,画出来的画更有神
。
4.7 PGGAN
全称:Progressive Growing GAN
GAN 在小尺寸上图片(<60px)的生成任务已经可以达到相对比较好的效果了,但是继续扩大尺寸,比如到到1024px,生成的难度是指数型增加的, 因为可以尝试的排列组合数是指数型增高。
训练难度的提高,将会出现几个问题:
- 训练时间的指数型加长
- 训练效果的降低
- 有可能压根训练不出来,或只能训练出模糊的图片
PGGAN 从训练方法上革新,实现分阶段,从易到难,从简单的小任务到大任务过度型学习
。
PGGAN的训练方式如图所示:
- Generator 生成 44 的图片,Discriminator 识别 44 的图片
- 生成 88, 识别 88
- 生成 1616, 识别 1616
- …
- 生成 10241024, 识别 10241024
参考资料
[1] GAN学习指南:从原理入门到制作生成Demo
[2] 通俗理解生成对抗网络GAN
[3] 你的GAN训练得如何–GAN 的召回率(多样性)和精确率(图像质量)方法评估
[4] 生成对抗网络——GAN(一)
[5] GAN生成对抗网络——莫烦
[6] 通俗理解GAN(一):把GAN给你讲得明明白白
本文标签: GAN
版权声明:本文标题:GAN 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687732791h134750.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论