虽然自己很早就接触到了GAN,但是基本上都是停留在了解基本概念的阶段。如果别人问我什么是GAN,我可能会说:首先大家都知道GAN有两个网络,一个是generator,一个是discriminator,从二人零和博弈中受启发,通过两个网络互相对抗来达到最好的生成效果。如果在具体一点,可能会列举警察和小偷的故事,警察尽量判断是否为真,小偷尽量蒙骗警察。但是总是感觉缺少点什么,如果别人问我,为什么GAN难以训练?为什么会出现Mode Collapse?为什么GAN最后是优化一个JS距离? WGAN以及WGAN-GP是解决什么问题?其实在这之前这些问题我是基本上没有想过的,但是最近面试时候被问到GAN时候自己总是没有很大信心,所以趁着这个中秋好好的把GAN的原理深究一下。现在看来,一个简单的公式背后是存在巨大的原理的,另一个网络的出现并不是凭空出现的,而是解决前人的问题。带着这些疑问,我踏了重新认识GAN的历程。
因为GAN的公式很多,所以我只能贴一下最近我看的一些比较好的文章,可以供大家参考。
1. 认识GAN & 以及背后的原理
参考:GAN原理学习笔记
学习这篇博客之后,你至少需要回答以下几个问题。自己思考
- 判别模型和生成模型区别?
- 从最大似然到最小化KL距离历程,如何推导?
- GAN公式max D,min G的推导? 为什么结果是一个JS距离?
- GAN的训练过程是怎么样的?为什么一个是梯度上升,一个是梯度下降?
- 更新G的时候,不要更新G太多?这是为什么?
- 为什么出现改进的G损失?
- 为什么训练时候损失函数等于0?出现梯度消失?(这篇文章暂时只能解决一部分答案)
- 出现Mode Collapse原因? (可能也是不正确的)
2. 认识WGAN
参考: 令人拍案叫绝的Wasserstein GAN
学习这篇博客之后,你至少需要回答以下几个问题。自己思考
- 原始GAN究竟出了什么问题?
- 二种不同的损失函数分别带来什么问题?
- 出现生成器梯度为0的本质是什么?
- 出现Mode Collapse原因?比较具体
- WGAN之前的一个过渡解决方案
- 计算列子中的KL,JS,Wasserstein距离
- Wasserstein距离的优越性质
- 从Wasserstein距离到WGAN
- Lipschitz是什么?
- weight clipping 为什么可以保证Lipschitz连续?
3. 认识WGAN-GP
参考: Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
学习这篇博客之后,你至少需要回答以下几个问题。自己思考
- weight clipping的实现方式存在两个严重问题?是什么
- gradient penalty是什么?是如何保证Lipschitz连续?
- 和DCGAN区别是什么?
4. 下面就是一些个人感觉比较好的文章和博客
由于GAN在不同的领域都有很多的使用,上面的文章可能都是二年之前的,只能说是了解一些基本的概念,可能还是需要读者朋友继续阅读一些新的文章。
- GAN万字长文综述
- IEEE Access,2019: Recent Advances of Generative AdversarialNetworks in Computer Vision
- GAN原理"潜"析
- 【GAN货】进阶预备知识
- 李宏毅机器学习2016 第十六讲 生成对抗网络 GAN
后面的话如果遇到比较好的GAN的文章,可能会继续贴到这里。
对问题理解可浅可深,不仅需要知其然还要知其所以然,知道它为什么好比知道它好更可贵。