生成对抗网络-GAN&DCGAN

2019-05-08  本文已影响0人  技术大渣渣

生成对抗网络GAN(Generative adversarial network)是由Goodfellow大神在NIPS2014上提出,论文地址如下:https://arxiv.org/pdf/1406.2661.pdf

1.GAN能做什么?

学习是需要理由和动力的,让我们来看看非常热门的GAN到底有什么什么魔力,GAN的就是生成不存在于真实世界但又类似真实世界的数据,GAN是将创造力想象力赋予AI的state-of-the-art,目前GAN的应用场景主要如下:
a.AI画家,让AI去作画;
b.将模糊图像变清晰(超分辨率、去雾、去马赛克等),需要用AI的“想象力”去脑补丢失的细节信息;
c.数据增强,根据现有的数据生成新的与现有数据分布相似的数据,用于扩增数据;
d.随着GAN的发展会有更多的实用场景会用到这种技术

2.什么是GAN?

GAN主要由两部分构成,也可以理解成两个网络:生成网络(Generator)和判别网络D(Discrimination)
Generator:G主要用来学习真实图像分布从而自身生成逼近或超越真实的图像,G接收一个随机噪声z,通过这个噪声生成图片,记做G(z)。
Discrimination:D是一个判别网络,判别一张图片是不是“真实的”,它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
在训练过程中,生成器努力的生成真实的图像去欺骗判别器;而判别器则努力的把生成的图像和真实图像辨别开。这样,G和D便构成了一个动态的对“对抗过程”。
对抗的结果是什么?在最为理想的情况下,对于G,它能够生成“以假乱真”的图像G(z);对于D,它难以判别G生成的图像的真假,也就是D(G(z))=0.5。这样“对抗”就结束了,我们获得了一个能够“以假乱真”的图像生成器G。

下面具体的说一下"对抗"的过程。首先,我们有一个第一代Generator,G产生一些图片,然后我们把这些图片和一些真实的图片丢到第一代的D里面去学习,让第一代的D能够分辨生成的图像和真实的图像,然后我们又有了第二代的G,第二代的G产生的图片,能够骗过第一代的D,此时,我们在训练第二代的D,依次类推。

image

下面用数学语言来描述这个过程。假设用于训练的真实图像数据是x,图像数据分布为P_{data}(x),G就是要学习到真实的数据分布P_{data}(x)P_{data}(x)未知。噪声z的分布为P_{z}(z)P_{z}(z)已知。在理想对抗条件下,学习到的G(z)的分布应该尽可能接近P_{data}(x)G将已知分布z映射到了未知分布x上了。
因为D的输出是一个二分类问题,所以可根据交叉熵损失函数构造GAN的损失函数:

V(D,G)=E_{x~Pdata(x)}[lnD(x)]+E_{z~Pz(z)}[ln(1-D(G(z)))]

损失函数中E_{x~Pdata(x)}是指训练数据x中国的真实样本,E_{z~Pz(z)}指从已知的噪声分布中提取的样本;

3.DCGAN

深度学习中处理图像最好的模型是CNN,DCGAN就是将CNN与GAN进行了结合,并对网络结构进行了一些改变,以提高收敛速度

上一篇下一篇

猜你喜欢

热点阅读