GAN入门实践

看到最近GAN特别特别的火,上周在组会就心血来潮的讲了一下GAN的相关论文,然后用现成的轮子DCGAN看看效果如何


训练集是我论文里的钙化图片

GAN入门实践_第1张图片


然后让它先训练= =,我们来喝茶唠唠嗑,看看GAN干了啥


GAN的想法非常的直接暴力


GAN入门实践_第2张图片

生成器负责生成假图片,判别器负责辨别图像真假

GAN入门实践_第3张图片

第一个式子就是生成器和判别器的损失函数,用的是逻辑回归的损失,判别式要求这个式子极大,生成器要求这个式子极小,于是就有了对抗一说

DCGAN就是在这个式子的基础之上套上了CNN的模型,其中模型的设计上加入了很多作者认为有用的trick


而第二个式子则是对原有式子的一个约束,加入了约束项l,这个l可以是标签,也可以是其他的东西,conditional GAN的作者是希望我们生成的东西不那么没有规律。而laplacian GAN在这个基础上又套上Laplacian的概念,希望我们的约束是逐层的,而不是一次性的。


我们看看刚才的训练结果

GAN入门实践_第4张图片


看上去还不错,在低分辨率的情况下来看其实看不出与真实样本的差别,但是确实出现了WGAN那篇论文针对DCGAN提出的问题,我们可以看到有些样本长得太雷同了,当然这与我本来喂给它的数据集不大也有关系(我喂的数据集就只有200张>﹏<


WGAN指出了DCGAN的问题其实不是DCGAN的问题,而是GAN的问题,我们来看之前GAN的损失函数

在对分辨器D训练的时候,我们固定生成器G,对D求偏导让它等于0,等到D*,然后再固定D对G求偏导,代入D*


问题来了,如果判别器训练得太好,那么上面这个式子会等于0,梯度弥散了(;′⌒`)

(不过我训练了几个不同的数据集,且训练集大小不一,发觉实际好像没这问题,可能训练的时候batch选得小吧o(* ̄▽ ̄*)ブ

其2,我们再来看生成器的损失函数,其实就是后面那撮,前面那撮在固定了判别器后它也是固定的

联系上面那个式子再应该一顿瞎比操作

竟然得出了生成器的损失函数偏导后的形式竟然是KL散度与JS散度相减的情况(⊙ˍ⊙)


这个式子前后矛盾还不要紧,主要是KL散度的极值对于生成样本的影响,对生成不真实的样本惩罚极大,但对于真实的样本惩罚又很小,导致了生成器为保全自己生成样本的正确性,而不去生成新的样本,这~不符合我们对艺术的追求啊!!

于是乎作者推出了推土机(就是WGAN中W那个单词的意思)函数作为它们的损失函数

对不起,后面我没看懂。。。等我哪天看懂了再跟你们扯淡。。。(:溜


参考的论文,博客:

https://zhuanlan.zhihu.com/p/24767059?utm_source=weibo&utm_medium=social

Goodfellow I J, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets[C]// International Conference on Neural Information Processing Systems. MIT Press, 2014:2672-2680.

Mirza M, Osindero S. Conditional Generative Adversarial Nets[J]. Computer Science, 2014:2672-2680.

Radford A, Metz L, Chintala S. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. Computer Science, 2015.

Denton E, Chintala S, Szlam A, et al. Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks[J]. Computer Science, 2015.

Arjovsky M, Chintala S, Bottou L. Wasserstein GAN[J]. 2017.


你可能感兴趣的:(小结,实践)