【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下
今天将给大家介绍一个有趣的小工具—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 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 Lab内置的四种类型,如下图所示:
也可以自行使用绘图的功能“描绘”出想要的训练数据分布,选择第五种类型Draw one by yourself,在白板内勾画数据分布,然后点击apply即可,效果如下图所示:
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. 模型训练
把模型的结构、参数等信息设置完成后,即可在界面上方的控制台控制模型的训练过程。
第一个按钮Reset the model表示将模型完全重置,可重新设置参数。
第二个按钮Run/Pause training表示开始/暂停训练过程,训练过程可视化内容在不同的更新,同时数据流也会被展示出来。
第三个按钮Slow-motion mode表示进入慢动作模式,将其点亮为黄色后,GAN的运行流程可分步骤展示出来,在MODEL OVERVIEW GRAPH页面,只有当前步骤涉及到的节点和数据流会被明确展示出来,其他部分虚化显示,有助于理解GAN正向计算和反向传播运算流程,如下图所示分别为判别器和生成器的慢动作模式:
第四个按钮Train for one epoch可用于控制训练的节奏,即只训练一次,将其点亮为黄色后,可选择只训练一次Generator,或只训练一次Discriminator,或两者都分别训练一次Both,每点击一次都会进行一个epoch训练。
最后的epoch记录了目前为止模型的迭代训练次数。
在METRICS部分,记录了生成器和判别器的损失,同时还记录了两个分布的KL散度和JS散度(这里是通过网格化来计算),如下图所示。需要注意,METRICS部分的函数图像每经过2000次epoch才更新一次。
3. 可视化数据
在MODEL OVERVIEW GRAPH模块中,每个节点均被可视化。噪声Noise节点的样本(使用绿色表示)分布、训练数据集Real Samples节点的样本(使用紫色表示)分布、生成数据Fake Samples节点的样本(使用紫色表示)分布均被在二维平面清晰展示出来,如下图所示:
在生成器Generator节点,生成数据的流形会被可视化展示出来,紫色部分表示数据流形的范围,紫色程度的深浅表示了数据分布的概率高低,深紫色表示高概率,浅紫色表示低概率,如下图所示:
在判别器Discriminator节点,判别器的整体预测结果被用热图(hot map)的形式可视化地展示了出来,其中绿色部分表示判别器认为其为真实样本,绿色越深表示判别器输出越接近1;紫色部分表示判别器认为其为虚假样本,紫色越深表示判别器输出越接近0;白色部分表示判别器输出接近于0.5,也可理解为分类器的分类面,如下图所示:
在判别器的预测结果Prediction of Samples节点,每一个真实样本Real Samples和虚假样本Fake Samples经过判别器的输出结果被展示出来,其颜色意义与上相同。
在生成器的梯度Gradients节点,可视化结果将虚假样本即生成样本、梯度共同展示出来,用直线段指示出每个虚假样本计算得到的梯度方向,用线段的长度表示梯度的大小,如下图所示:
LAYERED DISTRIBUTIONS将真实样本、虚假样本、虚假样本的流形、判别器的结果图、虚假样本的梯度等5个节点共同展示在同一幅图中,如下图所示:
可以在LAYERED DISTRIBUTIONS模块调整显示的内容来进行有选择性地展示,只需在下方的介绍中单击real samples, fake samples, discriminator, generator, gradients等字样即可,字样下为实线表示节点的可视化内容会在LAYERED DISTRIBUTIONS中展示,为虚线则不展示,如下图所示:
4. 两个演示
我们举一个例子来看看如何通过GAN Lab来理解GAN的工作流程。首先,训练生成器会使虚假样本(紫色)向真实样本(绿色)靠拢,虚假样本的梯度也表明训练使得两个分布靠近,如下图所示:
接着,训练判别器,判别器不会对样本的分布产生影响,但是会对输出热图产生影响,如下图所示:
不断迭代更新,最后真实样本和虚假样本几乎重合,并且判别器在这些样本点的输出为0.5(白色),如下图所示:
另外,我们可对数据样本分析,理解模式崩溃问题,如下图所示,所有生成的虚假样本都聚到到一个点,生成器完全没有拟合真实样本的分布,这是可以通过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群
有三AI建立了一个GAN群,便于有志者相互交流。感兴趣的同学也可以微信搜索xiaozhouguo94,备注"加入有三-GAN群"。
另外,可关注作者本人知乎。
如何系统性学习GAN
有三AI公众号输出了大量的GAN相关的内容,关于如何系统性学习GAN,请大家参考往期文章。
【杂谈】如何系统性地学习生成对抗网络GAN
在有三AI知识星球网络结构1000变中包含大量GAN的各类应用和实战相关的内容,一些案例如下,感兴趣可以深入学习了解。
转载文章请后台联系
侵权必究
往期精选
【杂谈】有三AI知识星球最近都GAN了哪些内容?
【杂谈】GAN对人脸图像算法产生了哪些影响?
【杂谈】那些底层的图像处理问题中,GAN能有什么作为?
【完结】12篇GAN的优化文章大盘点,浓浓的数学味儿
【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)
【杂谈】除了生成图像(造假),GAN如何给目标检测,图像分割,图像增强等问题打辅助?
【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下相关推荐
- 基于PyTorch的GAN框架TorchGAN:用架构级API轻松定制GAN项目
机器之心报道 参与:刘晓坤 TorchGAN 是基于 PyTorch 的 GAN 设计开发框架.该框架旨在为流行的 GAN 提供构造模块,且允许为前沿研究进行定制化. 使用 TorchGAN 的模块化 ...
- python office插件_Office 数据可视化8大实用插件推荐
原标题:Office 数据可视化8大实用插件推荐 1.EasyCharts: http://easychart.github.io/post/Easycharts/ 作者:张杰 EasyCharts是 ...
- 「GAN」如何生动有趣地对GAN进行可视化?Google的GAN Lab请了解
今天将给大家介绍一个有趣的小工具-GAN Lab,这是一款对抗生成网络的可视化工具,对新手非常友好,有助于快速理解GAN的工作流程和原理. 作者&编辑 | 小米粥 编辑 | 言有三 GAN L ...
- GAN背后的理论依据,以及为什么只使用GAN网络容易产生
花了一下午研究的文章,解答了我关于GAN网络的很多疑问,内容的理论水平很高,只能尽量理解,但真的是一篇非常好的文章转自http://www.dataguru.cn/article-10570-1.ht ...
- 【百战GAN】自动增强图像对比度和颜色美感,GAN如何做?
大家好,欢迎来到专栏<百战GAN>,在这个专栏里,我们会进行算法的核心思想讲解,代码的详解,模型的训练和测试等内容. 作者&编辑 | 言有三 本文资源与生成结果展示 本文篇幅:65 ...
- 【GAN优化】如何选好正则项让你的GAN收敛
今天讲述的内容还是GAN的训练,也是最后一期,做几个简单的小实验,告诉大家怎么给GAN加正则项,使得你的GAN尽可能收敛.其实今天的内容本来还是与动力学结合很紧密,但是考虑到复杂的数学内容可能有害无益 ...
- 【GAN模型结构】从最简单的全卷积GAN一起开始玩转GAN
大家好,今天开设新专栏<GAN模型结构>.在这个专栏中,我们会讲述各种各样的GAN的网络结构及其在各类任务中的应用. 作者&编辑 | 言有三 三年前GAN刚出来的时候就开始关注GA ...
- GAN系列:代码阅读——Generative Adversarial Networks 李宏毅老师GAN课程P1+P4
看了一上午简直要头疼死.GAN之前没接触过,学习的时候产生了很多乱七八糟的联想.从上篇文章开始,很多内容都是自己的理解,估计有很多错误,以后学习中发现了可能会回来修改的. 找的是机器之心i的代码:ht ...
- 李弘毅老师GAN笔记(一),对抗生成网络(GAN)简单介绍
更新: 原文已经搬运至网站:https://www.link2sea.com/archives/388,后续也将在该网站进行更新. 查看博主更多文章请前往:https://www.link2sea.c ...
最新文章
- 程序员薪资两极分化,如何成为高薪程序员?
- html提交表单原理,HTML表单、HTTP Get与Post杂谈
- 《Scala机器学习》一一第3章 使用Spark和MLlib
- AC日记——[HNOI2008]玩具装箱toy bzoj 1010
- 计算两个数的乘积java编写_Java模拟计算机的整数乘积计算功能示例
- k8s配置以使得pod可以运行于master上
- python爬图mzitu_小白学 Python 爬虫(16):urllib 实战之爬取妹子图
- 微信支付商家转账到零钱功能使用教程
- 日志审计与分析实验4-1(掌握Linux下安装、删除软件的方法)
- 仿钉钉考勤统计圆形控件
- oracle季度日均怎么算,求日均值,该如何处理
- 水晶报表中几种交叉表的实现方法 (作者阿泰)
- 计算机限制打开外接硬盘,在win7中,为什么打开磁盘出现限制提示?
- 电脑配件 - 如何选择电脑显示屏幕 - 学习/实践
- vue 页面导出excel表格,提示excel文件损坏
- 物联卡如何提高安全等级
- 电机驱动芯片--DRV8824 DRV8825
- 十分钟接入iOS 12新特性——Siri Shortcuts
- 机器视觉库之detectron2安装及使用详解
- 发现新鲜的画法,文艺极简水彩线描简笔画植物:草叶集(一)