Interpreting Image Classifiers by Generating Discrete Masks解读

闲话时间

这是一篇Texas A&M University的Shuiwang Ji组发表在TPAMI2020的关于CNN可解释的文章,最近看到好多Ji组关于CNN、GCN的可解释方向的文章。
在这里插入图片描述

Methodology

文章通过从模型的角度解释输入中的哪一部分对输入来说最重要,简而言之就是下图中的一只鸟(不知道是啥鸟),是鸟的这个部分,而不是背景对模型预测这张图片是鸟有关键作用。(PS:感觉有时候环境对一个生物的预测应该也是有一定影响的,毕竟生物都是有栖息地的,貌似扯着扯着好像关系到因果推断了,这个了解过,不作具体展开,放个总体框架图)
在这里插入图片描述在这里插入图片描述
受GANs的启发,本文将CNN模型的可解释分成两部分:一个鉴别器 D D D和一个生成器 G G G
生成器 G G G是一个可训练的网络,通过生成一个与输入图片 X ∈ R h × w X \in R^{h \times w} XRh×w同样大小的分数图 P P P,其中每个元素 p i , j p_{i,j} pi,j都是属于[0,1]的连续变量,其代表每个像素点 x i , j x_{i,j} xi,j的重要性程度。然后根据得出的重要性选择将相应的像素点置0或1,即有一个 m i , j m_{i,j} mi,j相应的置0或1。这样会得出一个 M M M
m i , j   B e r n o u l l i ( G θ ( X ) i , j ) m_{i,j}~Bernoulli(G_{\theta}{(X)_{i,j}}) mi,j Bernoulli(Gθ(X)i,j)该式如何理解呢,首先当一个像素点时 m i , j m_{i,j} mi,j服从二项分布,因为只有0和1,因为一张图片有很多个像素点,这些像素点之间都是独立同分布的(不知道独立同分布有没有讲错),因此就相当于重复了多次实验,就变成了伯努利分布。
有了mask M和原始图片X两者相乘通过鉴别器 D D D得到预测值 y ^ \hat{y} y^ y ^ = ( y 0 , . . . , y i , . . . , y n ) = D ( X ⋅ M ) \hat{y}=(y_0,...,y_i,...,y_n)=D(X \cdot M) y^=(y0,...,yi,...,yn)=D(XM)这里的鉴别器使用了预训练的VGG模型,且保持其梯度固定。然而这种方法有两个问题:
1.由于从 p i , j p_{i,j} pi,j m i , j m_{i,j} mi,j是一个离散过程,无法直接梯度更新来训练生成器 G G G
2.如果单纯这样训练生成器,采样得到的mask可能东一个像素点西一个像素点,而实际我们要的效果应该是某一部分没用一起mask掉,且mask掉的像素点之间应该相互连通,而不是一个一个独立的。
接下来,本文通过策略梯度来训练生成器 G G G,设计了奖励函数来检验生成的mask的质量,最后使用辅助信息来减小搜索空间和促进生成器的训练。
损失值定义: L C E ( y ^ , y ) = − ∑ i = 1 n 1 { y = i } l o g y i ^ L_{CE}(\hat{y}, y)=- \sum_{i=1}^{n}{1\{ y=i \} log \hat{y_{i}}} LCE(y^,y)=i=1n1{y=i}logyi^,其中 y y y是原图经过鉴别器 D D D的预测值(注意是标量,一个值), y ^ \hat{y} y^ X ⋅ M X \cdot M XM经过鉴别器 D D D的预测向量,通过训练生成器来最小化上述损失值来生成高质量的分数图。然而从分数图到 M M M是个采样过程,loss的梯度不能更新到生成器 G G G,因此需要用策略梯度。针对该损失值的理解:当 y = i y=i y=i时,指示器置1,否则指示器置0。也就是说只取 X ⋅ M X \cdot M XM经过鉴别器 D D D后对应于原图得出分类结果的那个概率值,取反后求最大值,再换句话说就是使 X ⋅ M X \cdot M XM的预测类别尽可能与原图经过鉴别器 D D D的预测类别相同。
从左到右,从上到下生成M,公式4、5、6即根据奖励函数来更新参数,并用策略梯度来更新。这里说实话没特别理解,代码也没开源,估计实现起来也就几行代码。
接下来主要介绍奖励函数,因为这个关系生成的mask的质量。第一种奖励函数 R d ( X , M ) = − L C E ( D ( X , M ) , y ) R_d(X,M)=-L_{CE}{(D(X,M),y)} Rd(X,M)=LCE(D(X,M),y)其中这里的交叉熵损失是前文中提到的那个。该奖励函数就是使 X ^ \hat{X} X^和原图像输入的预测标签相同。第二种奖励函数 R a ( X , M ) = − ∑ i = 1 w ∑ j = 1 h m i , j h × w R_a{(X,M)}=-\frac{\sum_{i=1}^{w}\sum_{j=1}^{h}m_{i,j}}{h \times w} Ra(X,M)=h×wi=1wj=1hmi,j其中选择的 m i , j = 1 m_{i,j}=1 mi,j=1,该函数主要是让mask掉的尽可能多,保留的范围尽可能少。
第三个奖励函数 R c ( X , M ) = − ∑ i = 1 w ∑ j = 1 h ( ∣ m i , j − m i − 1 , j ∣ + ∣ m i , j − m i , j − 1 ∣ ) h × w R_c{(X,M)}=-\frac{\sum_{i=1}^{w}\sum_{j=1}^{h}(|m_{i,j}-m_{i-1,j}|+|m_{i,j}-m_{i,j-1}|)}{h \times w} Rc(X,M)=h×wi=1wj=1h(mi,jmi1,j+mi,jmi,j1)该函数是保持生成的mask不是那种单一独立的像素点。
所以最终的奖励函数为 R f ( X , M ) = R d ( X , M ) + λ 1 R a ( X , M ) + λ 2 R c ( X , M ) R_f{(X,M)}=R_d{(X,M)}+ \lambda_1 R_a{(X,M)}+ \lambda_2 R_c{(X,M)} Rf(X,M)=Rd(X,M)+λ1Ra(X,M)+λ2Rc(X,M)这里 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2是两个超参数。
接着讲如何生成那个分数图:就是一个编码和解码的过程,使其能够学到像素点间的相互关系。(在编码器和解码器中加入了跳连结构)
所以总的损失变成了两部分的乘积,如图所示:
在这里插入图片描述

