DeepLearing-GAN生成式对抗网络



GAN 生成对抗网络

一、介绍

​ GAN这一概念是由Lan Goodfellow于2014年提出,GAN被深度学习先驱之一的Yann LeCun称为“数十年来机器学习领域最有趣的想法。”原始GAN论文的链接为:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1406.2661.pdf

​ 我们知道CNN、RNN是通过建立图像与输出之间的关系来判断结果的一种网络映射。而GAN却是通过利用毫无意义的随机数据凭空捏造结果而非建立数据与输入映射关系来生成结果的一种网络。生成网络式网络是无监督学习的一种(本科阶段已经学过一些机器学习中常见的无监督学习方法,如K最近邻,K-means、PCA降维等,也就是原始数据集没有标签)。

Q&A

​ Q:我们希望从训练样本分布采样新数据,但这个分布不仅高维并且很复杂,难以直接实现,我们该怎么办?

​ A:先使用一个简单的分布采样,比如均匀分布,然后我们可以学习一种映射将其变换到训练样本分布中。

​ Q:用什么办法能够实现这个复杂的映射?

​ A:生成式网络。

DeepLearing-GAN生成式对抗网络_第1张图片

二、GAN模型

GAN结构

​ 原始GAN中有两个部分:生成器G(Generator)和判别器(Discriminator)。

DeepLearing-GAN生成式对抗网络_第2张图片

生成器(“假钞厂”)

​ 生成器的目的就是将随机输入的高斯噪声映射成图像(“假钞”)。输入一个向量,通过生成器,输出一个高维向量。通常输入向量的每一个维度都代表着一些特征。

判别器(“验钞机”)

​ 判别器(“验钞机”)则是判断输入图像是否来自生成器的概率,即判断输入图像是否为假图的概率。

生成器与判别器的关系

​ 其实生成器生成一个东西,输入到判别器中,然后由判别器来判断这个输入是真实数据还是机器生成的,如果生成器生成的数据(“假钞”)没有骗过判别器(“验钞机”),那么生成器(“假钞厂”)继续优化,输出第二代数据(“第二代假钞”),再输入判别器,判别器同时也在进化,对生成器的输出结果有了更严格的要求。这样生成器和判别器不断进化,他们之间有点像竞争、对抗关系,这也就是“生成对抗网络(adversarial)”的名字由来。

GAN与CNN详细区别

​ CNN是定义好特定的损失函数,然后利用梯度下降及其改进算法进行参数优化,尽可能用局部最优解去逼近全局最优解。GAN的训练是一个动态的过程,是生成器G与判别器D两者之间互相博弈过程。通俗点讲,GAN的目的就是无中生有,以假乱真。即要使得生成器G生成所谓的“假钞”以骗过“验钞机”,也就是判别器D,那么最优状态就是生成器G生成的所谓的“假钞”在判别器D的判别结果为0.5,不知道到底是真钞还是假钞。

Q&A

​ Q:为什么有判别器的存在GAN却非监督的?

​ A:因为GAN本身并不需要数据有label,GAN产生的“假”数据,配合原来的真数据来训练discriminator,而并非原始数据中的label,所以说GAN是非监督的。

三、GAN训练

GAN损失函数

​ 原始GAN的损失函数如下:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p d a t a ( x ) [ log ⁡ D ( x ) ] + E z ∼ p d a t a ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \underset{G}{\min}\underset{D}{\max}V\left( D,G \right) =E_x\sim pdata\left( x \right) \left[ \log D\left( x \right) \right] +E_z\sim pdata\left( z \right) \left[ \log \left( 1-D\left( G\left( z \right) \right) \right) \right] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpdata(z)[log(1D(G(z)))]
​ G代表生成器, D代表判别器,x代表真实数据, Pdata代表真实数据概率密度分布,Z代表了随机输入数据,该数据是随机高斯噪声。

​ 从上式可以看出:

​ ①从判别器的角度来看:判别器D希望能最大化目标函数,使得D(X)接近于1(真实样本),而 D(G(x)) 尽可能小,趋向于0(假样本),也就是 V(G,D)整体尽可能大。

​ ②从生成器的角度来看:生成器 G希望能最小化目标函数,使得D(G(z))尽量接近于1,也就是自己生成的虚假数据G(z)可以尽可能骗过判别器 D,从而使V(G,D)整体尽可能小。

​ GAN的两个模块在训练相互对抗,最后达到全局最优。

GAN训练过程

DeepLearing-GAN生成式对抗网络_第3张图片

​ 上图中蓝色点线代表了判别器的输出,黑色圆点代表数据的真实分布,绿色实线代表生成器生成的虚假数据概率分布,平行线代表噪声z映射到了x。从图中可以看出,在生成对抗网络的训练过程中,生成器G的概率密度分布慢慢的在逼近真实数据集的概率密度分布,而判别器预测值也在不断下降,当出现D(G(z))=0.5,即分不清输入图像到底是真实图像还是生成器伪造的假图。

四、GAN算法流程

​ 未完待续。

你可能感兴趣的:(CV,深度学习理论,GAN,ar,网络,深度学习)