Note for Understanding Neural Networks Through Deep Visualization

Note for Understanding Neural Networks Through Deep Visualization

Abstract

近年来,在训练大型深度神经网络方面取得了巨大进展,其中包括训练卷积神经网络识别自然图像。 然而,我们对这些模型如何工作的理解,特别是他们在中间层执行的计算,已经落后了。通过开发更好的可视化和解释神经网络的工具,这一领域的进展将进一步加速。 我们在这里介绍两种工具。 第一种是在处理图像或视频时,将训练过的每个图层上产生的激活可视化的工具。我们发现,随着用户输入的改变,通过查看实时的激活值有助于理解卷积网络的工作原理。 第二种工具通过图像空间中的正则化,可视化DNN每一层的特征。在这里我们介绍几种新的正则化方法,这些方法结合起来可以产生更清晰,更可理解的可视化图像。 这两种工具都是开源的。

简单说:
可视化工作分为两大类,一类是非参数化方法:这种方法不分析卷积核具体的参数,而是先选取图片库,然后将图片在已有模型中进行一次前向传播,对某个卷积核,我们使用对其响应最大的图片块来对之可视化;而另一类方法着重分析卷积核中的参数,使用参数重构出图像。

1. Introduction

过去几年在训练强大的深度神经网络模型方面取得了巨大的进步,这些模型在各种具有挑战性的机器学习任务中正在接近甚至超越人类能力。 一个标志性的例子是训练深度卷积神经网络AlexNet,分类自然图像。 该领域大放异彩受益于GPU强大的计算能力,更好的训练技巧(dropout),更好的激活单元(ReLU), 和较大的标记数据集(ImageNet)。

虽然我们对如何创建高性能架构和学习算法的知识有了相当大的改进,但我们对这些大型神经模型如何运作的理解却落后了。 神经网络一直被称为“黑盒子”,因为很难准确理解一个具有大量神经元相互作用、非线性变换的神经网络,训练之后会有什么功能。大型现代神经网络由于其规模更难研究。例如,了解广泛使用的AlexNet DNN需要理解6000万训练过的网络参数。

理解神经网络学习到了什么本身就很有趣,并且这也是进一步改善模型的关键途径:理解当前模型学习到的知识,才可以提出使它们变得更好的方法。 例如,使用反卷积技术,可视化DNN隐藏单元学习到的特征,提出了使用较小的卷积核的结构。这一改进(ZFNet),取得了2013年ImageNet的最佳水平。

本文提供了两种可视化的工具,这两种工具都是开源的,以便科学家和从业人员可以将它们与自己的DNN集成从而更好地理解DNN。第一种工具是交互式的软件,它根据用户提供的图像或视频,让它们通过DNN后,绘制出每一层上产生的激活。第二个工具可以更好地显示由DNN每层的单个神经元计算出的学习特征。观察已经学习到的特征对于理解当前的DNN如何工作以及如何改进它们很重要。

过去的研究大致分为两个不同的阵营:以数据集为中心和以网络为中心。前者需要一个训练好的DNN并在该网络上进行前向运算;后者只需要一个训练好的DNN。以数据集为中心的方法从训练或测试集挑选图像,让这些图像通过DNN网络,DNN网络的每个单元都会产生高或低的激活值。

以网络为中心的方法直接调查网络,而不需要数据集中的任何数据。典型代表是ZFNet的反卷积方法。例如2009年Visualizing higher-layer features of a deep network一文中,通过使特定单元产生高的激活值来合成图像。从初始输入x=x0x=x0开始,计算在某个单元ii处由该输入引起的激活ai(x)ai(x)。然后沿着梯度∂ai(x)/∂x∂ai(x)/∂x的方向在输入空间中步进迭代,使得单元ii产生的激活值越来越高,最终的x∗x∗被认为是该单元ii正在寻找的答案(最希望看到的特征)。在输入空间是图像的情况下,可以直接显示x∗x∗来解释。其他人也纷纷效仿,使用梯度来查找能使输出单元产生更高激活的图像或更低激活的图像。这些基于梯度的方法在简单性上很有吸引力,但优化过程倾向于生成与自然图像不相似的图像。(高激活产生的图像可能无法辨认)。但是如果能够适当地调整优化,可以用这种方法获得一些有用的可视化。2013年Deep inside convolutional networks: Visualising image classification models and saliency maps一文中,利用L2正则化生成了略微可辨别的图像。本文基于前人的基础研究提供了三种正则化的形式,这些正则化生成的图像比以前的方法更容易识别。

2. 实时卷积激活的可视化

我们的第一个可视化方法非常简单:绘制图像或视频经过神经网络的前向计算在每个卷积层中神经元的激活值。 在全连接的神经网络中,神经单元的顺序是不相关的,因此这些矢量的图不具有空间信息性。然而,在卷积网络中,卷积核的使用方式会考虑到输入图像空间信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5O6KF3eK-1608473067063)(/Users/liyan/Library/Application Support/typora-user-images/image-20201220211527519.png)]

上图绘制出了输入图像经过conv5层后的激活值。 conv5层的大小为256×13×13,我们将其描述为256个13×13灰度图像。每个256张小图像包含了与输入数据在相同的x-y空间中的激活值。并且这256个图像被简单地划分成16×16网格。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNVPqMsg-1608473067065)(/Users/liyan/Library/Application Support/typora-user-images/image-20201220211955757.png)]

上图显示了一个conv5层上的第151通道的13×13激活的视图。该通道响应人脸和动物脸部。这个深度神经网络是在ImageNet上训练的,该网络中不包含脸部类,但包含许多带有脸部的图像。 但是该通道可以对人类和动物的脸部做出反应。

尽管这种可视化很容易实现,但我们发现它很有用,因为所有流经网络的数据都可以被可视化。 幕后没有任何神秘的事情发生。因为这个卷积网络只包含从输入到输出的单一路径,所以每一层都是一个bottleneck ,所有信息都必须通过这个bottleneck传递给分类决策。 迄今为止,我们已经从该工具中收集到了一些令人惊讶的发现:
**1.**在某些层面上的表示似乎是局部的。例如,我们可以在conv4和conv5上看到文本,鲜花,水果和脸部的检测器,而不是在所有图层上进行分布表示。
**2.**当直接使用来自Google Images 的照片文件进行分类时,分类通常是正确并且是高度自信的(对于正确分类的softmax概率接近1)。当使用来自网络摄像头的输入时,预测往往不能正确,因为训练集中没有相应的类别。训练集的1000个类虽然很多,但并不包含大多数常见的家庭用品。因此显示网络摄像头中的人时,如果这个人不在ImageNet类别内,输出就不会有很高的概率。这个概率向量是有噪声的,如果输入有微小变化,这个向量会产生显著的变化。绘制全连接层(fc6和fc7)也有类似情况发生。
**3.**最后三层对小的输入变化很敏感,大部分较低层是非常鲁棒的。 例如,当可视化conv5层时,通过移动摄像头前方的物体,可以找到许多面部,肩部等检测器。尽管1000个类别不包含明确标记的面部或肩部,但网络可以识别这些是因为它们是人的部位,识别整个人需要这些有用的局部信息,有了这些局部信息,将这些局部信息整合起来将有助于最终的分类决定。Conv5上第151通道是一个面部检测器,如上图所示的那样,它可以激活人脸、狮子脸、猫脸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值