初识GAN(Generative Adversarial Nets)网络

一、原理部分

1.1  基本思想

GAN(Generative Adversarial Nets):生成对抗网络 https://arxiv.org/abs/1406.2661

首先附上一张对抗生成网络流程图,大致的网络流程:生成器G生成假图片,判别器D判别照片真假,最终达到纳什平衡(p=0.5),两个网络交替训练。

GAN包括了两套独立的网络,两者之间作为互相对抗的目标。第一套网络是我们需要训练的分类器(下图中的D),用来分辨是否是真实数据还是虚假数据;第二套网络是生成器(下图中的G),生成类似于真实样本的随机样本,并将其作为假样本。

初识GAN(Generative Adversarial Nets)网络_第1张图片

 1.2  概率角度

假设有一种概率分布M,它相对于我们是一个黑盒子。为了了解这个黑盒子中的东西是什么,我们构建了两个东西G和D,G是另一种我们完全知道的概率分布,D用来区分一个事件是由黑盒子中那个不知道的东西产生的还是由我们自己设的G产生的。

不断的调整G和D,直到D不能把事件区分出来为止。在调整过程中,需要:

  • 优化G,使它尽可能的让D混淆。
  • 优化D,使它尽可能的能区分出假冒的东西。

当D无法区分出事件的来源的时候,可以认为,G和M是一样的。从而,我们就了解到了黑盒子中的东西。
初识GAN(Generative Adversarial Nets)网络_第2张图片

黑色的点状线代表M(真实数据)所产生的一些数据(真实数据的概率分布),绿色的线代表我们自己模拟的分布G(假图片的概率分布),蓝色的线代表着分类模型D(得分越高、峰值越高说明越可能是真实图片)。可以看到到(d)时判别器已经无法判别生成器生成的图片和真实图片了,即概率为0.5。

 1.3  公式表达(目标函数)

GAN的目标函数:

从判别器 D 的角度看,它希望自己能尽可能区分真实样本和虚假样本,因此希望 D(x) 尽可能大,D(G(z)) 尽可能小, 即 V(D,G)尽可能大。从生成器 G 的角度看,它希望自己尽可能骗过 D,也就是希望 D(G(z))尽可能大,即 V(D,G) 尽可能小。两个模型相对抗,最后达到全局最优。

初识GAN(Generative Adversarial Nets)网络_第3张图片

上图中,黑色曲线是真实样本的概率分布函数,绿色曲线是虚假样本的概率分布函数,蓝色曲线是判别器D的输出,它的值越大表示这个样本越有可能是真实样本。最下方的平行线是噪声z,它映射到了x。

一开始, 虽然 G(z) 和 x 是在同一个特征空间里的,但它们分布的差异很大,这时,虽然鉴别真实样本和虚假样本的模型 D 性能也不强,但它很容易就能把两者区分开来,而随着训练的推进,虚假样本的分布逐渐与真实样本重合,D虽然也在不断更新,但也已经力不从心了。最后,黑线和绿线最后几乎重合,模型达到了最优状态,这时 D 的输出对于任意样本都是 0.5。
 

论文资源:https://download.csdn.net/download/weixin_44855366/21113261

你可能感兴趣的:(PyTorch对抗生成网络,python,pytorch)