对抗生成网络(GAN)详解

目录

前言

目标函数

 原理

训练

给定生成器,训练判别器

给定判别器,训练生成器

总结


前言

之前的生成模型侧重于将分布函数构造出来,然后使用最大似然函数去更新这个分布函数的参数,从而优化分布函数,但是这种方法计算比较困难,尤其是维度比较高时,所以作者考虑能不能不用构造一个分布出来,而是构造一个模型自己去学习这个分布。这两种方法有本质的区别,第一种是要完完全全的将分布构造出来,将分布的均值、方差等弄明白,而第二种方法是不需要构造分布,只需要构造模型得到近似的结果就可以。

GAN模型中有两个分布,一个是生成器,一个是判别器,根据他们的名字就可以看出,生成器是生成和真数据相似的分布来欺骗判别器,二判别器是判断出假数据从而不让生成器得逞,原文中作者举了一个很形象的例子,生成器就如假币的贩子,判别器就如警察,假币贩子制造假币,警察识别假币找出假币贩子,是一个对抗的过程。

其实,原始的生成器和判别器很简单,就是一些全连接网络组成,可以通过反向传播进行端到端的训练,训练过程相当于一个不断学习和对抗的过程。

整个过程大概如下图所示,将随机噪音输入到生成器,这里的随机噪音例如可以服从的是高斯分布,生成器根据输入的噪声生成一张假图像,判别器将真实图像和生成的假图像作为输入进行训练,这里的判别器其实就是一个二分类模型,输出为真或假。

目标函数

GAN的目标函数如下所示,很多人都没有对这个函数进行详细的说明,在这里呢我详细的说明一下。

式中,z是随机噪声,p_{z}\left ( z \right )是随机噪声z的分布,G\left ( z,\theta _{g} \right )是生成器,输入为z,其中有一个权重参数\theta _{_{g}}D\left ( x,\theta _{d} \right )是判别器,输入为图像x,他的权重参数为\theta _{d},所以对于GAN来说他训练的是两个模型,是一个对抗的过程,所以在他的目标函数中有一个求最大max和一个求最小min的过程。

GAN的目标函数包括两部分,如图中的红框和绿框:

 判别器D要最大化log\left ( D\left ( x \right ) \right )D\left ( x \right )的含义是将真实图像输入到判别器D中,判别器认为是真图的概率,判别器希望真实图像的概率越大越好,这就对应了式中的maxD,绘制出log\left ( D\left ( x \right ) \right )图像如下。

 

生成器要最小化函数log\left ( 1-D\left ( G\left ( z \right ) \right ) \right )D\left ( G\left ( z \right ) \right )的含义是将噪声z输入到生成器G中得到一个假图G\left ( z \right ),然后将G\left ( z \right )输入到判别器D中,输出判别器认为假图是真图的概率,即D\left ( G\left ( z \right ) \right )。绘制出log\left ( 1-D\left ( G\left ( z \right ) \right ) \right )图像如下,生成器的目标是让判别器认为假图是真图的概率D\left ( G\left ( z \right ) \right )越大越好,即接近于1,而log\left ( 1-D\left ( G\left ( z \right ) \right ) \right )是一个递减的过程,即D\left ( G\left ( z \right ) \right )越大log\left ( 1-D\left ( G\left ( z \right ) \right ) \right )越小,所以生成器的目标变成了让log\left ( 1-D\left ( G\left ( z \right ) \right ) \right )越小越好,这就对应了式中的minG。

 

 原理

 如图,详细和展示了GAN整个训练过程

图中, Z为噪声空间,噪声空间中为均匀分布的随机数,生成器将噪声空间的随机数z映射到图像空间x,随机点映射到图像空间的分布就是绿色曲线所示的高斯分布,而图像中的黑色曲线为真实图像的数据分布,蓝色曲线为判别器预测x为真实数据的概率,蓝色曲线在真实数据的分布出偏高,在生成器生成的数据分布处偏低。

  • 第一步就是训练判别器(图(b)),将曲折的蓝线训练成平滑的曲线,可以很好的分别真实数据和虚假数据。
  • 然后就是训练生成器图(c),将生成器的图像分布绿线逐渐接近真实数据的分布黑线。
  • 最后交替训练判别器和生成器图(d),直到生成器的图像分布绿线和真实数据的分布黑线重合,判别器无法区分两个分布,此时蓝色变成一条水平线。

