专栏《GAN的优化》(第一季)正式完结啦!
在这一季里,我们从生成模型出发,讲述了GAN的基本理论,包括工作原理,更具有普适性的f散度度量和Wasserstein距离,以及IPM框架并顺带给出了一个处理WGAN的莱布尼茨限制的优雅解决方法;接着介绍了GAN训练困难的原因以及几个训练技巧;然后从动力学视角出发探索GAN的训练,将GAN与动力学方程联系在一起,讲述了一致优化,并总结了各种GAN的正则项的优劣;最后我们讲了一下GAN中的模式崩溃问题,并介绍了几个比较好的解决方案。
至此,我们再对整个GAN的优化专栏第一季的内容进行一个大总结!
作者 | 小米粥 言有三
编辑 | 言有三
1 GAN原理
第一篇文章首先讲一部分关于生成模型的内容,从极大似然法到显式的定义概率密度函数到隐式定义概率密度函数的GAN。接着在GAN中,我们介绍了基本结构,工作原理,推导了几个基本结论,并从分布度量和博弈论两个角度阐述了GAN。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/541359db377839ffbd5d92c12c0c9b54.png)
2 f-GAN
第二篇文章向大家介绍了概率密度函数的距离、由f散度定义的一系列距离、共轭函数,之后推导了如何使用fGAN生成原始的GAN,最后阐述了KL散度和JS散度的一些问题。fGAN是一个具有一定“通用”意义的模型,它定义了一个框架,从这个框架中可以自然而然得衍生出其他GAN模型。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/2356df4c876c9bac31dc78cdb91f363f.png)
3 WGAN和SNGAN
第三篇文章带大家领略了一下WGAN,首先指出了之前f散度的问题,接着介绍了一种新的距离度量Wasserstein距离,并展示了使用对偶方法转化Wasserstein距离,WGAN是一个具有重要里程碑意义的模型,非常值得反复研究。
第四篇文章带领大家一起学习了SNGAN,学习了特征值和奇异值相关问题,学习如何使用谱范数解决1-Lipschitz限制,并推导了SNGAN,最后给出了一个快速求解矩阵最大奇异值的方法。SNGAN是比较重要而且优雅得解决1-Lipschitz限制的方案。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/6aea88870d8bcf730100edbe6395c9a5.png)
4 IPM
第五篇文章向大家介绍了GAN的IPM框架。关于GAN的目标函数,除了f-divergence外还有另一大类:IPM,非常熟悉的WGAN便是属于IPM框架下的一种GAN,IPM(integral probability metric)也是一种对于两个概率分布之间的距离的度量,我们在这篇文章中选择不同的函数集合F而得到不同GAN,例如FisherGAN,MMDGAN,MCGAN。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/23f027280b4ef1f6e61947b8ac949295.png)
5 训练问题
第六篇文章重点讲述了GAN训练中4个问题。第一个部分介绍了最优判别器引发的梯度消失问题,第二部分使用一个例子介绍距离计算时的问题,接着第三部分将介绍优化问题的困惑以及给出模式崩溃一个简单解释,最后一部分简单谈一下参数空间的问题。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/7bfbaa043ba8d8eaa4b9b0648faec2be.png)
6 训练小技巧
第七篇文章主要向大家介绍了GAN训练时的一些tricks。GAN的训练其实是一个寻找纳什均衡状态的过程,然而想采用梯度下降达到收敛是比较难的,先讲述了GAN的纳什均衡状态以及达到此状态的难点,然后介绍了特征匹配、历史均值、单侧标签平滑等几个技巧,可以尽量保证GAN进入收敛的状态。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/fb3c11cf65d9b3b513f2792bdae43ef4.png)
7 GAN与动力学
第八篇文章带大家领略了GAN与动力学的结合,这篇文章首先介绍了常微分方程以及如何使用欧拉法得到常微分方程的数值解,接着描述了欧拉法与动力学系统之间的内在联系,然后从动力学的系统重新看梯度下降算法,最后从动力学视角重新表述了GAN,提供一个新颖的视角,这是接下来两篇分析GAN训练过程的理论基础。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/960a4c919fdaa79885aa812bda369592.png)
8 一致优化
第九篇文章介绍了一个非常优雅的GAN优化算法,一致优化。先从一个关于动力学系统收敛的重要命题出发,将其与GAN对接起来,然后进入动力学系统的特征值分析,最后介绍一致优化的所提出的正则项,而且最重要的是,这里给出了一定条件下,使用一致优化算法可收敛到纳什均衡状态的理论保证。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/6fca5cf6aae775f38ba5a58885ef7260.png)
9 GAN的正则项
第十篇文章里用了一个非常简单且直观的Dirac-GAN进行实验收敛性,首先说明了标准的GAN或者WGAN是无法收敛到纳什均衡的,需要添加正则项。接下来,WGAN-GP也无法收敛,而一致优化正则项和zero centered gradient可以实现收敛,这为我们提供了很好的训练GAN的启示指导。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/08ab19b49600b55e8a0d743008cdc5bd.png)
10 模式崩溃
第十一篇文章首先讲了GAN的模式崩溃问题,并用一个简单的例子做了过程示意,接着重点描述了通过修改目标函数来解决模式崩溃的方法,着重介绍了unrolled GAN的思想,并同样进行了过程示意描述,最后又比较简单地描述了另一种方案:DRAGAN。
第十二篇文章首先将说明模式崩溃问题的本质是GAN无法通过训练达到最优纳什均衡状态,并介绍两种解决模式崩溃问题的思路:修改目标函数和网络结构,然后介绍了一种简单而有效的解决方案MAD-GAN,最后一部分给出MAD-GAN的强化版本MAD-GAN-Sim。
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/522797f0872dd4d90f4b29426cc0858f.png)
总结
12篇文章,说多不多,说少也不少,真的是花了自己非常大的心血,质量不敢说多高,但是自己确实是在认认真真、绞尽脑汁做这件事情。同时也非常感谢
有三AI,给了我一个写东西的平台,感谢给我的宽松自由的环境。
要忙于实验、论文,忙于其他的事情,公众号的部分暂时就先写到这里吧,其实,关于GAN的知识内容非常非常多,远非几篇文章能描述,每次涉及到到的内容我也只能浅尝辄止,或者选择具有代表性的内容聊一聊。
说一下,关于GAN的其他内容,网络结构或者隐空间,应用等等之类,我以后还会继续涉及到,之前相关内容也会加强完善,可能会用别的形式展示出来,敬请期待。
Ps:大家一定要持续关注有三AI哦!