神经网络的可视化

来源:互联网 发布:网络授课平台 编辑:程序博客网 时间:2024/05/18 14:14

写在前面:
好久没有学习深度学习相关知识了,这几天觉得虽然现在工作跟深度学习无关,可是还是要继续下去,所以还是把最近学习的一些内容总结一下,不一定严谨,只是希望自己可以借此好好整理整理思路。

我们在训练神经网络的时候,需要调节大量的参数,神经网络的可视化对于调整参数有着很好的指导作用。

什么是可视化呢,先举一个简单的例子。
我们可以直接看第一层的feature map来观察神经网络是否取得了较好的效果:
(以下图片来自cs231)
这里写图片描述

这里写图片描述

左边的图片中的feature有很多噪声,这表示网络可能还没有收敛,或者学习速度不太对,或者是正则化没有做好;而右边的feature较为平滑,干净,并且特征也呈现出了多样化,这表示了训练较好。

1.实际上,最直观的可视化手段,就是去看前向传播中神经网络各层的激活(即经过激活函数后的状态)。对于ReLU激活函数而言,在刚开始训练的时候,激活看上去都是呈滴状的,且较为密集,之后会逐渐变得稀疏,呈局部化。如果一些激活值一直是0,那么很有可能说明学习速率太高了。
(图片来源:cs231)
这里写图片描述
上面这幅图是第一层网络,下面这幅图则是第二层网络。
这里写图片描述

2.滤波器的可视化
第二种常见的方法是对权重进行可视化。通常是第一层权重的可读性较好。
训练得较好的网络的权重较为平滑,噪声较少。
(图片来源:CS231)

这里写图片描述
上图为AlexNet第一层权重的可视化
下图为AlexNet第二层权重的可视化
这里写图片描述

可以看出,第一层的权重非常平滑,而且从第一层的各个权重中我们也可以看出,各个滤波器在做什么。

3.提取能够最大激活神经元的图片
还有一种手段,是保持整个网络不变,给网络输入大量的图片,针对某些神经元,观察哪些图片可以使他们激活最大(输出的值最大)
下图为针对AlexNet第五层Pool层的神经元做的可视化,即用下面的图片,可以使他们激活值最高。白色框代表的是感受野(感受野中的像素都会对第五层的一个神经元产生作用,算出来是163*163个像素)
这里写图片描述

下面分别介绍几篇相关的论文

《Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps》

1.这篇文章首先介绍一种通过输入图片进行可视化的技术,也就是神经网络是事先训练好的,固定的,对于指定的一个分类,想办法找出一个一张图片,使得网络在这个分类上得到的分数最高。
对于类别c, 输入图片I,Sc(I)是相应的得分,我们在此基础上增加一个L2正则项,也就是要找到图片I,可以满足以下式子:
argmaxSc(I)λ||I||22

需要注意的是,我们在这里用到的是得分,而不是Softmax层得到的后验概率Pc=expSccexpSc,如果使用的是后者的话,优化器会想办法使得其他类别的分数减小。事实上,实验也证明了使用后验概率的效果更差一些。

我们可以通过back-propagation计算出来一个局部最优的I。

论文中提供了一个例子。可以仔细观察下图片,会发现一张图片中会出现多个物体,从而使得该类别的分数尽可能高。
这里写图片描述

2.显著性的可视化(原文是saliency visualization,我之前没有接触过机器视觉太多的知识,这里仅凭我自己查了一点资料感觉是应该这样翻译,表示图片中各部分对用户的重要程度,不知道理解是否有误)

给定一个图片I0,类别c,和一个分类用的卷积神经网络,网络的得分公式是Sc(I),我们可以得到各个像素对得分的影响。

假设网络是线性的,我们可以很容易得到
Sc(I)=wTcI+b
这时候,wc的各个元素能够表示相应的像素对类别c的影响。

对于卷积神经网络而言,我们可以通过一阶泰勒展开得到一个近似方程
Sc(I)wTI+b
其中,w=ScI|I0,可以通过back-propagation计算出来。

其实可以把这个公式解读为,优化器试图来寻找得分Sc和像素之间的关系,看哪些需要更改的多,哪些需要更改的少。

根据上述公式,我们不难得到saliency map MRmn,对于灰度图而言,Mi,j=|wh(i,j)|,其中h(i ,j)是指i行j列对应的w的索引号(前文将I作为一个一维数组了,现在M是二维的),对于多通道的图像,如RGB图,通道c中像素点(i, j)对应w中的h(i, j, c), Mi,j=maxc|wh(i,j,c)|

这种计算显著图的方法,不需要额外的工具,如bounding box或者segmentation mask,计算起来非常快。

由于像素的位置其实给出了图片中的一些位置信息,因此,我们也可以做物体的定位。
这里写图片描述

《Visualizing and Understanding Convolutional Networks》

原创粉丝点击