本文参考南洋理工大学李宏毅教授对数据可解释性的看法。
Model Explaination
在某些场景,我们在使用一些机器学习模型处理数据以得到结果时,往往也会寻求一个解释,也就是数据的结果是从何而来的。
举个例子,医生在使用医疗诊断的模型获得诊断结果时。医生或是病人不可能仅仅依靠得到的结果就决定病情。重要的是,通过结果得到的过程,也就是结果的解释最终确定结果是可以被认可的。
除此之外,还有一个原因:也就是利用算法的解释以提升其在实际场景的表现。
我们知道,有些模型是有很强的可解释性的,比如线性模型、决策树等等。但是它们都有一个问题,不够powerful;
但是,对于一些比较powerful的模型,比如深度学习的一些网络。但问题是,它的内核是个黑盒子。
那我们是不是为了可解释醒就放弃这些有黑盒子的模型了呢?
当然不是,暂且不说这些具有可解释性的模型是否在大数据集或者说在大特征量也能做好解释,如果仅仅为了可解释性就放弃了这些模型,那真的就是丢卒保车了
最开始学习这些算法的时候,我所认为的可解释性就是完全了解机器学习的模型是怎么运作的。包括它背后的数学原理,比如矩阵每一步变换,包括每一步运作针对实际场景所对应的意义。
但实际上,这不是必要的,或是不是所有场景都需要的。
举个例子,我们自己在用脑子做决策的时候,或者是在做好决策时,我们是不是都得追根溯源?我看不尽然,因为我们不可能完全了解人脑的运作,而且我们也不会因为这样就不相信自己。
对于自己本身的工作,也就是数据挖掘工程师,我所认为的可解释性就是让自己信服,或者是业务方信服的可解释性。
比如说,法官在法庭利用模型时,比如分类算法。为了保证在庭审时没有种族歧视,在分类算法中保证没有肤色或种族的这一项分类指标,那我们就可以说这个模型在这个场景的可解释性是使人信服的。
在本文中,我们均在以下例子的基础上进行描述
有可能是通过狗的耳朵判断,有可能是通过狗的眼睛判断,当然也有可能通过狗的脚判断。
本段参考Karen Simonyan等人的论文
Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
Saliency Maps是用来做模型的解释的。它可以用来了解哪些变量对于模型来说是重要的。
Saliency map也可以理解为是特征图,可以告诉我们图像中的像素点对图像分类结果的影响。
简单来说,通过不断地遮蔽一个个区域的像素,比如猫的某只耳朵。
通过遮蔽一个个这样的小区域,判断遮蔽后对于准确率的影响程度。如果影响较大,则这个这个特征或是区域就越重要。
最后,我们生成了这样的一张图
从图中我们看到,除了狗狗的区域是较亮的,且狗狗不同区域的亮度是不同的;除此之外,这张图的其他区域,比如图中的土地是黑的。因此我们可以说,神经网络在判读这只狗是狗的依据是通过狗身上的特征,而不是通过图上其他特征,比如土地来判断的。
我们也可以看一个相反的例子, 来自PASCAL VOC 2007 data set。那算法在判断这张图中的马,是怎么判断的呢?
通过Saliency Maps,我们可以看到,判断这张图中的马是马,大部分不是通过马本身的因素决定的,而是通过左下角的区域判断的,那左下角是什么东西呢。
放大来看其实是:
This slide is from: GCPR 2017 Tutorial — W. Samek & K.-R. Müller
也就是说,算法实际上识别的是这两行字。
以下的方法是针对弥补以上Saliency Maps缺陷的,具体的方法可参照文献。因无法在较短的篇幅就阐述完毕,因此在此略过。
这些方法主要还是解决图像问题的可解释性,也就是较为复杂的神经网络模型的可解释性。
对于我们需要的机器学习模型可解释性,可以总结出这两种方法(基于上述的观点)
敏感性分析
其基本原理就在于观察模型对于哪个特征更为敏感;
以分类器为例
如果删掉一组数据,模型的决策边界有了剧烈的变化,那么我们就说这组数据是非常敏感的,同时它也是这个分类器判别的一个重要依据
基于梯度的方法
相较于敏感性分析,这种方法可以更量化变化
还是以分类器为例
具体来说,就是将数据集中的特征通过梯度变化的比较,来显示数据集中的哪些特征是分类器作为分类的依据
最后,对可解释性做出自己最后的一个理解
对于可解释性的研究,个人认为与业务分析本身是密不可分的。
也许很多人会认为,现如今随着机器学习的发展,模型与算法的深度及难度已经远超出人类理解的极限,我们的理解力很难跟上算法的脚步,也就是说它已经远超于我们的理解力之上。
但我认为之所以追求可解释性,是因为机器学习本身是以人为中心的。也就是说,它是为我们服务的。其反映的是我们如何通过模型的解释性达到使人类对模型信任的地步,从而创造出更为安全但也非常有效的应用。