训练

这部分就是详细说明了GAN的训练过程,包括给定生成器训练判别器,和给定判别器训练生成器,将会涉及到大量的计算公式以及推导。

训练过程对应的伪代码如图,训练过程包括两个,第一个是首先训练k次判别器,然后再训练一次生成器。

训练判别器

  • 首先采样m个随机噪声,生成m个假图像,
  • 然后再采样m个真图像,
  • 最后由损失函数和梯度,更新判别器的权重参数,

其中目标函数和我们之前说的是一样的,只不过是将期望换成了均值。

训练生成器

  • 首先采样m个随机噪声,生成m个假图像,
  • 然后由损失函数和梯度,更新生成器的权重参数,

注意再生成器的目标函数中,不会收到判别器的影响,所以只有生成器的部分。

给定生成器,训练判别器

首先给出结论,再进行证明:

对于给定的生成器G,最优的判别器为

D_{G}^{\ast }=\frac{p_{data}\left ( x \right )}{p_{data}\left ( x \right )+p_{g}\left ( x \right )}

其中p_{data}\left ( x \right )为真实图像的概率,p_{g}\left ( x \right )为假图像的概率

证明

给定生成器最大化判别器的目标函数

 其中,期望的定义为:

 所以式(1)中的期望可以变为积分的形式

 

 上式中既有对x的积分又有对z的积分,其中对于随机噪声z的采样就相当于对假图像的采样,所以可以对积分元素进行统一

 所以,(2)式可以统一对x积分

变换后的式子我们就比较熟悉了,其实就是二分类交叉熵,即 

 对于二分类交叉熵为凸函数,所以可以求得最大值,证明如下

 证明完毕

给定判别器,训练生成器

生成器目标函数:

 其中的判别器D_{G}^{\ast }\left ( x \right )就是我们上面训练好的判别器,代入上式得

那么,上式中当且仅当p_{g}=p_{data}时,生成器的目标函数取得最小值 -log4

证明

证明完毕。

总结

至此,有关GAN的说明基本差不多了,主要说明了一些重点的原理性的东西,一些细节没有进行说明,感兴趣的朋友可以去看原文,最后希望大家能点赞支持!

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成对抗网络GAN)是深度学习领域的一项重要技术,利用GAN可以有效地生成复杂的样本数据,例如图像、音频等。在本文中将介绍如何用pytorch搭建GAN,并对其进行详细的解释。 GAN网络生成器和判别器两部分组成。生成器接受随机噪声作为输入,通过反向传递训练来生成逼真的样本,而判别器则负责对输入样本进行判断,判断其是否是真实样本。两部分交替训练,并不断优化生成器和判别器的参数,最终可以得到生成生成逼真样本的能力。 搭建GAN需要先定义生成器和判别器的网络结构,其中生成器可以使用反卷积,而判别器可以使用卷积神经网络。此外,在搭建过程中还需要定义一些超参数,如学习率、训练轮数等。 在开始训练GAN之前,需要先准备好数据集,并对其进行预处理,例如归一化、降噪等。然后对生成器和判别器设置优化器,并开始训练。在训练过程中需要注意调整超参数以达到更好的效果。 最后,在训练结束后需要对GAN进行评估,可以通过计算生成样本与真实样本之间的差别来确定生成器的性能并对其进行改进。 总之,利用pytorch搭建入门GAN需要先定义网络结构和超参数,并使用适当的优化器进行训练,最终可以生成逼真的样本。同时,需要注意调整超参数以达到更好的效果,并对GAN进行评估和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值