GAN的初略理解

结合李宏毅老师机器学习2021——GAN课程和网上查阅的资料,总结一下对GAN的理解

GAN的本质是什么

  GAN本质是分布的拟合。 详细说就是,把输入的向量拟合成特定的分布。例如,输入一个随机向量,另外给一堆二次元图像,要求将这个随机向量生成二次元的头像,其实就是将这个向量,拟合为二次元的分布形式,训练完成后生成的图片与真实的二次元图片是分不开的(很相似)。因此它的本质还是一个拟合问题。

  • GAN真的创造新的信息了吗?

  我认为是没有的。因为它的本质只是一个学到了原始数据分布的生成模型,所生成的图片也只是从学到的分布中采样得到的而已
  更详细的解释:我们需要一个生成模型来生成真实的样本,最简单的方式是获得真实样本的分布,然后随机取值从分布中抽取,就可以得到真实的样本了。但是我们不知道这个真实的分布是什么,所以我们用神经网络来模拟它->得到了生成器G。生成器生成样本之后,我们不知道该如何判断这个样本是不是真实的,所以我们再次用一个神经网络来模拟它->得到了判别器D。理想条件下,G可以完美模拟真实样本的分布,生成的每一张图都是真的,不在库中的,但他们是同一个分布。所以我不认为GAN真的创造了新的信息。
参考知乎:https://www.zhihu.com/question/315259993

GAN是怎么工作的,它和RL(Reinforcement Learning)有何联系?

  • GAN的工作方式?
      GAN全称是生成对抗网络,由一个生成器和一个判别器组成。随机向量经过生成器后,生成了某一张图像,判别器判断该图像与样本图像是否属于同一类(例如都是二次元)。生成器的目的就是骗过判别器,判别器的目的就是识别出来生成的图像与实际图像的区别。就这样反反复复的生成、对抗,使得生成器越来越完美。生成器最终的意义在于,输入一个随机向量,输出一个符合特定分布的向量。因为我们输入的随机向量是通过采样得到的,因此生成的随机向量也可以认为是从学到的分布中采样得到的而已。
      我们不知道这个真实的分布是什么,所以我们用神经网络来模拟它->得到了生成器G。生成器生成样本之后,我们不知道该如何判断这个样本是不是真实的,所以我们再次用一个神经网络来模拟它->得到了判别器D。
  • GAN与RL的联系?
      回答这个问题之前,需要先了解RL的工作方式。RL是机器根据当前环境的reward后改变模型,然后执行下一步action,循环下去。GAN是生成了新的图片,然后判别器判断图片行不行,然后去改进生成器。从直观上感觉这两个之间是有一定联系的。RL是根据环境的reward,执行下一步action,GAN是生成数据然后根据判别器改生成器。因此我们是否可以认为GAN是近似的一种逆强化学习呢(GAN可以看成生成器生成一个action,然后判别器给出这个action的reward,是一种逆向的)?

GAN是怎么求LOSS的?

  假设PG是生成器生成的分布,Pdata是原始数据的分布。GAN的损失函数,就是 PG 跟 Pdata 的 Divergence,就是它们两个分布之间的距离,它们两个越近,那就代表这个生成出来的 PG 跟 Pdata 越像,所以 PG 跟Pdata,我们希望它们越相像越好。因此问题转换为,我们怎么求他们之间的分布距离。

  • 最原始的方法是通过 J-S散度 求解,也就是下面的公式。
    在这里插入图片描述在这里插入图片描述
      其实这个很好理解,我们希望判别器D在Pdata上尽可能都判别为真(因为都是对的,所以loss(D)就小),因此公式中第一项就小,而判别器D在生成器中都判别为假,因此loss(D)就大,不过通过1-D(y)的操作后,也就小了。因此这个公式意义就在于,判别器在真实分布中都判别为真,在生成分布中都判别为假。

    GAN的Pytorch代码参考:
    https://blog.youkuaiyun.com/junbaba_/article/details/106185743
    https://blog.youkuaiyun.com/iice_dream/article/details/87935793

  • 然而原论文中J-S散度存在一个问题:JS Divergence 有个特性,是两个没有重叠的分布,JS Divergence 算出来,就永远都是 Log2,不管这两个分布长什麼样,所以两个分布只要没有重叠,算出来就一定是 Log2。
    但是我们希望,如果这两个分布很相近的话,那是可以显示出来的,所以这个JS散度有很大局限性。基于此,有一种叫做WGAN的方法被提出。WGAN 实际上就是用,当你用 Wasserstein Distance,来取代 JS Divergence 的时候,这个 GAN 就叫做 WGAN。
      接下来你会遇到的问题就是,Wasserstein Distance 是要怎么算,Pdata 跟 PG,它的 Wasserstein Distance 要怎么计算,这边怎么计算就不讲过程,直接告诉结果,解下面这个 Opimilazion 的 Problem,解出来以后你得到的值,就是Wasserstein Distance
    在这里插入图片描述
      y 如果是从 Pdata 来的,那我们要计算它的 D(y) 的期望值;y 如果是从 PG 来的,我们计算它的 D(y) 的期望值,但是前面乘上一个负号。但是这边还有另外一个限制,它不是光大括号裡面的值变大就好,还有一个限制是,D 不能够是一个随便的Function,D必须要是一个 1-Lipschitz 的 Function。
      那么具体参考的代码和一些代码中的限制条件,参考:https://blog.youkuaiyun.com/qq_41433002/article/details
    https://blog.youkuaiyun.com/junbaba_/article/details/106185743

Evalution可能会出现的问题:

我们如何判断生成的图片(或其他向量)的好坏呢,当然我们直接看图片可以,但是这种方法太主观了,因此我们需要像一些办法做评估(evalution)

  • Mode Collapse: 模式坍塌
      你会发现说 Generative Model,它输出来的图片来来去去,就是那几张 在这里插入图片描述
      那为什么会有 Mode Collapse,这种现象发生,就直觉上你还是比较容易理解,你可以想成说,这个地方就是 Discriminator 的一个盲点,当 Generator 学会生成这种图片以后,就可以永远的骗过 Discriminator,Discriminator 没办法看出这样子的图片是假的,这是一个 Discriminator 的盲点,Generator 会抓到这个盲点就硬train一发,就发生 Mode Collapse 的状况。
  • Mode Dropping: 模式下降(但我更愿意翻译为模式遗漏、模式缺失
    在这里插入图片描述
    Mode Dropping 的意思是说,你的真实的资料分布可能是上图这个样子,但是你的生成出来的资料,只有真实资料的一部分,单纯看生成出来的资料,你可能会觉得还不错,而且分布,它的这个多样性也够;但你不知道说真实的资料,它的多样性的分布,其实是更大的。
  • 评估方式
      目前针对上述两种情况依然没有很好地解决思路。目前评估GAN生成图片的好坏,有一种叫做 Inception Score 的方法,该方法主要取决于两个评价指标,一个是生成质量,另一个生成多样性。
      评估生成质量时看一张图片,该图片属于各个类型的占比(肯定是某一种类别的占比越高越好);评估多样性时看一堆图片,这一堆图片属于哪些种类(肯定是这一堆图片分散的越均匀越好)
      此外,还有其他评估方法,例如FID等等,有机会再去探索,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值