概述
GAN(Generative Adversarial Network)
GAN中存在两个网络,分别是生成器G(Generator)和判别器D(Discriminator)。
找到一个Generator,使得判别器D不能分开真实的和生成的数据。
生成器网络在训练过程中,生成网络尽量生成真实的图片去欺骗判别器D。判别器D尽量把生成器G生成的图片和真实的图片区分开。G和D构成一个动态的博弈过程。
找到一个判别器D使得loss最大,同时找到一个生成器G减小这个loss函数。
梯度上升(Gradient ascent)用在判别器D中,找最大。
梯度下降(Gradient descent)用在生成器G中,找到最小。
判别器D的输出是0,说明判别器能够正确分类,跟真实图片差得远,此时是bad examples。判别器D的输出接近于1,说明以假乱真,说明是good examples。
但是由于在bad examples上,原有生成器G的loss函数,梯度太小,会存在梯度消失的问题。所以可以替换成下面的形式:
Deep Convolutional GAN(DCGNN)
DCGNN原理和GAN原理是一样的,就是把G和D换成了卷积神经网络。从左到右的过程叫做转置卷积(transposed convolutional layer)。
- 将所有的pooling层替换成stride卷积
- 判别网络D和生成网络G中使用batch normalization
- 去掉全连接FC层,使网络变为全卷积网络
- G网络中使用ReLU作为激活函数,最后一层使用tanh。因为最后一层图像像素值是有界的(0-255)
- D网络中使用LeakyReLU作为激活函数
GAN的理论
泛化性:用比较少的数据,能学习出对新样本的适应能力。
均衡性:不均衡。生成器G和判别器D两个模型就不匹配。
Wasserstein GAN(WGAN)
wasserstein 距离用来表示两个分布的相似程度。又叫做Earth Mover’s Distance,推土机距离。它衡量了把数据从一个分布移动到另一个分布所需要的最小平均距离。
两个分布的距离不一样。标准GAN的loss函数可以被替换掉,因为原有的loss存在梯度消失的问题。可以认为所有的深度神经网络都是函数族,使用网络D,参数化Lipchitz函数条件。梯度的范围在(-1,1)之间。实际中,使用权重clip的技巧,使得满足。
实际中,WGAN和GAN比,生成的图像会更加模糊。虽然loss函数存在优势,但是距离度量不如直接对图像分类判别准确。实际中更多使用Hinge Loss。
Spectral Normalization GAN(SN-GAN)
控制f函数的Lipchitz系数。Lipschitz连续条件的意义在于使得 f 足够稳定,在输入发生少量变化时,输出不会有太巨大的变化。如果有图像A,修改少量像素得到图像B,输入判别器D后得到相差非常巨大的判别效果,那么判别器就是不稳定的,它对输入过于敏感。
求出矩阵最大的特征值,每个矩阵都除以该特征值。
详细介绍可参考:GAN中的Spectral Normalization
Evaluation Metric of GANs
现在做GAN方向的科研,基本需要使用如下的两个指标度量效果。
- IS(Inception score):越高越好。
- FID:越低越好。计算两个高斯分布的wasserstein 距离。
最后
以上就是虚拟蜜粉为你收集整理的GAN介绍的全部内容,希望文章能够帮你解决GAN介绍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复