幕雨潇潇 发表于 2019-10-23 11:04:43

「技能综述」深度学习可视化都有哪些要点?

作者 | 言有三
编辑 | 言有三
各人最诟病深度学习的一点就是理论底子不敷体系,模子就像一个黑盒子,这就更加凸显了深度学习模子可视化的紧张性了。
本文以实战履历为主,撤除数据的可视化部门,我们说以下几个重要的方向(1)模子布局的可视化(2)卷积参数的可视化(3)激活地区的可视化(4)练习过程的可视化。
1 模子布局的可视化
所谓模子布局的可视化,就是为了方便更直观的看到模子的布局,从而方便举行调试,下面临2个主流的框架举行展示。
1.1 caffe网络布局可视化
界说一个简朴的3层的模子(模子可以检察我们git,代码太长此处不展示),我们可以接纳几种方案举行可视化;第一种,使用caffe自带的可视化方法;第二种,使用开源项目netscope;由于netscope可视化结果更好,因此我们接纳netscope举行可视化,工具网址如下:http://ethereon.github.io/netscope/#/editor
http://pics4.baidu.com/feed/aa64034f78f0f73629fe33d583f82d1ceac41310.jpeg?token=320c1be458f205a5296c9df0453b7bee&s=259A6C7E8D606E1B4CECF0FD02009023
可视化后的效果如上图,可以看到网络的布局是通过卷积+激活函数的堆叠,同时网络的数据输进层和末了的全毗连层作为了loss层和acc层的输进。
当我们想要看每一层的参数时,就可以将鼠标放上相应的布局块;
http://pics3.baidu.com/feed/10dfa9ec8a1363274ba82d601b223ee909fac74b.jpeg?token=75ea906bc7a1312dfe9183664a0ea33b&s=BDAA777EF6A676BE880090C70300F023
固然,还可以利用caffe自带的脚本举行可视化,在caffe根目次下的python目次下有draw_net.py这个脚本。
draw_net.py实行的时间带三个参数,第一个参数是网络模子的prototxt文件,第二个参数是生存的图片路径及名字,第三个参数是rankdirx,他有四种选项,分别是LR, RL, TB, BT。用来表现网络的方向,分别是从左到右,从右到左,从上到小,从下到上。默以为LR。
1.2 tensorflow网络布局可视化
在tensorflow中要举行可视化,必须利用name scope来确定模块的作用范围,添加部门名称和作用域,否则网络图会非常复杂。与上面雷同,我们同样界说一个三层的卷积网络(代码照旧看git)。
要想使用tensorboard举行可视化,必须在session中通过summary存储网络图,只必要在练习代码中添加下令即可,summary = tf.summary.FileWriter("output", sess.graph)
末了使用tensorboard下令来检察练习效果和可视化效果,网络的可视化效果如下。
http://pics5.baidu.com/feed/0823dd54564e92580a7212fb162f4f5dcdbf4e90.jpeg?token=967c85538f0a2a63e72ea91b2371e066&s=56D0E93B85305D220AFC89D8000050B3
可以看出,网络的布局可视化和caffe的差未几。除了caffe的网络布局可视化是输进模子设置文件,大部门的深度学习框架都利用了python举行开辟,模子布局的可视化与tensorflow效果差未几。相比力来说,caffe的模子可视化方法更加简朴直接,独立于代码,可以更便捷地看到每一层的参数设置。
2 卷积参数可视化
前面我们可视化了网络的布局,从而对要练习的网络就有了团体的把握。当我们得到了练习效果之后,一个模子常有百万万万级别的参数,我们可否通过可视化的方法,来评判一下这个网络布局的优劣呢?通常环境下,我们盼望网络布局学习到的权重,模式充足丰富,如许才有强盛的表征本领。
2.1 浅层卷积参数可视化
网络的早期卷积学习到的是通用的特性,由于大部门网络的输进都是彩色图,以是数据层的通道数为3。恰好我们平常用的彩色图的通道就是3维,这时间假如直接将这3组通道转换为一个彩色图,我们就可以很直观的可视化这第一层的卷积参数,对于恣意以输进图为3通道彩色图的网络布局来说,这都是通用的。
下面是alexnet学习到的权重的第一层卷积的可视化。
http://pics3.baidu.com/feed/ae51f3deb48f8c54b519babdb084b3f0e2fe7f88.jpeg?token=3499cf980f88456158893ffa5d1145d7&s=90A000BBE2A7E8EB40BD41C50300A0E2
这此中有一些卷积核为灰度图,阐明三个通道的对应参数相近,学习到的是与颜色无关的特性。有的为彩色图,阐明3个通道的特性差别大,学习到的是与颜色有关的特性。这与上面人眼和感知特性也是相通的,在底层,学习到的是边沿,外形,颜色等敏感等信息。
仔细的读者应该可以留意到,上面的参数,具有肯定的互补性和对称性。
2.2 高层卷积参数可视化
到了高层,由于输进的通道数不再为3,以是无法像第一层那样,将其投射到图像空间举行直观的可视化。
这时间就有了两种思绪。分别是dataset-centric和network-centric方法。他们的区别就是,第一个要可视化核函数,必须要利用真实的输进数据。第二个,则是通过天生一个随机图片,然后举行迭代的方法,来最大化相应层的神经元的激活,这个时间为使得输进的图片更加平滑,可以思量利用GAN等方法。
重要的研究方法包罗两种,反卷积法【2】和梯度盘算法【3】。
反卷积方法的焦点头脑就是使用上采样从特性空间渐渐规复到图像空间。假设我们要可视化第1个feature map的一个unit,即特性图的一个像素的activation,则起首从数据会合盘算一下多个输进图像各自颠末前向流传后在这个unit上产生的activation,取出activation最大的一些图像,这些图像作为输进图。
然后将输进图分别在这个unit上产生的activation举行反向流传,其他位置置为零。此中与pooling对应的就是uppooling,它通过在max pooling的时间记载下最大激活位置,在反卷积的时间举行规复。与卷积对应的操纵就是转置卷积操纵,这是被用于图像分割的方法,也是通常意义上所说的反卷积。
反卷积的效果,就是一个重修的图。
http://pics5.baidu.com/feed/279759ee3d6d55fb3550c530e78fd14f21a4dd41.jpeg?token=c0a6aa7e8a873e473e89d65bc0aebcbc&s=D4A19A51EAB7CCDA4AB0809A0300E0C0
梯度盘算法包罗尺度的梯度盘算法以及它的一些改进版本integrated gradients,guided backprop,根本原理如下,在练习的过程中固定网络的参数稳定,学习输进。
http://pics4.baidu.com/feed/8435e5dde71190efeecf6c7447b60313fcfa609c.jpeg?token=f5ae7e8c3846fff7f84b3198839f7f51&s=06366D22CDCECE11566DADD2000080B3
反卷积法和梯度盘算法可视化出来的效果,可以反映入迷经元学习到的种别的表面,但是效果不敷精致。GoogleBrain团队的deep dream【4】研究,对inception网络举行了逐层的特性可视化,展现了每一个网络层的特性。该项目是通过输进随机噪声和想让网络学习的图像的先验知识,末了可视化网络学习到的该类的效果,固然不是实际存在的图像,但是却具有该种别的特性,犹如人类梦乡中天生的不真实却又有辨识度的场景一样。
下面展示了layer 4c层的一个神经元的效果。
http://pics6.baidu.com/feed/2934349b033b5bb5b913ab5bbc7e4b3cb400bc86.jpeg?token=4f315a8edf87d1ff7ee496f584e5b82c&s=C0016FB34E9255E919A5ECE003008033
3 激活热图可视化
可视化了卷积参数,它可以反映出所学习到的网络的参数自己有什么样的特点,它是从神经元的角度表明了 CNN,而激活热图可视化思量从输进图像的角度表明CNN。它从输进图像中找出激活卷积层中特定神经元的选择性模式,来反应网络到底学习到了什么信息。
特性图可视化的效果是sensitivity map,也叫saliency maps,以CAM(Class Activation Mapping)【5】方法及其变种为代表。
CAM使用GAP(Global Average Pooling)更换掉了全毗连层,将输出通道调解为输出种别数,再加权然后通过softmax层得到效果,可视化原理图如下:
http://pics1.baidu.com/feed/8b82b9014a90f60333913797b0bf2d1eb151ed74.jpeg?token=881b365e432c89234c9e675ae39d1798&s=7892699A06D5ED880CDC15C30300C0B4
看上图,末了输进softmax的特性图,即是k个featuremap的加权和,此中w系数包罗c维,c即是种别数量。比及了热力图之后,直接上采样到原图中就能得到激活地区,由于featuremap保存了原图的空间关系。
4 练习过程可视化
末了,我们通过tensorflow可视化开源框架来展示在项目中的可视化,由于我们前面已经有很多期文章报告过可视化的各个模块细节,以是此处就不再做技能细节展示,而只展示效果。
项目是这个:
http://github.com/carpedm20/DCGAN-tensorflow,我们用来天生了一批嘴唇数据。
4.1 loss可视化
loss等标量指标可视化可以反应网络的学习环境,是必须关注的。
http://pics6.baidu.com/feed/00e93901213fb80e58276013bf7cb12bbb3894b6.jpeg?token=5e187d2a753e7be0598f603444a2e255&s=1C027D324B467F49087054EE0300E020
http://pics0.baidu.com/feed/d50735fae6cd7b892e04020f8689dca2d8330e00.jpeg?token=3969407333f634856bd335237b3bd241&s=1C227C3363466F4948F46CEE03007032
4.2 中心效果可视化
http://pics0.baidu.com/feed/7c1ed21b0ef41bd5b8bd4465d8771fce3bdb3de3.jpeg?token=d7d6d8533d76a4aeede66b5fdd8f39d7&s=0D12E51707E0410910E42DCF02008033
对于图像天生使命,没有什么比检察中心效果更加有说服力的了。
4.3 网络布局可视化
http://pics5.baidu.com/feed/7acb0a46f21fbe0908cb4d98e2cd92368544addc.jpeg?token=098be128dab3a9268d71839d1bd29809&s=240474320D2245224874EDDA000080B3
tensorflow可视化网络效果固然比caffe更加复杂,但也更加过细,关注关注没有弊端。
别的,还可以检察权重的直方图分布等等,对于网络的性能判定也有辅助作用。
5 总结
正所谓一图胜千言,可视化起来high啊,这个坑远远没有这么简朴。
假如你想相识更多,有一篇综述文章【6】做了分类,不外对于大部门人来说谁人分类并欠好明白,以是我照旧按照本文的构造情势。
参考文章
Erhan D, Bengio Y, Courville A, et al. Visualizing higher-layer features of a deep network. University of Montreal, 2009, 1341(3): 1.
Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks. 2013, 8689:818-833.
Simonyan K, Vedaldi A, Zisserman A. Deep inside convolutional networks: Visualising image classification models and saliency maps. arXiv preprint arXiv:1312.6034, 2013.
http://distill.pub/2017/feature-visualization/
Zhou B, Khosla A, Lapedriza A, et al. Learning deep features for discriminative localization//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2921-2929.
How convolutional neural network see the world - A survey of convolutional neural network visualization methods










您现在利用的是【试用版】,许多功能受到限定!!假如试用此插件之后满足,对您产生了资助,请购买正式版支持一下辛劳的开辟者,插件的连续发展离不开正式版用户的支持,良好的应用得益于您的捐助,点击下面的链接往Discuz官方应用中央购买正式版永世授权

页: [1]
查看完整版本: 「技能综述」深度学习可视化都有哪些要点?