可视化可以让我们知道一个神经网络正在学习什么。当我们建立一个神经网络结构来进行图片分类预测时,我们想要解释网络预测的原理,例如,我们想要知道为什么网络会预测一张图片是宇宙飞船。

论文一Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps

论文一为可视化一个正在运行的神经网络提供了两种思路,它们都需要计算输出图片相对于输入图片的梯度。

分类模型可视化:分类任务是产生一个最具代表性的图片。思考:图片的什么地方看起来更像一艘宇宙飞船?我们会发现当图片I的最大分数是Sc(I) 时,这个图片被归类为c。

:得分Sc(I)是卷积神经网络输出经过softmax函数得出的值,并不是预测可能性。

我们可以开始图片I,使用后向传播算法计算相对于I的梯度,使用梯度上升发现一个更好的I。这个过程是非常相似于优化一个神经网络,不同的是,我们保持权重固定不变,优化图片。

图片分类的显著性:这个任务的目标是发现图片中的那些像素对确定为一个类别有着比较大的影响力。思考:图片中的那些像素对把图片分类为宇宙飞船有着比较大的影响力?记下分数Sc相对于输入图片I,然后计算图片I0。

神经网络可视化loss 神经网络可视化的作用_神经网络

上面的计算会使我们在每个像素点处获得一个标量值,利用标量值进行正则化可以获得图片的显著图。

神经网络可视化loss 神经网络可视化的作用_标量_02

图片的显著图可以用来定位感兴趣的目标,使用分割算法进行分割。注意分类模型智能给出类别,不能进行定位,被称为弱监督定位。

论文二Learning Deep Features for Discriminative Localization

论文二提出了一种不同的方法可视化图片的显著性图,与论文一使用的后向传播算法不同的是,论文二提出修改前向网络结构实现分类和定位。

网络使用一系列卷积层作为网络的开始,通过一个图片,卷积网络生成K个特征图。每个特征图包含i*j个激活,f(k)(i,j)代表特征图k中的定位点(i,j)。

神经网络可视化loss 神经网络可视化的作用_人工智能_03

注:通常情况,图像分类使用卷积层后接全链接层和softmax层,使得输入图片的大小需要一致,论文二采用特征映射的方法使得网络可以处理不同大小的输入,了解更多可以参考Global Average Pooling

为了使用上面的结构进行分类操作,我们可以获得一个显著图,也叫激活图,对每一个特征图学习一个权重。

神经网络可视化loss 神经网络可视化的作用_神经网络_04

论文二的方法可以从激活图中计算分类分数,同时相对于后向优化可以产生更好的可视化效果。

**参考资料:**https://rajpurkar.github.io/mlx/visualizing-cnns/