美文网首页鱼的深度学习
论文笔记-Generative Adversarial Nets

论文笔记-Generative Adversarial Nets

作者: 升不上三段的大鱼 | 来源:发表于2021-12-26 01:23 被阅读0次

    论文链接https://papers.nips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf

    论文解读https://www.bilibili.com/video/BV1rb4y187vD?share_source=copy_web

    一句话总结:提出了生成模型框架 GAN,包括一个生成模型 G 和一个判别模型 D, 用有监督的损失函数训练无监督的问题,训练比较高效。

    背景知识
    贝叶斯公式: p(y|x)=\frac{p(y) \cdot p(x|y)}{p(x)}
    辨别模型对后验概率 p(y|x) 进行估计的判别模型方法,计算样本属于某个类的条件概率。
    生成模型估计先验概率 p(y) 和条件概率 p(x| y) ,生成数据本身。

    1. 介绍

    深度学习(当时)在生成模型上遇到的困难是近似似然函数, 于是作者提出用对抗网络框架,包括一个生成模型和一个判别模型,生成用于生成假的数据以骗过判别模型,判别模型用于辨别数据是来自真实数据还是来自生成模型,最终目的是要判别模型无法区别生成的数据与真实数据。
    生成模型和判别模型都是多层感知机(MLP),可以利用反向传播进行训练。

    2. 相关工作

    VAE(variational autoen-coders)经常与GAN一起出现,也提出了 VAE-GAN。

    3. 对抗网络

    当生成器和判别器都是 MLP 的时候, 对抗模型是最容易实现的。假设需要学习的数据 x 符合分布 p_g, 定义一个先验的输入噪声变量 p_z(z), 然后将到数据空间的映射表示为 G(z; \theta_g), 其中 G 是具有参数 \theta_g 的 MLP。定义第二个 MLP D(x; \theta_d),输出一个标量, D(x) 表示 x来自数据的概率。我们训练 D 以最大化为来自 G 的样本和训练例子分配正确标签的概率, 同时训练 G 以最小化 log(1−D(G(z)))。假设 D 能够正确区分来自 G 的数据和真实数据的,那么 D(G(z)) 应该为 0,log (1-0) 为 0 。假设 D 不能区别来自 G 的数据与真实数据,最极端的情况下,把所有的数据都当作真实数据,那么D(G(z)) 为 1, log (1-1) 是负无穷, 这就是最小化 log(1−D(G(z)))的含义。目标函数如下:


    当 D 能够区分真假的时候,第一项中 D(x)=1, log(D(x))为 0,第二项也为 0。

    当 D 不能够很好的分类时, D(x)<1, 第一项小于零,第二项中 1-D(G(x))<1, 第二项也小于零。

    因此, max_D 是希望找到一个能够区分真假的 D, min_G 是希望找到一个能够让 D 无法区分真假的 G。

    GAN 的训练过程

    上图中和黑色虚线为数据分布,蓝色虚线为判别分布,绿色线为生成分布,下面的箭头线是采样区域。

    图(a)表示在训练开始时,生成器 G 是一个和真实数据类似的分布, D 能够区分一部分真假。

    图(b)表示训练判别器 D,使得能够很好的区分真假数据。

    图(c)表示更新生成器 G,更新后的D让生成数据更加接近真实数据。

    图(d)表示 G 和 D 达到一个平滑点,二者都不能提高,生成分布和真实数据完全一致,判别器无法区别。

    具体算法如下:


    Algorithm 1

    在学习早期,当 G 较差时,D 可以高置信度拒绝样本,因为它们与训练数据明显不同。在这种情况下,log(1−D(G(z))) 饱和。我们可以用最大化logD(G(z)) 训练 G。

    尽管如此,最初版的GAN还是很难训练,对此后来有很多工作进行了改进。

    在论文最后作者提出了对未来工作的期望,其中包括 conditional generative model,加入一些限制条件使得生成的内容更加可控,英伟达的 GauGAN 就是一个 conditional GAN。

    相关文章

      网友评论

        本文标题:论文笔记-Generative Adversarial Nets

        本文链接:https://www.haomeiwen.com/subject/cnbofrtx.html