• GAN——生成式对抗网络


    GAN的定义

      GAN是一个评估和学习生成模型的框架。生成模型的目标是学习到输入样本的分布,用来生成样本。GAN和传统的生成模型不同,使用两个内置模型以“对抗”的方式来使学习分布不断接近输入样本分布。两个模型一个是生成式模型(Generative model),用来生成样本;另一个是判别式模型(Discriminative model),用来判断样本是否真实而不是来自生成模型。生成模型并不直接学习输入样本的分布,而是通过“欺骗”判别模型的方式提高输入分布的逼近程度;判别模型则是使用生成样本和真实样本来提高判别准确率。

      对于生成模型$G$和判别模型$D$,GAN的要实现的就是:

    $minlimits_{D}maxlimits_{G} V(D,G)$

    $ V(D,G) = E_{xsim p_{data}}[log_{}D(x)] + E_{zsim p_z}[log_{}(1-D(G(z)))]$

      其中$p_z$是随机数$z$的分布,通常是均匀分布。$G(z)$就是基于这个随机数,生成的样本。$D(x)$就是样本$x$为真实样本的概率。使用随机梯度的方法进行优化的过程如下:

      每次分别随机拿到$m$个真实和生成样本用来对函数($ heta_d$、$ heta_g$分别包含在$D$和$G$中)

    $displaystyle f( heta_d) = frac{1}{m}sumlimits_{i=1}^{m}[log_{}D(x^{(i)})+log_{}(1-D(G(z^{(i)})))]$

      梯度上升,也就是优化判别模型;再生成$m$个样本用来对函数

    $displaystyle g( heta_g) = frac{1}{m}sumlimits_{i=1}^{m}[log_{}(1-D(G(z^{(i)})))]$

      梯度下降也就是优化生成模型。最终二者都达到最优。

      以下是拟合的过程图:

      黑点线是样本$x$的真实分布,绿线是样本$x$的生成模型分布,蓝虚线是判别模型判断$x$属于真实的概率,下方的$z$是均匀分布随机数$z$到生成样本$x$的映射。

      a图是初始化时,判别模型$D$和生成模型$G$都很差。

      b图是取样本来更新$D$,$D$在此刻变为最优。也就是说,在当前的$G$下,对于每个$x$,都能正确得出它是真实样本的概率:

    $displaystyle D(x) = frac{p_{data}}{p_{data}+p_g}$,

      证明在后面,不过想想也是这么一回事。比如看绿线和黑点线中间的交叉点,此时$x$的真实概率为0.5。

      c图是更新$G$,$G$在此刻$D$的基础上变得不错了。

      d图是一直迭代到最后,$G$和真实分布一模一样,而$D$的判断概率全是0.5。但是,一模一样也不是很好。因为样本集总是有限的,并不能完全契合样本全体的分布,所以如果生成分布和样本集分布一模一样的话可能会过拟合。

    全局最优

      对任意给定的$G$,最优的$D$对每个样本$x$,都有:

    $D_G^*(x) = displaystyle  frac{p_{data}}{p_{data}+p_g}$

      因为要最大化$ heta_d$的函数:

    $displaystyle V(G,D) = int_x p_{data}(x)log_{}(D(x)) + p_g(x)log_{}(1-D(x))dx$  

      也就是对于每个$x$,积分函数都取最大值。而函数

    $h(y) = alog_{}(y)+blog_{}(1-y),age 0,bge 0$

      在

    $displaystyle y^*=frac{a}{a+b}$

      时最大。因为$0< y < y^*$时$h'(y)$大于零,而$y^*< y < 1$时$h'(y)$小于零。因此得证。

      假如$G$训练到了最优,也就是输出分布与输入样本分布相同,即$p_{data}=p_g$,而$D$也最优时,有:

    $displaystyle V(D,G) = E_{xsim p_{data}}left[log_{}frac{p_{data}(x)}{p_{data}(x)+p_g(x)} ight] + E_{xsim p_g}left[log_{}frac{p_{g}(x)}{p_{data}(x)+p_g(x)} ight]$

    $displaystyle = E_{xsim p_{data}}left[log_{}frac{1}{2} ight] + E_{xsim p_g}left[log_{}frac{1}{2} ight]=-log_{}4$

    参考文献

      Generative Adversarial Networks
  • 相关阅读:
    动画Animation
    ListView配合BaseAdapter
    ListView 搭配SimpleAdapter
    内部类以及内部接口的实例化
    SAP FI模块常用事务代码
    java随机生成字符串和校验
    JAVA版exe可执行加密软件
    微信小程序实现类似JQuery siblings()的方法
    微信小程序实现给循环列表点击添加类(单项和多项)
    微信小程序如何动态增删class类名
  • 原文地址:https://www.cnblogs.com/qizhou/p/12795680.html
Copyright © 2020-2023  润新知