码迷,mamicode.com
首页 > 其他好文 > 详细

GAN1-对抗神经网络梳理(GAN,WGAN,WGAN-GP)

时间:2021-06-28 20:30:58      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:inline   param   mat   inf   优化方法   move   min   pytho   display   

1,对基本概念梳理

https://www.cnblogs.com/kai-nutshell/p/12968454.html

https://www.cnblogs.com/kai-nutshell/p/12968484.html

https://www.cnblogs.com/kai-nutshell/p/12968508.html

https://www.cnblogs.com/kai-nutshell/p/12968548.html

https://zhuanlan.zhihu.com/p/26007545

2,WGAN

2.0,从GAN到WGAN,最核心的有这么几点:

  • 最优判别器为:

    \[D(x)=\frac{P_{r}(x)}{P_r(x)+P_g(x)} \tag{1} \]

    这个结果从直观上很容易理解,就是看一个样本\(x\)来自真实分布和生成分布的可能性的相对比例。如果\(P_{r}(x)=0\)\(P_{g}(x)\neq{0}\),最优判别器就应该非常自信地给出概率0;如果\(P_{r}(x)=P_{g}(x)\),说明该样本是真是假的可能性刚好一半一半,此时最优判别器也应该给出概率0.5。

  • 判别器最优时,GAN的损失函数由:

    \[E_{x\sim{P_{r}}}[logD(x)]+E_{x\sim{P_{g}}}[log(1-D(G(z)))] \tag{2} \]

    变为

    \[E_{x\sim{P_{r}}}[log\frac{P_{r}(x)}{\frac{1}{2}[P_{r}(x)+P_{g}(x)]}]+E_{x\sim{P_{g}}}[log\frac{P_{g}(x)}{\frac{1}{2}[P_{r}(x)+P_{g}(x)]}]-2log2 \tag{3} \]

    已知KL散度以及JS散度:

2.1,GAN的损失函数如下:

\[\min_{G}\max_{D}V\{D,G\}=E_{x\sim{P_{data(x)}}}[logD(x)]+E_{x\sim{P_{z(z)}}}[log(1-D(G(z)))] \]

判别器模型前向传播过程中最后需要加上sigmoid函数,结合nn.BCELoss()得到损失函数。

2.2,相较于GAN,WGAN做了以下改进

  • 判别器最后一层去掉sigmoid

  • 生成器和判别器中的loss不取对数,损失函数如下

    \[\min_{G}\max_{D}V\{D,G\}=E_{x\sim{P_{data(x)}}}[D(x)]-E_{x\sim{P_{z(z)}}}[D(G(z))] \]

    作者为此还铺垫了一个距离概念:Earth-Mover (EM) distance / Wasserstein-1

    \[W(P_{r},P_{g})=\inf_{\gamma{\sim{\prod(P_{r},P_{g})}}}E_{(x,y)\sim{\gamma}}[||x-y||] \]

    \[\min_{G}\max_{D}W(P_{r},P_{g})=\frac{1}{K}\sup_{||f||_{L}\leq{K}}E_{x\sim{P_{r}}}[f(x)]-E_{x\sim{P_{g}}}[f(x)] \]

  • 每次更新判别器的参数,将其绝对值截断到不超过一个固定常数c(因为去除sigmoid后依照上面的损失函数进行更新,有可能造成生成器以及判别器的输出为无穷大,只要差值有限即可)

    for p in disc_net.parameters():
        p.data.clamp_(opt.clamp_lower, opt.clamp_upper)
    
  • 不用基于动量的优化方法(momentum Adam)

2.3,WGAN-GP

GAN1-对抗神经网络梳理(GAN,WGAN,WGAN-GP)

标签:inline   param   mat   inf   优化方法   move   min   pytho   display   

原文地址:https://www.cnblogs.com/tensorzhang/p/14942718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!