一 为什么需要Explainable ML
一个机器学习模型可以很强大,得到正确的答案,但是得出答案的理由可能是不能令人信服的,比如一些神经网络模型;而一些解释性强的模型,比如线性模型,它的准确性却没那么强。因此Explainable ML提出的目的是为了解释一个模型怎么运作。根据解释的方式不同,可以将其分为Local Explaination和Global Explaination两种。
二 Local Explaination
Local Explaination是指将一个图像让机器识别内容,然后解释为什么机器识别的是这个东西。一种做法是修改或者移除元素的某个成分,然后比较loss的变化,如果loss对某个成分的变化率很大,那么意味着该成分对于机器识别内容的决定性大。对于图像来说,某个像素的变化对loss的影响越大,那么saliency map上的点越白。
但是,这种做法对于解释模型结果有一些限制。其中一种限制是Noisy Gradient,模型可能会根据图像的背景或者是一些其他的干扰得出正确的答案,解决这种限制的办法是使用SmoothGrad,通过给输入的图像增加noise,然后得到这些图像的saliency map,最后再将它们平均。
这种方法的另外一个局限性是Gradient Saturation,这是指某一个成分达到了某一个值时,再对其大小进行改变对结果的影响不大了,但是这个成分对于解释模型结果是非常重要的。一种解决办法是使用Integrated Gradient。
除此以外,也想要知道一个神经网络如何处理输入数据,这里有两种做法,一个是对数据进行可视化,另一种是进行一个探测。对数据进行可视化是将神经网络某一层的输出通过PCA或者t-SNE进行降维,通常降维到2维,以便于在二维平面内绘制出降维后的结果,从而对数据进行分析。后者则是对神经网络某个输出进行探测,以语音识别为例,将经过某一层后得到的结果输入到TTS中去,尽可能还原模型最开始的输入,最终会发现经过TTS后得到的语音越来越模糊,可以说明模型确实是对语音内容进行了提取。
三 Global Explanation
Global Explanation则是用于解释整一个模型的。以手写辨识为例,我们想知道每一个filter识别的是哪一种类型,那么可以对每一个filter的元素进行一个加总,然后update输入的图像,使其加总的结果最大,最终可以得到每一个filter的X*。
另外,在这个手写辨识的CNN模型中,也可以通过使输出的类别最大从而知道什么样的输入图像可以得到该类型。
这种方式的一个问题是,得到的X*是一些杂讯。为了使输入更像数字,可以对优化的式子添加一些限制,例如使用生成器,通过update低维的向量获得z*,再将z*输入到生成器中,最终得到X*,而此时的X*会更像原始的图像。
另外,还有一种方式去解释这些黑箱模型,是使用一个可解释的模型(比如线性模型)去模仿这些黑箱模型,使这两者尽可能得到相似的输出。