为什么需要机器学习的可解释性?
1、我们需要知道机器做决策的背后理由,否则谁敢真正应用于实际,例如贷款发放、医学诊断、帮助法官判案、自动驾驶非正常紧急刹车等等,都直接作用于人类,搞清楚能决策成功的原因很重要。
2、我们可以通过这个解释性来修正我们的模型,提升模型的性能。
可解释性 VS 强劲力
有一些模型在本质上是可以解释的,例如线性模型(从权重能知道特征的占比重要性),但是效果却并不厉害。深度神经网络很难解释其操作机制,因为它是黑箱,但是他却比线性模型的效果更好,我们应该努力去研究其机制的可解释性,而不是逃避黑箱模型!
那有没有一种模型同时具有可解释性和强劲力呢?决策树,一棵树能同时具备上述两个要素。决策树有很多的节点,每一个节点都会问一个问题,让你决定向左还是向右,最终当你走到 Leaf Node 的时候就可以做出最终的决定,因為在每一个节点都有一个问题,看那些问题以及答案就可以知道整个模型是如何做出最终的决断。但是在实际训练中,我们往往会用到很多棵树,这种情况也很难解释其机制。
做机器学习的可解释性,做到什么程度?我们不需要完全知道网络是怎么运行的,只要做出来的解释性是能够让人认同就行。其实对人而言,也许一个东西能不能让我们放心,能不能够让我们接受,理由是非常重要的
什么叫做好的 Explanation
好的 Explanation就是人能接受的 Explanation,人就是需要一个理由让我们觉得高兴,而到底是让谁高兴呢
explainable ML的分类
分为局部可解释性和全局可解释性,局部可解释性是针对一个特定的输入,为什么这张图片就是一只猫呢。全局可解释性是针对模型而言,不涉及某一具体的图片,对一个 Classifier 而言,什么样的图片叫做猫?
Local Explanation(局部可解释性)
哪个元件最重要
给机器一张图片,它知道它是一只,到底是这个图片裡面的什么东西让模型觉得它是一只猫
判断component对做出决策的影响力,方法一般是删除或者修改某一component,如果网络的输出发生了巨大的改变,影响最后决策结果,那么这个元件就是很重要的。
研究一个影像裡面每一个区域的重要性的时候,在这个图片裡面不同的位置放上灰色的方块,当这个方块放在不同的地方的时候,Network 会 Output 不同的结果。下图顏色代表Network 输出正确结果的几率,蓝色代表低几率,红色代表高几率,而每一个位置代表了这个灰色方块的位置。
最右边的图,机器到底是真的看到了阿富汗猎犬,还是把人误认為狗呢,可以把这个灰色的方框在这个图片上移动,然后发现这个灰色的方框放在人的脸上的时候,机器仍然觉得它有看到阿富汗猎犬,但是当你把灰色的方框放到这个位置的时候,机器就觉得它没有看到阿富汗猎犬,所以它是真的知道这一只就是阿富汗猎犬,并不是把人误认為阿富汗猎犬。
Saliency Map
有N个输入元件x(如果是输入图片的话就是N个像素),只对其中的某一个 x 做出 Δx 的改变,其余的 x 保持不变,然后计算cross entropy的变化值 Δe ,再计算 Δe/Δx 的值,值越大,证明该 x 对决策越重要。实际上在做偏微分。
注意点:交叉熵e 越大,判断结果和正确图片的差距越大,即辨识结果越差。saliency map(显著图)中的白点越白,代表 Δe/Δx 的值越大,该处的像素点对决策越重要。
举例来说,给机器看这个水牛的图片,并不是看到草地,也不是看到竹子,而是真的知道牛在这个位置,所以才会 Output 牛这个答案
一个真实的例子,有一个 Benchmark Corpus,叫做 PASCAL VOC 2007,裡面有各式各样的物件,机器要学习做影像的分类,机器看到这张图片,它知道是马的图片,但如果你画 Saliency Map 的话,发现左下角对马是最重要,因為左下角有一串英文,这个图库裡面马的图片很多都是来自於某一个网站,左下角都有一样的英文,所以机器看到左下角这一行英文就知道是马,根本不需要学习马是长什么样子
局限性:noisy gradient(杂讯梯度)
Saliency Map会存在杂讯梯度的问题,在未经处理的显著图(下图中间)中,白点分布杂乱无章看不出规律,通过smoothGrad方法后才减少了杂讯,使显著图有规律可循。
smoothGrad:给输入的图片随机加入(各种不同的)杂讯,制造出很多带有杂讯的输入图,然后将这些输入图得到的显著图作平均,这样就知道哪些像素点才是真正的决策因素了。
局限性:gradient saturation(梯度饱和)
光看偏微分gradient不一定能看出component的重要性。例如在下图中,横轴代表的是某一个生物鼻子的长度,纵轴代表说这个生物是大象的可能性。大象的特徵就是长鼻子,一个生物在鼻子长度比较短的时候,随著鼻子长度越来越长,是大象的可能性越来越大,但是当鼻子的长度长到一个程度以后,就算是更长也不会变得更像大象。蓝点处鼻子很长,但是鼻子长度的变化对判断大象几乎没有影响了,也就是此时偏微分为零,光看 Saliency Map可能认为鼻子的长度对是不是大象这件事情是不重要的,不是判断是不是大象的重要的指标。所以不仅要考虑偏微分,还要考虑其余因素,具体参考下面论文。
网络如何处理输入数据
既然是找寻网络的可解释性,那么就要知道网络的隐藏层到底发生了什么,要知道每经过一层网络之后的结果是个什么东西。
visualization(可视化)
我们将隐藏层的输出抽出来,并将其维度降低,例如将100维的输出向量转成2维的向量,然后用2维向量生成图片或者图表。
资料中有很多句子是重复的,比如A、B 、C三人分别说了 How are you。第一张图是直接用输入内容降到二维,画在二维的平面上,每一个点代表一小段声音讯号,每一个顏色代表某一个讲话的人,杂乱无章;第二张图是用中间隐藏层的输出做出的图表,每一条纹代表同样内容的某一个句子,不同颜色代表不同的语者,网络把同样的内容、不同人说的句子align在一起,所以最后就可以得到精确的分类结果
probing(探针)
我们直接训练多个分类器,将隐藏层的输出放到分类器中(例如词性分类、地理人名分类),从而就知道每一层是在分离什么资讯。假如第一层输出在词性分类的准确率高,那么证明第一层主要用于处理词性了。但是这个方法的结论不一定适用,因为可能我们的分类器性能本身就低........
还可以将文字转语音用于模型可解释性,输入一段语音,从隐藏层中抽取输出,假如这段输出合成的语音不包含语者资讯(机器人声音),那么就证明在训练过程中抹去了语者资讯,只保留语音内容。
global explanation(全局可解释性)
filter是怎么检测的
检测的基本思想
对于一张未知的图片,输入神经网络后,从隐藏层抽取输出,将其feature map(特征图)表示出来,如果某些特征值很大,那么就证明输入的图片 X 包含有该层filter能检测的图案。但是我们没有图片怎么办?用机器自己创造的图片,包含filter能检测的pattern。
用数学语言描述机器创造图片的过程:
特征图中每一个元素的值表示为aij,用梯度上升的方法,找出能够使aij最大的 X,这个 X 就会包含filter能侦测的pattern。
以数字辨识为例:
第一张图是通过隐藏层的输出找 X 可能包含的图案,找出来的 X 特征是横线斜线啥的。第二张图是通过最后结果找 X 可能包含的图案,当输出为0~8时,找到的 X 看起来都是杂讯,没有啥规律,就和恶意攻击时的杂讯一样。
改善检测效果
为了改善上面第二张图,让我们找到的 X 能够看起来像数字。我们给函数 X∗ 加上一项R(X),这一项是用来衡量 X 有多像数字,最后找到的结果还是有点数字的影子。
采用生成器解决找不到像图片的 X 的问题
上面通过神经网络的结果来找 X ,这个 X 要看起来像数字。我们发现很难找出像样的 X ,所以我们改变策略,将找像样的 X改为找像样的低维向量。操作过程是这样的:通过图片生成器,训练出能够转变成training image的低维向量,然后去找能使结果yi能够最大的低维向量z∗ ,再用找到的z∗ 去生成图片,这样就能解释神经网络在干什么了。
7.2.5 展望 outlook
可以用简单模型来模仿复杂model的行为,再分析简单模型,这样就知道复杂model的行为在干嘛了。当然我们并不是让简单模型去模仿黑箱的全部行为,而是通过简单模型模仿黑箱中一小块区域的行为!
恭喜