SmoothGrad: removing noise by adding noise
文章目录
背景知识
众所周知,许多机器学习算法是一个“黑盒”模型,通过” end-end”的方式去工作,输入数据例如RGB图像,输出目标类似于标签,但是中间的过程我们不得而知。然而理解机器模型到底如何工作对模型本身和针对问题如何搭建模型是十分关键的,况且在医药健康、金融以及教育等领域,对于机器模型的解释更是重中之重,好的解释可以让我们发现一些数据潜在的重要性。
Saliency map
理解图像分类系统决策的一种常见方法是找到对最终分类特别有影响的图像区域。这些方法(被称为敏感性映射、显著性映射或像素属性映射;使用遮挡技术或梯度计算为单个像素分配一个“重要”值,这意味着它们对最终分类的影响。本文描述了一种非常简单的技术,SMOOTHGRAD,它在实践中倾向于减少视觉噪声,也可以与其他灵敏度地图算法相结合。其核心思想是取一幅感兴趣的图像,通过对图像添加噪声对类似图像进行采样,然后对每个采样图像的结果灵敏度图取平均值。
Gradients as sensitivity maps
以图像分类系统为例,一个分类器会有多个类激活函数
S
c
Sc
Sc 将输入 x 映射到类别空间,对其求分类得分,分类结果取决于其映射值得大小,公式如下:
c
l
a
s
s
(
x
)
=
a
r
g
m
a
x
c
ϵ
C
S
c
(
x
)
class(x) = argmax_{c\epsilon C}S_c(x)
class(x)=argmaxcϵCSc(x)如果函数
S
c
Sc
Sc 是分段可微的,对于任何图像
x
x
x 都可以构造灵敏度映射(即重要性值)
M
c
(
x
)
M_c(x)
Mc(x) ,定义如下:
M
c
(
x
)
=
∂
S
c
(
x
)
/
∂
x
M_c(x) = \partial S_c(x) /\partial x
Mc(x)=∂Sc(x)/∂x这里
M
c
(
x
)
Mc(x)
Mc(x) 表示 x 上的每一个像素上的微小扰动对于
c
l
a
s
s
(
x
)
class(x)
class(x) 得分的影响。
这种方法在实际操作中确实能显示出与分类结果相关的区域,但求得的saliency maps通常在视觉上有很多的噪点(对这些噪点作用目前还不清楚,有可能这些噪点看似随机,实际上对网络的运作有很大的影响,也有可能这些噪点本身就不重要),但正是因为这些噪点的存在,导致只能大致确定相关区域的位置,而不能给出符合人类理解的结果,如下图。
Smoothing noisy gradients
灵敏度图中的噪声有一种可能的解释,据我们所知,在文献中没有直接提到:函数Sc的导数可能在小尺度上波动剧烈。换句话说,人们在灵敏度图上看到的表观噪声可能是由于本质上毫无意义的局部偏导数变化造成的。毕竟,给定典型的训练技巧,没有理由指望衍生品会平稳变化。事实上,所讨论的网络通常基于ReLU激活功能,所以Sc通常甚至不会连续可导的。
下图给出了强波动偏导数的例子。
考虑到这些快速的波动,可得梯度值的局部平均值比其在任何给定点上的
S
c
Sc
Sc 的直接梯度更有意义。这提出了一种创建改进的灵敏度图的新方法:我们可以基于带有高斯核的
S
c
Sc
Sc 的平滑,而不是直接基于梯度
S
c
Sc
Sc 的可视化。
在高维输入空间中直接计算这样的局部平均是困难的,但我们可以计算一个简单的随机近似。特别是,我们可以在一个输入
x
x
x 的邻域内随机取样,并对产生的灵敏度映射进行平均。其数学定义如下:
M
^
c
(
x
)
=
1
n
Σ
1
n
M
c
(
x
+
N
(
0
,
σ
2
)
)
\widehat{M}_c(x) = \frac 1n \Sigma_1^nM_c(x + N(0, \sigma^2))
M
c(x)=n1Σ1nMc(x+N(0,σ2))式中,
n
n
n 为样本个数,
N
(
0
,
σ
2
)
N(0, \sigma^2)
N(0,σ2) 代表标准差为
σ
\sigma
σ 的高斯噪声。在本文中,我们将这种方法称为SMOOTHGRAD。
实验结果
通过在输入图片多次加入随机噪声,对变换后图像求并求均值,达到“引入噪声”来“消除噪声”的效果。由下图可得,噪声系数在百分20左右时候的效果是最好的
由于没有基本事实标准来对灵敏度图进行定量衡量,所以我们考察了视觉的一致性,例:高光只出现在感兴趣的对象上,而不是在背景上。这个实验是有两个识别物,分别对这个进行解释在两减,并于其他方法进行比较,结果如下:
Multiplying maps with the input images
一些技术通过将基于梯度的值和实际像素值相乘来创建最终的灵敏度图(Shrikumar等人,2017;Sundararajan等人,2017)。这种相乘确实倾向于产生视觉上更简单和更清晰的图像,尽管不清楚这在多大程度上归因于原始图像本身的清晰度。例如,输入中的黑/白边可以导致最终可视化上的类边结构,即使底层的灵敏度图没有边。
然而,这可能会导致不希望的副作用。值为0的像素永远不会出现在灵敏度图上。例如,如果我们将黑色编码为0,那么正确预测白色背景上的黑球的分类器的图像将永远不会突出显示图像中的黑球。
另一方面,乘以梯度与输入图像有意义,当我们查看功能的重要性作为他们的贡献总分 y y y。例如,在一个线性系统 y = W x y=Wx y=Wx ,它是有意义的考虑 x i w i x_iw_i xiwi 的贡献的最后得分。
由于这些原因,我们在下图中显示了有和没有图像乘法的结果。
SMILKOV D, THORAT N, KIM B, et al. 2017. SmoothGrad: removing noise by adding noise. ArXiv [J], abs/1706.03825.