必要性:在金融、医药、自动驾驶方面,模型必须可解释,知道分类错在哪才可以更好的改进模型
解释的两类方法:
1.找出为什么模型认为图片是一只猫的原因
具体操作:a.把图片中的一部分删掉,如果分类错了很多,可得这一部分对分类是很重要的
b.数值表达形式:给输入一个dx,看输出dy与它的比值大小来确定这部分输入对分类结果的重要性
举个例子:左边这张图,人眼判断这是不是马可能是靠看这匹马,而机器判断是靠左下角的字,这样就不对了
那如何在梯度图中去掉一些不重要的点:直接在原图中加入噪音,这样梯度图中零散的点就会消失(如第三张图)
c.在深度学习中,还可以把中间几层的结果抽出来,用PCA等方法降纬,看特征是什么
2.根据模型参数得出一只猫长啥样
方法:生成一张图使得经过一层后,左下角这个式子值尽可能大(方法和梯度下降法一致,只是取反方向)
具体实现中可使用GAN:把原始图片输入(作为z),训练image generator,使其可以根据目标产生X,再通过分类器得类别y
3.其他方法:用一个可解释的模型(比如树)来替代深度学习模型的效果(可以只模仿一小个区域内的效果,整体模仿树模型可能做不到