Generative Adversarial Nets阅读笔记

本文背景

深度学习通过学习各种数据的概率分布来生成高层次化的模型,在自然图像、语音处理、自然语言中方面都有应用。目前,深度学习中应用最成功的是判别模型,而深度生成模型由于在最大似然估计等一些棘手的概率计算,并未获得很大的成功。

提出方法

GAN模型的基本结构包括两个网络结构——生成模型Generator和判别模型Discriminator,G网络尽可能生成满足正样本分布的假样本,D网络则尽可能辨别出真假样本,同时对两个网络进行训练更新,使得两者在相互博弈的过程中性能都越来越好,理想情况下最终G网络的生成分布完全符合正样本的数据分布,D网络辨别的准确率维持在1/2

本文创新

  1. 将博弈论中零和博弈的思想应用到深度学习神经网络中

  2. 不再使用马尔可夫链,训练过程中不需要近似推理,减少了计算量

  3. GAN中G的梯度更新信息来自判别器D,而不是来自数据样本

具体实现

生成器G和判别器D都是多层感知机。G从随机噪声中挑选数据z作为输入,输出为G(z),G的分布为p(g)。D的输出D(x)代表着判别器的输入x属于真实数据集而不是来自于生成器的概率。在训练的过程中,G的目的是让p(g)足够接近p(data),那么D就无法将来自于G的数据鉴别出来,即D(G(z))足够大;而D的目的是能够正确的将G(z)鉴别出来,即D(x)足够大且D(G(z))足够小,即D(x)+(1-D(G(z)))足够大,因此

模型的目标函数—

  1. 对于生成器G,目标函数为(梯度下降):

  1. 对于判别器D,目标函数为(梯度上升):

在模型中。生成器G和判别器D时串联的,为了保证它们能够被同时训练,设置了一个超参数k,k次优化判别器D后,优化一次生成器G,迭代轮训。这样当G变化缓慢时,D可以通过k次优化维持在最优解。

算法步骤

for 迭代次数

     for k steps

          1.从p(g)分布中选取m个噪声样本(z1,z2...zm)

          2.从数据集p(data)中选取m个正样本(x1,x2...xm)

          3.通过梯度上升来更新判别器

         

     end

    通过梯度下降更新生成器

对于固定的G,最优的判别器D为:

全局最优条件(即训练停止条件):

此时

实验验证

本文在MNIST、TFD、CIFAR-10上进行了实验验证,生成器网络G中混合使用了ReLU和sigmoid激活函数,判别器网络使用了maxout、dropout激活函数。在生成网络的底层使用噪声作为输入(理论上中间层也可以添加噪声和dropout),本文中训练时将k设为1。使用Gaussian Parzen window拟合生成网络生成的样本分布,并在测试集上估计对数似然性(即给予观察样本,判断模型正确的可能性),高斯分布的参数由验证集上交叉验证获得。在三个数据集上的实验效果与其他已有的生成模型的性能比较如下:

相对已知的生成模型效果好很多。

优点与缺点

优点:

  1. 计算上,不需要马尔可夫链和近似推理,避免了很大的计算量

  2. GAN中G的梯度更新信息来自判别器D,而不是来自数据样本

  3. 可以表示非常尖锐的分布或者退步分布

缺点:

  1. G不能频繁地更新,要保证与D同步

  2. 训练需要找到纳什均衡,这是一个比优化一个目标函数更难的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值