首页 » 漏洞 » ICML 2017最佳论文:为什么你改了一个参数,模型预测率突然提

ICML 2017最佳论文:为什么你改了一个参数,模型预测率突然提

 
文章目录

雷锋网 AI 科技评论按:正在进行的2017 机器学习国际大会(ICML 2017)早早地就在其官网公布了本次会议的最佳论文评选结果(重磅 | ICML 2017最佳论文公布!机器学习的可解释性成热点),其中最佳论文奖为《Understanding Black-box Predictions via Influence Functions》,其主题为如何利用影响函数理解黑箱预测。

在8月7日下午,最佳论文奖得主Pang Wei Koh(来自新加坡的斯坦福大学在读博士生)就他们的工作做了一场报告。雷锋网 AI科技评论在大会现场记录了这场报告,下面为雷锋网AI科技评论对现场Pang Wei Koh的报告进行整理,与大家共同分享。

图文分享总结

大家下午好,感谢大家来聆听这个报告。

动机

下面我将讲述如何用一种被称为影响函数的统计工具来研究神经网络的预测问题。

在过去几年,机器学习在许多领域中的模型做出的预测准确度越来越高,但是这些模型本身却也变得越来越复杂。然而一个经常会被问到的问题——系统为什么会做出这样的预测?——却难以回答。

例如我们通过图中左侧的训练数据来训练一个网络,当输入一张图片时它会做出一个预测。为什么这个模型做出这样的预测呢?我们知道模型学习的所有信息和“知识”都是从训练实例中得出的,所以应该可以查询特定预测受到各种数据点的影响有多大。

如果一个特定的训练点不存在或被微弱扰动,例如这里对经验风险函数进行微调后,预测的置信水平就会由79%提升到82%。那么两次预测的损失函数的差就可以代表某个训练点改变后对整个训练的影响。

影响函数

在这里我们的目标就是测量如果我们增加经验风险函数的值,损失函数的改变。这里结构风险函数是由具体的训练数据决定的。在函数取光滑条件时,那么这个测量值就是这个函数I,也即影响函数。这个公式第二行中的H是Hessian矩阵。从这里我们可以看出,影响函数是依赖于具体的模型和训练数据的。

例如我们看两个例子。右侧两列中第一列是用像素数据训练的RBF SVM,第二列是逻辑回归模型。用这两个模型分别对左侧的测试图形进行预测,我们得到的影响函数,RBF SVM模型的影响函数随着距离测试物越远会迅速减下,而逻辑回归模型的影响函数则与距离无关。所以我们可以利用影响函数来更好地理解模型。在我们看影响函数的应用之前,我们要先讨论一下这种方法中潜在的问题。

第一,计算效率低

要想实用影响函数,我们必须构建经验风险函数的Hessian矩阵以及求矩阵的逆。这对有几百万个参数的神经网络模型来说是难以接受的,尤其是求逆过程将会非常缓慢。

最好的办法就是我们不明确地求出Hessian矩阵的逆,而是通过Hessian-vector products近似。

第二,非光滑损失

当损失函数的一阶、二阶导数不存在时,我们可以通过剔除这些非光滑的点,我们发现仍然能够很好地预测。例如这里的smoothHinge模型,当t=0.001的时候能够更好地符合实际的改变。

第三,很难找到全局极小值

在前面我们假设了为全局极小值,但是有时我们可能只是得到一个次极小值。这种情况下可能会导致Hessian出现负的本征值。

我们通过凸二次近似方法对损失函数构建一个软极大值来取近似。这样可以在很大程度上降低因为是非全局极小值造成的问题。

应用

好了,最后我们讲一下影响函数的应用。

1、调试模型错误

当模型出现错误的时候我们能否帮助开发者找出哪地方出了问题呢?我们用一个例子来说明,我们用逻辑回归模型来预测一个病人是否应当重新入院。训练模型有20k的病人,127个特征。

为了说明情况,我们把训练模型中3(24)个孩子需要重新入院改成3(4)个,也即去掉20个健康孩子的训练样本。当用一个健康孩子来做预测时,模型就会出错预测为需要重新入院。

我们计算每一个训练点的影响函数。这个图很清楚显示了4个训练孩子的影响值是其他样本的30-40倍,其中一个孩子为正,其他3个为负。

仔细考察4个孩子的127个特征,发现表示为“孩子”的特征起主要贡献。

2、对抗训练

最近的工作已经产生了与实际测试图像无法区分的对抗测试图像,以致完全可以愚弄分类器。实际上,Ian Goodfellow在内的一些研究者已经表明了高准确率的神经网络也是可以被欺骗的,用来欺骗它的样本是精心选择过的,人眼看起来正常。这样的样本就叫做“对抗性测试样本”。

构建它们的方法之一是沿着测试输入对应的测试损失的梯度,不断修改测试输入,从而让测试损失增大。

那么既然有对抗性测试样本,我们能否创造出对抗性训练样本呢,其中训练点上的小变化就可以改变模型的预测结果。

我们问了自己这个问题,然后接下来很自然地就尝试在测试损失的梯度上做同样的事情。不过现在不是做关于测试特征的,而是做关于训练特征的。换句话说,我们先给定测试样本,然后沿着测试样本的梯度变化修改训练数据。

然后我们发现,它的影响函数可以帮助我们找到这个梯度,因为它们根本上是一回事,随着训练的进行,模型的预测上会发生的事情就是这样。我们得到的结果是这样的,从数学的角度讲它和基于梯度的攻击是一样的,对不同的模型和数据集都可以起作用。

这样的方法在实际应用中也可以发挥作用,我们设计了简单的二分类任务,模型要确定图像中的是狗还是鱼,两种东西看起来挺不一样的。我们用到了一个 Inception 那样的逻辑回归模型。令我们惊讶的是,如果仔细地选择训练数据,然后仔细地选择要增加在其中的干扰,那么训练数据中一点点的改变,就可以让同一个类型的多张测试图像的预测结果都出现问题。这说明这样的攻击在某些环境下具有相当的危险性。这个问题上其实还有很多值得研究讨论的,待会儿我们可以再聊。

结论

最后做个简单的总结。我们先讨论了模型是如何做出预测的。我们知道模型是通过训练数据得到的,我们将其写成公式,然后就知道改变训练数据以后模型会如何变化,而且我们还能通过它偏离训练数据的程度更好地理解模型的预测结果。影响函数为这些事情提供了一种高效的手段。

在这项工作中,我们还有很多事情需要做,例如如果从医院里移除了所有的病人怎么办,我们有什么办法防止这件事发生吗?如果我们有一个很大的凸模型,运行SGD好几次,……目前工作只是在这个方向上的一小步。在能够很好地理解模型之前,还有很多基础的问题等待我们去解决。

谢谢大家!

(完)

雷锋网(公众号:雷锋网) AI 科技评论整理。

论文下载:https://arxiv.org/pdf/1703.04730.pdf

相关文章:

重磅 | ICML 2017最佳论文公布!机器学习的可解释性成热点

雷锋网原创文章,未经授权禁止转载。详情见转载须知。

原文链接:ICML 2017最佳论文:为什么你改了一个参数,模型预测率突然提,转载请注明来源!

0