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

Posted tensor_zhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GAN1-对抗神经网络梳理(GAN,WGAN,WGAN-GP)相关的知识,希望对你有一定的参考价值。

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)的主要内容,如果未能解决你的问题,请参考以下文章

生成式对抗网络模型综述

一文读懂生成式对抗网络模型

深度学习生成对抗网络GAN|GANWGANWGAN-UPCGANCycleGANDCGAN

GAN的训练技巧提升(WGANLSGANEBGANWGAN—GP算法)附代码

WGAN

万字详解什么是生成对抗网络GAN