新知一下
海量新知
6 3 0 1 7 4 1

【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

有三AI | 三人行,必有AI 2020/03/10 09:11

今天将给大家介绍一个有趣的小工具—GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理。

GAN Lab是谷歌开发的一款开源的GAN可视化工具,使用GAN Lab不需要安装过程、不需要深度学习库PyTorch或TensorFlow等、也不需要专门硬件GPU,通过网页浏览器(推荐 Chrome)就可以打开,网址为:

https://poloclub.github.io/ganlab/

如果对源码感兴趣,可访问github自行学习:

https://github.com/poloclub/ganlab/

用户可以利用 GAN Lab交互地训练生成模型并可视化动态训练过程的中间结果,用动画来理解 GAN 训练过程中的每一个细节,画面简洁美观,笔者认为这是GAN可视化工具中整体效果最好的,其主体界面如下:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

GAN Lab主体包括三个部分:MODEL OVERVIEW GRAPH、LAYERED DISTRIBUTIONS、METRICS,其中MODEL OVERVIEW GRAPH将GAN模型可视化为图片,展示了GAN的基本结构、数据流,将输入输出数据进行了可视化;LAYERED DISTRIBUTIONS可视化了真实样本、生成器生成样本、生成器梯度等内容;METRICS记录了迭代训练过程中的分布距离的度量。

1. 设置模型

首先,在界面的最上方,我们可以选择不同的数据分布。需要强调的是:可视化工作只能在不超过三维的维度上展示,维度超过三维的数据无法全面展示,故整个GAN Lab中的噪声noise、训练样本real samples、生成样本fake samples均为二维数据。部分关于GAN的实验结果可能与数据维度有关,这在GAN Lab中是无法得到体现的。

为了画面简洁,一些模型参数的调整按钮是被隐藏的,若要将其完全显示出来,请务必将MODEL OVERVIEW GRAPH旁的编辑按钮点亮为黄色。

对于噪声noise的分布,可以选择1D 高斯分布、1D均匀分布、2D高斯分布、2D均匀分布,其中1D 表示样本只在一个维度上表现为高斯/均匀分布,另一个维度保持为定值。当把鼠标放置到生成器Generator上时,GAN Lab会展示出从噪声空间转换成生成数据流形的动态过程,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

对于训练数据的分布,可以选择GAN Lab内置的四种类型,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

也可以自行使用绘图的功能“描绘”出想要的训练数据分布,选择第五种类型Draw one by yourself,在白板内勾画数据分布,然后点击apply即可,效果如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

GAN Lab提供的GAN是最简单的GAN,它只支持单生成器单判别器的结构,并且两者均为全连接层,对生成器Generator可设置隐层(hidden layers)的数目以及每个隐层内的神经元(neurons)的数目。若为了简单,可使用已经训练好的模型,只需在页面上方选择use pre-trained model即可。

对于损失函数,GAN Lab提供了Log loss和LeastSq loss,其中前者为原始版本的GAN中的目标函数,后者为最小二乘GAN中的目标函数。

对于生成器和判别器的迭代次数,可以分别设置在每一轮迭代中,生成器/判别器需要训练的次数,手动调整updates per epoch即可。

对于优化算法,GAN Lab对生成器和判别器均提供了SGD和Adam两种算法,只需在Optimizer中选择即可,每种算法均可设置不同的学习速率,在Learning rate中选择即可。

2. 模型训练

把模型的结构、参数等信息设置完成后,即可在界面上方的控制台控制模型的训练过程。

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

第一个按钮Reset the model表示将模型完全重置,可重新设置参数。

第二个按钮Run/Pause training表示开始/暂停训练过程,训练过程可视化内容在不同的更新,同时数据流也会被展示出来。

