神经网络可视化经典的方法有两种,分别是反卷积和导向反向传播。反卷积和导向反向传播都是基于反向传播。下面我们来看反卷积和导向反向传播的特点以及例子:
神经网络输出可视化
上图为反卷积和导向反向传播在经过relu层时对梯度采取的不同的方法。
导向反向传播:通过修改RELU的梯度反传,使小于0的部分不反传,这样到达第一个conv层的梯度就是对后面relu**起作用的梯度,对应的就是对网络起作用的区域。
以上的两种方法,我们并不能清楚得到看到到底是图片中的哪一个区域让网络判断出这个图片是什么。因此我们引入了以下的两种方法。

在神经网络中,最后一层卷积层包含了丰富的空间和语义信息,下一层连接的就是全连接层以及softmax层很难利用可视化表示出来,因此,对于我们来说,最后一层卷积层至关重要。

1.CAM:是将神经网络的全连接层全部替换为Gap层(Global Average Pooling),并重新训练神经网络。
GAP之后,我们得到了最后一个卷积层每个特征图的均值,通过加权和得到输出(实际中是softmax层的输入)。需要注意的是,对每一个类别C,每个特征图k的均值都有一个对应的w,记为w_k^c。
将某个类别对应的所有w_k^c取出来,求出它们与自己对应的特征图的加权和即可。由于这个结果的大小和特征图是一致的,我们需要对它进行上采样,叠加到原图上去,就生成了一个热力图,图中显示是由哪写区域来决定该图是哪个类别的。
CAM支持任意大小的输入。

1.Grad_cam:一种卷积神经网络的解释方法,通过构建类似热力图的形式,显示卷积神经网络学到的特征,从像素的角度来解释。它与CAM的区别就是在于他提取所有的权重,并且利用梯度的全局平均来计算权重,往回找对应的特征图,然后进行加权求和。不用对神经网络进行重新的训练。
Grad-CAM 中第 k 个特征图对应类别 c 的权重为 ack,计算公式如下:
神经网络输出可视化
其中:神经网络输出可视化再求得所有的特征图对应的类别的权重后进行加权求和,对最终的加权和加了一个ReLU,加这么一层ReLU的原因是我们只关心对类别c有正影响的那些像素点,如果不加ReLU层,最终可能会带入一些属于其它类别的像素,从而影响解释的效果,最后将热图与导向反向传播得到的结果逐点相乘,以获得高分辨率和特征明确的Grad-CAM可视化图
论文中Grad_cam的结构图,左侧对神经网络进行可视化,右侧可以将这个网络用于图像分类,Image Captioning以及视觉问答等等。
神经网络输出可视化

相关文章: