Understanding black-box predictions via influence functions_1703.04730_icml_best论文理解

作者:tonygsw

论文地址:https://arxiv.org/pdf/1703.04730.pdf

论文对应的github:https://github.com/kohpangwei/influence-release

1.背景:

    额。。之前去某学校夏令营中听一个老师说现在的机器学习中,用到的CNN,RNN啥的神经网络模型最大的问题就是可解释性差,对与绝大数的开发者来说:基本就是一个黑盒,你按照大致的框架堆模型,然后放进训练数据,经过很多的结点已经训练,期间你并不知道每个结点的参数发什么了什么变化,以及为什么某个训练数据会对这些参数产生改变

     这篇文章就是为解释神经网络提供了一种思路,利用了influence function(影响函数)。这是一个来自于稳健统计学(robust statistics)的概念,很好地了解深度学习的“黑盒”,让深度学习拥有了一些解释性。·

2.目的:

   文章目的就是利用influence function来了解深度学习的黑盒,有人问:为啥要了解它,知道怎么用就好了,其实不然,虽然1现在深度学习运用的很成功,但是有很多问题是不容易去解决的,比如:为什么我改了一个小小的参数整个模型的准确率却变化这么大。那么通过这个方法,我们能够初步了解训练数据对模型的影响,进而可以((1)理解模型行为。(2)对抗训练样本。(3)调试领域不匹配(4)纠正错误标签的样本。

3.

   我的数学不是很好(准确来说很垃圾),而文章中几乎全是公式,看的头疼,所以本文就很有大量借鉴别人的解析,有大佬看你见了还请见谅,而且我不一定可以说通,大家就当看看课外娱乐,别当真

4.

本文的特色之一是其严格、完整的形式化证明,因此先来交待一下本文所研究问题的数学定义。本文研究的是从输入空间X(如图像数据)到输出空间Y(如标签数据)的一般性的预测问题。记训练样本$z_{1}, ..., z_{n}$,其中$z_{i} = (x_{i}, y_{i}) \in X \times Y$。那么经验风险最小化为:

首先,本文假设风险是二阶可微,并严格的凸函数。因为Influence function是从训练数据的视角去观察模型的学习过程,所以先尝试更改训练数据。本文共做了两方面的数据更改,一是upweight训练数据,二是disturb训练数据。

(1)upweight训练数据。

初衷是为了观察删除一个训练样本对模型的影响。删除一个训练样本$z$得到新的经验风险最小化为:(有一个疑问:这里为什么没有乘以1/(n-1)?)

但这样一个接一个地删除训练样本所花费的重训练代价太高。幸运地是,influence function提供了一个高效的近似:删除一个训练样本等价于增加训练样本$z$一个很小的值$\epsilon$。那么得到的新的参数为:

基于文献[3]得到新参数的影响为:

其中$H_{\hat{\theta}}$是Hessian矩阵且是正定的。(因为假设经验风险是二阶可微且严格凸的)

最后,使用链式法则得到在训练样本$z_{test}$影响的函数的closed-form表达式为:

(2)disturb训练数据。

是为了观察修改训练样本的影响。假设一训练样本为$z = (x,y)$,得到新的修改样本为$z_{\delta} = (x + \delta, y)$。得到新的经验风险最小化为:

同样基于文献[3]得到新参数的影响为:

如果$x$是连续的且$\delta$非常小,那么新参数的影响可近似为:

最后使用链式法则,得到disturb的影响为:

三、优化

在计算(upweight和disturb训练数据都会涉及这个计算)

时,会遇到两个问题:一是需要求Hessian矩阵的逆和Hessian矩阵,对于n个训练样本的训练数据而言,其时间复杂度为$O(np^{3} + p^{3})$;二是需要计算所有样本的$I_{up,loss}(z_{i}, z_{test})$。这两个问题都会带来非常大的计算开销。

本文使用基于Hessian-vector products(HVPs)的两种方法近似计算解决上述两个问题:

第一种方法是conjugate gradients(CG)[4],第二种方法是stochastic estimation[5],详细介绍见论文。从而使计算所有样本点的时间复杂度被降低到$O(np+rtp)$。

四、验证与拓展

(1)损失函数与欧式距离的区别。

主要有两点区别:第一点是给更高训练损失的样本点更大的影响,认为异常值会对模型参数有更大的影响;第二点是权重协方差矩阵(即Hessian矩阵的逆)表明其它训练样本会对当前训练的样本产生影响。

(2)Influence function和留一法重训练的区别。

直线是留一法的结果,蓝色点是influence function得到的结果。可以看到,两方法得到的结果是接近的,也表明了influence function是一个好的近似,并且Hessian求逆近似也取得了好的结果。

(3)非凸和不收敛。

即使得到的不是全局最小值,而是局部极小值,influence function也能获得有意义的结果。

(4)不可微的损失。

本文采用hinge作为损失函数(不可微),然后使用平滑的hinge损失。结果发现平滑后的结果和原结果十分接近。

五、实例

(1)理解模型行为。

influence function揭示了模型如何依赖于训练数据和从训练数据推断的。两个模型可以通过不同的方式做出相同的预测。本文使用Inception v3和使用RBF作为核函数的SVM两个模型做了实验。

(2)对抗训练样本。

关键观点是告诉了我们怎样修改训练样本使损失变化的最大。

(3)调试领域不匹配。

领域不匹配是指训练集的分布和测试集的分布不匹配,会造成模型在训练时有一个高准确度,但在测试集上准确度很低。因为influence function可以找到对这类错误影响最大的训练样本。

(4)纠正错误标签的样本。

标记出对模型训练影响最大的一些训练样本。

 

实例

1.understanding model behavior

we wanna find a training sample that is the most responsible for a given prediction on a test image


将每个样本都删去后,都计算一下新模型在test image上的预测loss的变化,若I_up,loss为正,则说明删去这个样本后预测误差增大,即这个样本z对test image是helpful的。反之则为harmful。 


这里写图片描述

 

用RBF-SVM 和 Inception分别构建一个dog-fish二分类分类器,可以看出: 
对RBF-SVM,与test image的欧几里得距离越大的train image,influence越小;反之,与test image欧几里得距离最小的train image,删去后模型在test image上的预测loss变化越大。(正方向上的代表loss变大,即为helpful training images,如绿色的训练样本;反方向为harmful training images,如红色的训练样本) 
对Inception,模型在test image上的预测loss基本上与训练样本的种类关系不大,dog样本也会对模型正确预测出鱼有帮助。

2.对抗训练样本

对抗测试样本:在视觉上难以明显区分,且具有不同label,但可以完全愚弄分类器的测试样本。 
对抗训练样本:视觉上难以明显区分,但却可以使分类器在同一个test样本上的预测结果完全相反的训练样本。 
如何利用influence function生成对抗训练样本呢? 

由于这里写图片描述指的是loss对扰动的梯度,我们就知道了如何调整扰动量,可以使得在test上的预测loss增长最快啦。 
对于每个test image,都可以给training images的几个image加入扰动,从而使得新模型在这个test image的预测结果完全颠倒。 

经过attacks的training sets虽然在像素上变化很小,但是Inception 的feature layer上面的区别确实很大。说明inception model可以capture到这种attacks,可以通过检测feature vector来检测样本是否被attacked。另外,通过检查这里写图片描述的数量级也可以量化模型对training sets attacks的抗击能力:越小,代表对training sets加入扰动后的变化越小,即在test image上的预测loss变化越小,模型就越难被training sets attacked。 


这里写图片描述

 

3.检查领域误匹配

Domain mismatch:训练样本与测试样本不同分布时,会造成训练loss小,测试loss大。我们可以通过influence function找到使得test error最大的training example。 
分别把每个training example删去,计算这里写图片描述,若计算结果为正,则次training example对此test example为helpful;否则harmful。

4.修正错误标签

关键是找出对模型产生最大influence这里写图片描述(可能为正 helpful,可能为负 harmful)的训练样本。由于我们没有测试样本,就计算 
这里写图片描述估计出将第i个训练样本z_i删去后,在z_i上的预测loss的变化。即用这个z_i来当测试样本。

你可能感兴趣的:(机器学习)