【百面机器学习之算法工程师读书笔记】——第十四章:生成式对抗网络——GANs初体验

简介

Generative Adersarial Networks ,简称GANs,是一个训练生成模型的新框架。GANs的变种有很多,如WGAN、infoGAN、f-GANs、BiGAN、DCGAN、IRGAN等。(把GANs看作是一幅太极图,“太极生两仪”,两仪就类似生成器和判别器。生成器负责生,判别器负责灭。一生一灭即万物。)

                                 

 

GANs的基本思想和训练过程

基本思想

GANs采用对抗策略进行模型训练。一方面生成器通过调节自身参数,使生成的样本尽量难以被判别器识别出是真实样本还是模拟样本;一方面又让判别器调节自身参数,使其尽可能准确判别出输入样本的来源。具体训练时,采用生成器和判别器交替优化的方式。

训练过程

(1)训练判别器时,先固定生成器。利用生成器随机模型产生样本作为负样本,从真实数据集中采集正样本,将这些样本输入判别器,根据判别器输出和样本标签来计算误差,利用误差反向传播算法来更新判别器参数。

                                   

(2)训练生成器时,先固定判别器。利用当前生成器随机模拟产生样本,并输入到判别器,根据判别器输出和样本标签来计算误差,利用误差反向传播算法来更新生成器参数。

                                      

 

GANs如何避免大量概率推断计算?

传统过程

传统概率生成器模型要定义一个概率分布表达式P(X),通常是一个多变量联合概率分布的密度函数p(x1,x2,x3,,,xn),并基于此做最大似然估计。(此过程中涉及了边缘概率,条件概率等,随机变量很多时,模型会很复杂,改变推断很困难)

GANs过程

如果随机变量Z和X之间满足某种映射关系X=f(Z),则其概率分布Px(X)和Pz(Z)间也存在某种映射关系,所以:

当X,Z属于一维随机变量时,

当X,Z属于高维随机变量时,导数变成雅克矩阵,即.

因此,已知Z的分布,对随机变量间的转换函数f直接建模,就唯一确定了X的分布。这样就不用大量复杂的概率计算了。若用神经网络来进行训练,可以给f更大的发挥空间。

常用的优化网络结构操作有:Relu激活函数,批量归一化,Dropout,卷积神经网络和循环神经网络等操作。都可加到生成器的网络中,增强表达能力。

GANs在实际训练中会遇到什么问题?

问题

在实际训练中,早期阶段生成器G很差,生成的模拟样本很容易被判别器D识别,使得D回传给G的梯度极其小,达不到训练目的。即优化饱和现象。

原因

假设将D的sigmoid输出层的前一次层记为o,那么,D(x)=sigmoid(o(x)),此时有

                                           

因此,训练G的梯度为

                                         

当D很容易认出模拟样本时,意味认错模拟样本的概率几乎为0,即,若,C为常量,则可推出:

                                   

即G获得的梯度基本为0,说明D强大后对G没用什么帮助。

解决方案

对于上诉问题的分析,我们可以将变成,即让后者最大,而在最优时解相同。但是更改后,目标函数梯度发生了变化,如下:

                                         

                                           

这样之后,即使趋近于0,也不会小声,仍能给生成器提供有效的梯度。

 

相关资料

生成对抗网络原文链接:https://arxiv.org/abs/1406.2661

目前与生成对抗网络(GAN)相关的论文和对应的代码链接:

https://github.com/zhangqianhui/AdversarialNetsPapers

不错相关博文:

https://blog.csdn.net/c2a2o2/article/details/54408072

https://www.cnblogs.com/zijunlearningclanguage/p/9644034.html

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值