闲话时间
这是一篇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}
X∈Rh×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(X⋅M)这里的鉴别器使用了预训练的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
X⋅M经过鉴别器
D
D
D的预测向量,通过训练生成器来最小化上述损失值来生成高质量的分数图。然而从分数图到
M
M
M是个采样过程,loss的梯度不能更新到生成器
G
G
G,因此需要用策略梯度。针对该损失值的理解:当
y
=
i
y=i
y=i时,指示器置1,否则指示器置0。也就是说只取
X
⋅
M
X \cdot M
X⋅M经过鉴别器
D
D
D后对应于原图得出分类结果的那个概率值,取反后求最大值,再换句话说就是使
X
⋅
M
X \cdot M
X⋅M的预测类别尽可能与原图经过鉴别器
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×w∑i=1w∑j=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×w∑i=1w∑j=1h(∣mi,j−mi−1,j∣+∣mi,j−mi,j−1∣)该函数是保持生成的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)=∣∂X∂Sy∣
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 Grmax−Grmin(Gr(xi,j)−Grmin)≥βif Grmax−Grmin(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)=M⋅Lg(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)×(M⋅LCE(Gθ(X)),M⋅Lg(X))
Experiments
实验模型和参数设置具体看论文,懒得写了。
定性评估
由此可见与其他的sota方法比,该方法更好的精确地找出来重要部分。
模型随机测试结果图:
其他实验:
定量评估
其他还有很多实验这里不具体展开了,总的来说实验还是非常充分的,具体可以自己看论文,最后附送论文地址-Interpreting Image Classifiers by Generating
Discrete Masks