模型的可解释性初识

模型的可解释性即让CNN模型自己解释预测的结果。比如分类任务,需要解释分类的原因,即通过图片的哪些像素做出了判断。

关于CNN模型的可解释性,比较经典的有:反卷积(Deconvolution)和导向反向传播(Guided-backpropagation)。通过他们,可以在一定程度上看到cnn模型中较深的卷积层所学习到的一些特征。从本质上说,反卷积和导向反向传播的基础都是反向传播,即对输入进行求导,其唯一的区别在于反向传播过程中经过ReLU层时对梯度的不同处理策略。

                                                                   

使用普通反向传播得到的图像噪声较多,基本看不出模型学习到了什么。使用反卷积可以大致看清目标的轮廓,但是有大量噪声在目标以外的位置,使用导向传播基本上没有噪声,特征较为明显的集中在目标上。虽然借助反卷积和导向反向传播可以看到CNN 模型神秘的内部,但是却不能解释相应任务处理的原因,即通过上述方法可以看到模型学习到的所有特征。

1。CAM(Class Activation Mapping)

通过热力图(Saliency Map)解释任务处理原因。

对于深层的卷积神经网络而言,通过多层卷积和池化后,它的最后一层卷积层包含了最丰富的空间和语义信息,再往下是全连接层和softmax层,其中所包含的信息很难通过可视化的方式展示出来。因此需要充分利用最后一层卷积层。

CAM借鉴了Network in Network论文中的思路,利用GAP(Global Average Pooling)替换全连接层。GAP可以视作一种特殊的average pool层,其pool size和整张特征图一样大,即对每张特征图的所有像素求取均值。CAM由于没有全连接层,故其支持任意大小的输入;且通过引入GAP充分利用了空间信息,增强了鲁棒性强,不易产生过拟合;最重要的是其在最后一层卷积层上强制生成了与目标类别数量一致的特征图,经过GAP以后再通过softmax层得到结果,为每张特征图赋予了明确的意义,即categories confidence maps。

需要注意的是:对每一个类别C,每个特征图k的均值都有一个对应的w。

                                                                  

其通过将每个类别对应的w_k^C全部取出,并求取其与自身对应特征图的加权和,通过上采样叠加到原图解释任务处理的原因。

 

2。Grad-CAM方法

CAM虽然已经能够很好的解释任务处理的原因,但是由于其需要修改原模型的结构重新训练,极大的限制了使用场景。这为Grad-CAM的出现提供的基础。Grad-CAM的思路与CAM一致,通过得到每张特征图对应的权重,然后求取加权和。但其与CAM的主要区别在于求取权重w_k^C的过程。CAM通过替换全连接层为GAP层,重新训练得到权重,而Grad-CAM则通过梯度的全局平均计算权重。事实上,经过严格的数学推导,二者计算得到的权重是等价的。为了与CAM的权重做区别,在此定义Grad-CAM中第k个特征图对类别c的权重为\alpha_k^c:

\alpha_k^c=\frac{1}{Z}\sum\limits_{i}\sum\limits_{j}\frac{\partial y^c}{\partial A_{ij}^k}

其中Z为特征图的像素个数,y^c是对应类别c的分数(在代码中一般用logits表示,是输入softmax层之前的值),A_{ij}^k表示第k个特征图中{ij}位置处的像素值。求得类别对所有特征图的权重后,求其加权和就可以得到热力图。

L_{Grad-CAM}^c=ReLU(\sum\limits_k\alpha_k^cA^k)

Grad-CAM对最终的加权和加了一个ReLU,加这一层的原因是:只关心对类别c有正影响的那些像素点,如果不佳如ReLU层,可能会带入一些输入其他列别的像素,影响解释的效果。

除了直接生成热力图对结果进行解释,Grad-CAM还可以与其他经典的模型解释方法如导向反向传播相组合,得到更细致的解释。

参考文献:

https://www.jianshu.com/p/1d7b5c4ecb93

猜你喜欢

转载自blog.csdn.net/juwenkailaodi/article/details/86620489