今天将给大家介绍一个有趣的小工具—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」如何生动有趣地对GAN进行可视化?Google的GAN Lab请了解相关推荐

  1. 2017,人们视算法为「洪水猛兽」;算法说:我不想背锅

    编译 | 陈韵竹 作者 | Tom Simonite 来源 | Wired 穆罕默德·本·穆萨·阿尔·花剌子模是公元九世纪的一位波斯学者.在阿尔·花剌子模逝世的数个世纪之后,他的作品引领欧洲进入小数和 ...

  2. 从支付宝「蜻蜓」布局看线下支付场景的想象空间...

    4月17日,支付宝发布第二代基于线下消费场景的刷脸支付机具「蜻蜓」.和去年12月推出的首代「蜻蜓」相比,二代「蜻蜓」在价格和外观方面取得了显著提升.(详情请查阅文末雷锋网报道:未来三年投30亿,支付宝 ...

  3. 从支付宝「蜻蜓」布局看线下支付场景的想象空间

    4月17日,支付宝发布第二代基于线下消费场景的刷脸支付机具「蜻蜓」.和去年12月推出的首代「蜻蜓」相比,二代「蜻蜓」在价格和外观方面取得了显著提升.(详情请查阅文末雷锋网报道:未来三年投30亿,支付宝 ...

  4. 初识「零知识」与「证明」

    副标题:探索零知识证明系列(一) 作者:郭宇 本文已更新至Github: https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/1 ...

  5. 「杂谈」如何系统性地学习生成对抗网络GAN

    文/编辑 | 言有三 作为被誉为"下一代深度学习技术",同时已经在工业界能够真正成熟稳定应用的GAN,有三AI公众号很早之前就开始关注相关内容,从理论到实践都做出了一些总结,并且在 ...

  6. 换脸效果媲美GAN!一文解析OpenAI最新流生成模型「Glow」

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  7. 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

    生成对抗网络 – Generative Adversarial Networks | GAN 文章目录 GAN的设计初衷 生成对抗网络 GAN 的基本原理 GAN的优缺点 10大典型的GAN算法 GA ...

  8. GAN掉人脸识别系统?GAN模型「女扮男装」

    文章来源 新智元 编辑:LRS [新智元导读]人脸识别技术最近又有新的破解方式!一位斯坦福的学生使用GAN模型生成了几张自己的图片,轻松攻破两个约会软件,最离谱的是「女扮男装」都识别不出来. 真的有人 ...

  9. 「杂谈」GAN如何给目标检测,图像分割,图像增强等问题打辅助?

    作者&编辑 | 言有三 1 GAN与目标检测 目标检测估计是计算机视觉领域里从业者最多的领域了,其中的小目标,大姿态等都是经典难题,GAN在其中真的是很有作为的,我们已经开始整理. Findi ...

最新文章

  1. 几何画板论坛_伯中班主任论坛丨用爱守护生命的成长
  2. APP-SQLAP-10771
  3. 实验一 线性表、堆栈和队列的操作与实现
  4. 用的fileupload组件实现的大文件上传
  5. DOM之事件高级(附实例、图解)
  6. UVa 483 - Word Scramble
  7. can test 接收报文_电动汽车国标充电报文解析及应用
  8. 学习笔记:AGPS-SUPL架构
  9. 压力传感器原理与组成
  10. 我的团长我的团——真正的中国军人
  11. 如何删除Mac电脑中的第三方字体?
  12. 假期无聊,我用傅里叶变换做了一个频率计,吉他定调口哨定音,样样好使!
  13. phpMyadmin /scripts/setup.php Execute Arbitrary PHP Code Via A Crafted POST Request CVE-2010-3055
  14. 最清晰易懂的Elasticsearch操作手册|收藏夹必备
  15. Android 手势识别向左,右,上,下,滑动的方向
  16. SAP 启动物料帐后不可更改物料价格的处理方法
  17. c++ STL容器 --- 栈stack
  18. 阿拉伯数字转换为汉字大写数字
  19. 后台管理系统项目-登录页-实现步骤
  20. 单刀双掷的模拟开关MAX4544

热门文章

  1. 首次使用mysql_mysql的初次使用操作
  2. 样本不均衡SMOTE算法代码实列
  3. GPT-3英文版的接口
  4. JAVA事物API JTA
  5. 最好机器学习NLP和python教程
  6. 下载好了mysql 如何在命令行测试_MAC上安装MySQL,测试是否安装好了,在命令窗中作建表、查询等基本操作。-Go语言中文社区...
  7. Nature发表新研究,用“光”加速人工智能 | AI日报
  8. 像鸟一样树上栖息、空中抓物,斯坦福给无人机安上爪子,登Science子刊封面
  9. FAIR 训练 AI 玩拳击,效果堪比真人比赛,试探+周旋+爆头
  10. 语言的神经结构: 一体化建模集中于预测处理(附ppt)