Grad-CAM
1、简介
论文原文: Grad_CAM
对于常用的深度学习网络(例如CNN, 普遍认为是个黑盒, 可解释性并不强), 它为什么会这么预测, 它的关注点在哪里, 我们并不知道, 很多科研人员想方设法的探索其内在的联系, 也有很多相关的论文。 这篇Grad-CAM并不是最新的论文, 但是很有参考意义。通过Grad-CAM我们能够绘制出如下的热力图(对于给定类别, 网络到底关注哪些区域)。Grad-CAM(Gradient-weighted Classes Activation Mapping)是CAM(Class Activation Mapping)的升级版, Grad-CAM比CAM更具一般性。但CAM比较致命的问题是需要修改网络结构并重新训练, 而Grad-CAM完美避开了这些问题, 本文不对CAM进行讲解。
Grad-CAM能够帮助我们分析网络对于某个类别的关注区域, 那么我们通过网络关注的区域能够反过来分析网络是否正确学习到正确的特征或者信息。例如, 作者训练了一个二分类网络, Nurse和Doctor, 如下图, 第一列是预测时输入的原图, 第二列是Biased model(具有偏见的模型)通过Grad-CAM绘制的热力图。 第三列是Unbiased model(不具偏见的模型)通过Grad-CAM绘制的热力图。通过对比发现, Biased model对于Nurse(护士)这个类别关注的是人的性别,可能模型认为Nurse都是女性,很明显这是带有偏见的。比如第二行第二列这个图, 明明是个女doctor, 但bias modek却认为她是Nurse(可能因为模型关注到它是女性)。而Unbiased model关注的是Nurse和Doctor使用的工作器具以及服装, 明显这个更合理。
Grad-CAM介绍以及实验
理论介绍
作者的想法还是比较简单, 参见下图, 我们这里简单看一下Image Classification任务, 首先网络进行正向传播, 得到特征层A(一般指的是最后一个卷积层的输出)和网络预测值y(注意, 这里指的是softmax激活之前的数值)。假设我们想看一下网络针对Tiger Cat这个类别的感兴趣区域, 假设网络针对Tiger Cat类别预测的值为。紧接着对进行反向传播, 能够得到反向传播特征层A的梯度信息。通过计算得到针对特征层A每个通道额重要程度, 然后进行加权求和通过ReLU就行了, 最终得到的结果即是Grad-CAM。
至于为什么这么做, 首先得到的特征层A是网络对原图进行特征提取得到的结果, 越往后的特征层抽象程度越高, 语义信息越丰富,而且利用CNN抽取得到的特能图是能够保留空间信息的(Transformer同样)。所以Grad-CAM在CNN中的A一般都指的是最后一个卷积层的输出(参考下图, 越往后的特征层效果越好)。当然特征层A包含了所有我们感兴趣的语义信息, 但具体哪些语义信息对应哪个我们并不清楚。紧接着通过对类别c的预测值进行反向传播, 得到反传回特征层A的梯度信息A’, 那么A’就是对A求得的偏导, 换句话说, A’代表A中每个元素对的贡献, 贡献越大网络就认为越重要。然后对A’在w, h上求均值就能得到针对A每个通道的重要程度(这里针对类别c而言的)。最后进行简单的加权求和再通过ReLU就能得到文中说的Grad-CAM。
关于Grad-CAM总结下来就是下面这个公式:
A代表某个特征层, 论文中一般指的是最后一个卷积层输出的特征层
k代表特征层A中第k个通道(channel)
c代表类别c
\alpha ^c_k = \frac{1}{Z}\sum_i\sum_{j}\frac{\alpha y^c}{\alpha A^k_{ij}}
\alpha^{Cat} =\left(
\begin{matrix}
\alpha_1^{Cat} \\
\alpha_2^{Cat}
\end{matrix}
\right) = \left(
\begin{matrix}
\frac{1}{3} \\
-\frac{2}{3}
\end{matrix}
\right)
L^c_{Grad-CAM} = ReLU(\sum_k \alpha^c_{k}A^k)
L^{Cat}_{Grad-CAM} = ReLU(\frac{1}{3}\cdot \left(
\begin{matrix}
1 & 0&2\\
3 & 5&0\\
1 & 1&1
\end{matrix}
\right)) +
(-\frac{2}{3})\cdot \left(
\begin{matrix}
0 & 1&0\\
3 & 1&0\\
1 & 0&1
\end{matrix}
\right)) \\
=ReLU(\left(
\begin{matrix}
\frac{1}{3} & -\frac{2}{3}& \frac{2}{3}\\
-1 & 1&0\\
-\frac{1}{3} & \frac{1}{3}& -\frac{1}{3}
\end{matrix}
\right)))
y_1 = f_{fc}(f_{conv2d}(X,W_1),W^1_2)
y_1 = f_{fc}(O, W_2^1) = O_{11}\cdot W^{11}_2 + O_{12}\cdot W^{12}_2 + O_{21}\cdot W^{13}_2 + O_{22}\cdot W^{14}_2
\frac{\partial y_1}{\partial O} = \frac{\partial y_1}{\partial(O_{11}, O_{12}, O_{21}, O_{22})^T}
=(0, 1, 0, 1)^T
\left(
\begin{matrix}
0 & 1 \\
0 & 1
\end{matrix}
\right)
$$