在这里插入图片描述
L G = − R f ( X , M ) L C E ( G θ ( X ) , M ) L_G=-R_f(X,M)L_{CE}{(G_\theta{(X)},M)} LG=Rf(X,M)LCE(Gθ(X),M)对于ImageNet数据集来说图片大小为(224,224),搜索空间是 2 224 × 224 2^{224 \times 224} 2224×224,这个搜索空间太大了,因此需要使用辅助信息来减小搜索空间。具体流程如下图所示:比如一个(2,2)的图片,其搜索空间是 2 2 × 2 = 16 2^{2 \times 2}=16 22×2=16,如果固定前两个位置为1,则搜索空间就只有4了,本文通过梯度的方式构造mask的辅助信息,叫 L g ( X ) L_g(X) Lg(X),但是这个梯度只能初步的估算不同像素点对分类重要性,将梯度的绝对值较高的作为辅助信息。 G r ( X ) = ∣ ∂ S y ∂ X ∣ Gr(X)=|\frac{\partial{S_y}}{\partial{X}}| Gr(X)=XSy y y y是原始图片的预测值, S y S_y Sy表示 y y y类的分数。通过设置一个阙值 β \beta β来计算得到辅助信息 L g ( X ) L_g(X) Lg(X) L g ( i , j ) = { 1 if  ( G r ( x i , j ) − G r m i n ) G r m a x − G r m i n ≥ β 0 if  ( G r ( x i , j ) − G r m i n ) G r m a x − G r m i n < β L_g(i,j)= \begin{cases} 1 & \text{if } \frac{(Gr(x_{i,j})-Gr_{min})}{Gr_{max}-Gr_{min}} \geq \beta \\ 0 & \text{if } \frac{(Gr(x_{i,j})-Gr_{min})}{Gr_{max}-Gr_{min}} < \beta \end{cases} Lg(i,j)={10if GrmaxGrmin(Gr(xi,j)Grmin)βif GrmaxGrmin(Gr(xi,j)Grmin)<β其中 G r m i n Gr_{min} Grmin G r m a x Gr_{max} Grmax分别是梯度绝对值的最小和最大值。最终标签 L f ( X ) = M ⋅ L g ( X ) L_f(X)=M \cdot L_g(X) Lf(X)=MLg(X)。最新的损失函数为 L G n e w = − R f ( X , M ) × ( M ⋅ L C E ( G θ ( X ) ) , M ⋅ L g ( X ) ) L_{G_{new}}=-R_f(X,M) \times (M \cdot L_{CE}{(G_{\theta}(X)),M \cdot L_{g}(X)}) LGnew=Rf(X,M)×(MLCE(Gθ(X)),MLg(X))
在这里插入图片描述

Experiments

实验模型和参数设置具体看论文,懒得写了。

定性评估

在这里插入图片描述
由此可见与其他的sota方法比,该方法更好的精确地找出来重要部分。
模型随机测试结果图:
在这里插入图片描述
其他实验:
在这里插入图片描述

定量评估

在这里插入图片描述
其他还有很多实验这里不具体展开了,总的来说实验还是非常充分的,具体可以自己看论文,最后附送论文地址-Interpreting Image Classifiers by Generating
Discrete Masks

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值