Explainable ML
前言
前面我们曾经多次提出了深度学习模型黑箱性这一特点,所以这篇文章将会给大家讨论一下机器学习的可解释性。
一、为什么需要Explainable ML?
-
我们不仅需要机器结果的精确度,还需要进行模型诊断,看机器学习得怎么样。但是如果模型的内部我们一无所知,我们将无法清楚机器学习的真实情况,只得到一个分数,并不能有很强的说服能力
-
为了满足使用者的要求,但事实上如果把整个复杂的机器学习内部都弄清楚,这是很困难的并且意义不大的,一般我们只是想找到对整个机器学习过程一个简单的解释即可以认定该模型具有可解释性。
-
当模型出现问题的时候,我们需要快速调整模型,那就必须要知道模型的问题出现在哪里,可解释性的模型就显得极为重要。
-
简单的模型一般都具有很强的可解释性,但是一般效果都不好,比如说线性模型,所以这种模型一般我们很少采用。
事实上,决策树模型同时具有很强的可解释性能力和复杂的结构,不过由于单一决策树的模型还是比较简单,我们就要引入多棵树,也就是我们常说的随机深林模型。有一个很大的缺点:计算量太大
二、Local Explanation(局部可解释性)
1.什么是局部可解释性?
所谓的局部可解释性,就是当我们输入一个对象 x,其中有多个component,我们想要知道哪个component 对于完成模型任务起到关键作用。换句话说,我们需要找出最重要的feature,这个就是我们的目标。
2.移除组成要素(遮挡法)
我们以图像为例,我们只需要遮挡住图像的一个部分,然后对图片重新进行预测,然后得到一个根据权重大小绘制出来的颜色图,即可以判断哪个部分是们重要的feature。
很明显我们可以看到蓝色部分是我们想要找到的区域,这个区域就是影响判断的重要组成部分。
3.改变组成要素(基于Gradient)
这种方法需要采用Saliency Map(显著图)进行可视化,它的核心思想是通过改变我们的组成要素然后观察输出的变化,尽量令两者的比值越大,这样画出的显著图就越明亮,就能找到真正的核心组成部分
但这种方法会有一个很大的问题就是我们的梯度饱和:当一个组成特征的显著特点过大时,就会产生信息冗余,就是怎么变化,输出都不会改变了,那么梯度就会变为0,这样反而无法判断这一个显著特点过大的特征。
同时,这种方法禁不起被恶意攻击后的模型,当模型被恶意攻击后,将会融入噪声,这种噪声会产生奇怪的结果。
三、Global Explanation(全局可解释性)
1.什么是全局可解释性?
刚刚的局部可解释性是让输出找出影响最大的一个组成成分,而全局可解释性则将关注点放在了输入,我们需要知道最大概率输出的时候,反推回输入应该是一个什么样的东西。
2.如何实现全局可解释性?
- 以CNN为例,我们最后会得到一个y的输出,通过这个公式就能找到相应的输入。
X
∗
=
arg
max
x
∑
i
∑
j
a
i
j
X^*=\arg \max_x \sum_i \sum_j a_{ij}
X∗=argxmaxi∑j∑aij
- 但是我们发现这样形成的输入X很相似,人眼无法很好的识别,这种情况我们需要正则化,这样我们人眼就能很清晰地进行识别了。
四、LIME(Local Interpretable Model-Agnostic Explanations)
1.为什么要使用LIME?
- 虽然我们使用线性模型不能很好地实现深度学习的网络,但是我们可以使用线性模型去解释其中一个局部区域,这是因为线性模型计算量小,解释性强。
- LIME的局部保真度很好,在局部特征中能够很好地拟合复杂模型的效果
- 这里所指的是与复杂模型无关,换句话说无论多复杂的模型,像是SVM或神经网络,该解释器都可以工作。
2.LIME的算法步骤
input为x,output为y,都是一维的,表示Black Box中x和y的关系。
- 首先给出想要解释的point ,代入black box里面
- 选取point x附近的点 :将图像分割成一个个小块,作为单位进行分析,随机删除一些小块,构成不同的样本,然后输入到黑盒当中,得到识别出图片特征的可能性。
- 用线性模型对选取的点进行拟合
- 解释线性模型,也就解释了原来的NN 在这部分区域的行为
总结
由于本节内容比较简单,所以没有留下思维导图,这节内容虽然是科普类内容,但是对于我们深挖深度学习模型的背后还是有很大帮助的。