GAN总结

2019-03-21  本文已影响0人  LuDon

GAN原理

生成对抗式网络(GAN)作为一种优秀的生成式模型,在图像生成方面有很多应用,主要有两大特点:

训练过程中,生成器的目标是尽可能生成真实的图片使判别器认为是真的,而判别器的目标是尽可能的辨别出生成器生成的假图像和真实的图像。这样G和D就构成了一个博弈的过程,最终会达到一个平衡,这个平衡成为纳什平衡。
GAN的目标函数定义为:
\mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) = {{\rm E}{x\sim{p{data}}(x)}}[\log D(x)] + {{\rm E}_{z\sim{p_z}(z)}}[\log (1 - D(G(z)))]
这个目标函数可以分为两个部分来理解:

GAN有两个特点:

GAN的优点:

GAN的缺点:

GAN的改进

DCGAN

DCGAN是GAN早期效果最好的GAN。
DCGAN主要贡献:引入了卷积并给了比较优雅的网络结构,DCGAN的生成器何判别器几乎是对称的。
DCGAN使用CNN结构来稳定GAN的训练,并使用了一些trick:

WGAN

使用Wasserstein 距离代替KL散度,作为loss函数。
WGAN也可以用最优传书理论来解释,WGAN的生成器等价于求解最优传输映射,判别器等价于计算Wasserstein 距离,即最优的传输代价。代码实现部分具有如下:

LSGAN

LSGAN的loss如下:
minJ(D) = min[1/2E_{x-p_{data}(x)}[D(x)-a]^2+1/2E_{z-p_z(z)}[D(G(z))-b]^2]
其中a=1, b=0.
LSGAN的有点:

GAN训练过程中的问题

理论上存在的问题

经典的GAN判别器的两种loss,分别为:
E_{x-p_g}[log(1-D(x))]
E_{x-p_g}[log(-D(x))]

第一个loss:当判别器达到最优的时候,等价于最小化生成分布于真实分布之间的JS散度,由于随机生成分布很难与真实分布有不可忽略的重叠以及JS散度的突变特性,使得生成器面临梯度消失的问题。
第二个loss:在最优判别器下,等价于既要最小化生成分布与真实分布之间的KL散度,又要最大化JS散度,相互矛盾,使得梯度不稳定,而且KL散度的不对成型使得生成器宁可丧失多样性也不远丧失准确性,导致模式崩溃的现象。

在实践中存在的问题

GAN在实践中存在两个问题:

一些训练技巧

稳定训练的技巧

特征匹配:使用判别器某一层的特征作为输出,来计算真实图片和生成图片之间的距离,作为loss。

标签平滑:把标签1替换成0.8-1.0的随机数。
PatchGAN:PatchGAN相当于对图像的每一个小的patch就行判别,这样可以使生成器生成更加锐利清晰的边缘。
具体做法:输入256256的图像到判别器,输出44的置信图。置信图中的每一个像素代表当前patch是真实图像的置信度,当前图像patch的大小就是感受野的大小,最后将所有patch的loss平均作为最终的loss。

模式崩溃的解决方法

目标函数:更新k次生成器,每次的参考loss是迭代之后的判别器的loss(这个loss只更新生成器,不更新判别器)。这样使生成器考虑到了后面k次判别器的变化情况,避免在不同的mode之间切换。

网络结构:采用多个生成器,一个判别器以保障样本生成的多样性,结构如下:

a

GAN的应用

GAN及其改进算法大都是围绕GAN两大常见问题改进的:模式崩溃和训练不稳定。


GAN模型总结

由于GAN在生成样本过程中不需要显式建模任何数据分布就可以生成real-like的样本,所以GAN在图像、文本,语音等诸多领域都有广泛的应用。


GAN的应用

未来的方向

GAN的训练崩溃和模式崩溃等问题有待进一步研究。

参考文献

[1]万字综述之生成对抗网络(GAN)
[2]WGAN介绍
[3]令人拍案叫绝的Wasserstein GAN

上一篇下一篇

猜你喜欢

热点阅读