生成对抗网络入门指南(第2版)
上QQ阅读APP看书,第一时间看更新

3.3 GAN的可视化理解

本节我们用一个可视化概率分布的例子来更深入地认识一下GAN。Ian的原文[1]中给出了这样一个GAN的可视化实现的例子。图3-10中的点线为真实数据分布,实线为生成数据样本,在这个例子中的目标在于,让实线(也就是生成数据的分布)逐渐逼近点线(代表的真实数据分布)。

000

图3-10 GAN可视化理解

虚线为GAN中的判别器,在实验中我们赋予了它初步区分真实数据与生成数据的能力,并对于它的划分性能加上一定的白噪音,使得模拟环境更为真实。输入域为z(图3-10中下方的直线),在这个例子里默认为一个均匀分布的数据,生成域为x(图3-10中上方的直线)为不均匀分布数据,通过生成函数x = G(z)形成一个映射关系,正如图3-10中的那些箭头所示,将均匀分布的数据映射成非均匀数据。

从图3-10a~图3-10b的四张图可以展现出整个GAN的运作过程。在图3-10a中,可以说是一种初始的状态,生成数据与真实数据还有比较大的差距,判别器具备初步划分是否为真实数据的能力,但是由于存在噪声,效果仍有缺陷。图3-10b中,通过使用两类标签数据对于判别器的训练,判别器D开始逐渐向一个比较完善的方向收敛,最终呈现出图中的结果,最终判别器的形式为000。当判别器逐渐完美后,我们开始迭代生成器G,如图3-10c所示。通过判别器D的倒数梯度方向作为指导,我们让生成数据向真实数据的分布方向移动,让生成数据更容易被判别器判断为真实数据。在经过上述一系列训练过程后,生成器与判别器会进入图3-10d所示的最终状态,此时pg会非常逼近甚至完全等于pdata,当达到理想的pg = pdata时,DG都已经无法再更进一步优化了,此时G生成的数据已经达到了我们的预期,能够完全模拟出真实数据的分布,而D在这个状态下已经无法分辨两种数据分布(因为它们完全相同),此时000

GAN Lab[1]是佐治亚理工学院的可视化团队开发的一款帮助理解GAN工作原理的可视化工具(见图3-11),读者可以登录该网站体验GAN训练的动态过程。在训练中随着迭代次数的上升,生成器所产生的样本分布会逐渐逼近真实数据的分布,整个过程非常直观明了。

000

图3-11 GAN Lab可视化工具


[1] https://github.com/poloclub/ganlab