Grad-CAM阅读笔记 -神经网络输出可视化

Paper Reading Note

URL: https://arxiv.org/abs/1610.02391

TL;DR

提出一种对神经网络输出进行可视化的方式Grad-CAM(Gradient-weighted Class Activation Mapping),直观展示卷积神经网络学习到的特征,有助于理解神经网络的工作原理及决策过程


Dataset/Algorithm/Model/Experiment Detail

总体思路

Grad-CAM是使用任何目标概念的梯度(比如分类类别中的某一类的logits,甚至是caption任务中的输出),流入最后的卷积层,生成一个粗略的定位图来突出显示图像中用于预测的重要区域。

Grad-CAM阅读笔记 -神经网络输出可视化

实现方式

  • 首先计算c类别的的模型得分 ycy^c 对于某个卷积层AijkA^k_{ij}的梯度,同时在对于每个channel上的各像素值取平均(类似Global Average Pooling),得到神经元重要性权重αkc\alpha^c_k,如下公式所示:
    Grad-CAM阅读笔记 -神经网络输出可视化
    其中Z代表特征图的像素个数,AijkA^k_{ij}代表第k个特征图的(i,j位置的像素值)
  • 利用上述得到的神经元重要性权重对选定的卷积层的特征进行加权,如下公式所示:
    Grad-CAM阅读笔记 -神经网络输出可视化
    值得注意的是这里加权后输出的粗糙热力图是和AkA^k卷积层的特征大小一致,随后经过ReLU操作得到热力图,目的是只考虑对类别 c 有正影响的像素点。

效果展示

  • 分类任务
    Grad-CAM阅读笔记 -神经网络输出可视化
  • captioning 任务
    Grad-CAM阅读笔记 -神经网络输出可视化

Thoughts

这篇文章虽然思路很简单,但作为神经网络可解释化的经典作品,其对于理解神经网络的工作原理有很大帮助。在迭代训练模型过程中这样的可视化方法也能对模型的决策方式有一定展示。该文章的网站也提供了相应的展示界面,其中captioning任务的展示工具提供了一些有趣的发现,一些看似不合理的预测其实也是在合理的原因下发生。

该论文的展示网页见:Grad-CAM展示