最近要用到,但是一点基础都没有,故开个文章记录一下笔记
目录
GAN
参考
文章
[1406.2661] Generative Adversarial Networks (arxiv.org)
代码
GAN是属于机器学习中generative中的implicit model的一种。
Generative体现在:GAN并不能计算数据真实分布的公式,也就是不能计算概率,但它能根据学习到的数据真实分布来生成一个样本 。
implicit体现在:它的模型是通过网络层实现的,并不是一个确定的数学公式,好比高斯分布等。
VAE,GAN这些生成模型终极目标是模拟数据的真实分布,模拟的好坏自然得有个测距公式来计算:
- VAE里面是用KL divegence来计算两个分布的距离。
- GAN里面可以理解成是用Jessen-Shannon divegence来计算两个分布的距离。
我们常说GAN是一个min-max训练过程,所谓的max其实是对应着鉴别网络,目的是为了训练鉴别网络让其等同于最优JS divence的作用,然后在这个最优的测距网络下,min生成网络。
DCGAN
文章
WGAN
参考
令人拍案叫绝的Wasserstein GAN - 知乎 (zhihu.com)
文章
[1701.04862] Towards Principled Methods for Training Generative Adversarial Networks (arxiv.org)[1701.07875] Wasserstein GAN (arxiv.org)
代码
GitHub - martinarjovsky/WassersteinGAN
现在要说到WS-GAN了,它的最大贡献是(个人观点)指出了KL,JS等这些测距工具都有一个缺点,那就是不连续性,意思就是两个分布的差距是跳跃的,不是连续的,这就导致训练鉴别网络时很不稳定,然后作者提出了WS divegence这个测距工具,WS算出来的两个分布的差距是连续的, 用它来代替鉴别网络(撤换掉sigmoid等),因为是连续,所以训练的时候你可以很清晰的看到鉴别网络的loss是逐步的减小,整个训练过程稳定下来了。