码迷,mamicode.com
首页 > 其他好文 > 详细

生成式对抗网络

时间:2020-09-17 23:07:54      阅读:28      评论:0      收藏:0      [点我收藏+]

标签:term   pre   htm   cga   结合   normal   real   mina   神经网络   

如果说前面学习的CNN主要用于图像分类或语义分割,那么GAN主要用于图像生成或图像转换,更多有趣的应用可参照:https://blog.csdn.net/qq_25737169/article/details/80874717

一、Generative Adversarial Network(GAN)

首先,GAN由生成模型和判别模型所组成:

??判别模型(区分真假样本)

  • 输入:一幅图像,输出:一个概率值,用于判断输入图像的真假
  • 判别网络目的:判断一张图是来自是真样本集还是假样本集

??生成模型(欺骗判别器)

  • 输入:一组随机数Z,输出:一个图像
  • 生成网络目的:使自己造样本的能力尽可能强,使判别网络没法判断是真样本 or 假样本

但是GAN为什么由生成器和判别器组成呢?

1、为什么Generator学习的过程需要Discriminator呢?为什么不能自己直接学习呢?可以只有一个Generator吗?

Generator自己可以直接学习,但是它学习后生成的可能就只是一张模糊(或不清楚或错误)的图片。没有Discriminator就不能确定生成的图片效果好不好。也就是说,只有一个Generator,它就只有一个任务——生成图片,至于生成的图片效果如何,就不是它所关心的任务了。

2、为什么Discriminator不能自己产生一个Image呢?可以只有一个Discriminator吗?

首先,Discriminator可以自己单独产生图片,但是这样运算量太大——穷举所有像素点x,将其放入Discriminator中,一个一个地判断,最后得到整张图片。

其次,只有Discriminator的话,它的输入永远只有真实的图片,没有虚假的图片,那么Discriminator永远成为优秀的判别器,即Discriminator面对稍微像样的图片,其判断的结果基本是1(real)——比如一个动漫角色的两个眼睛的颜色很不一样,Discriminator判别图片结果为1,但是优秀的Discriminator认为那是0(fake)。

3、如何理解Generative Adversarial Network的Adversarial?

生成对抗网络本质是一个生成图片的过程。但是需要生成一个优秀的网络,就需要adversarial。Discriminator和Generator就是一个对抗竞争的关系。生成器生成的图片要想办法骗过判别器,而判别器要不断训练生成器生成的图片和真实的图片以提高判对生成器所生成图片的审核能力。没有生成器和判别器的对抗就无法学习进步——生成更加优秀的图片。

因此,如果没有generator,就不能产生比较好的(真实的)negative样例,Discriminator不能很好训练。没有Discriminator,就不能判断出Generator产生的图片怎么样。

其训练算法如下:

技术图片

简单说来:

1、随机初始化生成器和判别器   

2、交替训练判别器D和生成器G,直到收敛

- 固定生成器G,训练判别器D区分真实图像与合成图像
- 固定判别器D,训练生成器G欺骗判别器D

其训练公式如下:

技术图片
x:真实图片

z:输入G(generator)网络的噪声

G(z):G网络生成的图片

D(x):D(Discriminator) 网络判断真实图片是否真实的概率

D(G(z)):D网络判断G生成的图片是否真实的概率

二、KL散度和JS散度

KL散度:一种衡量两个概率分布的匹配程度的指标,在GAN中用于衡量Generator生成的图片与真实的图片的拟合程度

  • KL散度(相对熵,信息散度,信息增益):用于刻画概率分布q拟合概率分布p的程度

  • P: 数据的真实分布;Q:数据的理论分布,模型分布

  • KL(P||Q) = H(p) - H(p,q) = -∫p(x)logp(x)dx(信息熵)- (-∫p(x)logq(x)dx) (交叉熵)

  • P1 = P2时,KL散度 = 0

  • KL散度具有非负性

  • 极大似然估计 = 最小化KL,理解如下:

    定义:数据分布 P(x),Q(x;θ)---其中θ为参数,样例{x1, x2,...,xm} from P(x)
    找出θ:使Q(x;θ) is colse to P(x)---即找出合适的θ,使得Q尽可能地拟合P
    即使用最大似然估计(MLE):找参数值,使样本结果Q(x)出现像P(x)那样的结果的可能性为最大
                         MLE的具体理解参照:https://zhuanlan.zhihu.com/p/26614750
    

    其等价关系:

技术图片

JS散度:JS(P1||P2) = 1/2KL( P1 || (P1+P2)/2 ) + 1/2 KL( P2 || (P1+P2)/2 )

  • 度量两个概率分布的相似度,解决KL散度非对称性问题

三、cGAN和DCGAN

cGAN(条件生成)

技术图片

y:有条件地监督生成器生成的数据

DCGAN(深度卷积生成式对抗网络)

  • CNN与GAN结合,使用卷积神经网络作为判别器和生成器
  • 判别模型:用strided convolutions代替空间池化pooling
  • 生成模型:用fractional strided convolutions
  • 除了生成模型的输出层和判别器的输入层,网络其他层均使用了Batch Normalization
  • 无全连接层
  • 生成器的输出层——Tanh激活函数,其他层——ReLU;;判别器:leaky ReLU

四、代码练习

GAN

CGAN and DCGAN

生成式对抗网络

标签:term   pre   htm   cga   结合   normal   real   mina   神经网络   

原文地址:https://www.cnblogs.com/fm-justry/p/13657447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!