第三个按钮Slow-motion mode表示进入慢动作模式,将其点亮为黄色后,GAN的运行流程可分步骤展示出来,在MODEL OVERVIEW GRAPH页面,只有当前步骤涉及到的节点和数据流会被明确展示出来,其他部分虚化显示,有助于理解GAN正向计算和反向传播运算流程,如下图所示分别为判别器和生成器的慢动作模式:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

第四个按钮Train for one epoch可用于控制训练的节奏,即只训练一次,将其点亮为黄色后,可选择只训练一次Generator,或只训练一次Discriminator,或两者都分别训练一次Both,每点击一次都会进行一个epoch训练。

最后的epoch记录了目前为止模型的迭代训练次数。

在METRICS部分,记录了生成器和判别器的损失,同时还记录了两个分布的KL散度和JS散度(这里是通过网格化来计算),如下图所示。需要注意,METRICS部分的函数图像每经过2000次epoch才更新一次。

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

3. 可视化数据

在MODEL OVERVIEW GRAPH模块中,每个节点均被可视化。噪声Noise节点的样本(使用绿色表示)分布、训练数据集Real Samples节点的样本(使用紫色表示)分布、生成数据Fake Samples节点的样本(使用紫色表示)分布均被在二维平面清晰展示出来,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

在生成器Generator节点,生成数据的流形会被可视化展示出来,紫色部分表示数据流形的范围,紫色程度的深浅表示了数据分布的概率高低,深紫色表示高概率,浅紫色表示低概率,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

在判别器Discriminator节点,判别器的整体预测结果被用热图(hot map)的形式可视化地展示了出来,其中绿色部分表示判别器认为其为真实样本,绿色越深表示判别器输出越接近1;紫色部分表示判别器认为其为虚假样本,紫色越深表示判别器输出越接近0;白色部分表示判别器输出接近于0.5,也可理解为分类器的分类面,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

在判别器的预测结果Prediction of Samples节点,每一个真实样本Real Samples和虚假样本Fake Samples经过判别器的输出结果被展示出来,其颜色意义与上相同。

在生成器的梯度Gradients节点,可视化结果将虚假样本即生成样本、梯度共同展示出来,用直线段指示出每个虚假样本计算得到的梯度方向,用线段的长度表示梯度的大小,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

LAYERED DISTRIBUTIONS将真实样本、虚假样本、虚假样本的流形、判别器的结果图、虚假样本的梯度等5个节点共同展示在同一幅图中,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

可以在LAYERED DISTRIBUTIONS模块调整显示的内容来进行有选择性地展示,只需在下方的介绍中单击real samples, fake samples, discriminator, generator, gradients等字样即可,字样下为实线表示节点的可视化内容会在LAYERED DISTRIBUTIONS中展示,为虚线则不展示,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

4. 两个演示

我们举一个例子来看看如何通过GAN Lab来理解GAN的工作流程。首先,训练生成器会使虚假样本(紫色)向真实样本(绿色)靠拢,虚假样本的梯度也表明训练使得两个分布靠近,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

接着,训练判别器,判别器不会对样本的分布产生影响,但是会对输出热图产生影响,如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

不断迭代更新,最后真实样本和虚假样本几乎重合,并且判别器在这些样本点的输出为0.5(白色),如下图所示:

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

另外,我们可对数据样本分析,理解模式崩溃问题,如下图所示,所有生成的虚假样本都聚到到一个点,生成器完全没有拟合真实样本的分布,这是可以通过GAN Lab体现出来的。

新知达人, 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下

GAN Lab是目前已知的一款非常优秀的GAN可视化软件,简单生动,适合于入门,但对于难度较高的问题,由于各种限制,它还无法做到完全的可视化。

[1]Minsuk K , Nikhil T , Polo C D H , et al. GAN Lab: Understanding Complex Deep Generative Models using Interactive Visual Experimentation[J]. IEEE Transactions on Visualization and Computer Graphics, 2018:1-1.

总结

这一部分给大家介绍了一个有趣的小工具—GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理。

更多“GAN”相关内容

更多“GAN”相关内容

新知精选

更多新知精选