社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

简单梳理一下机器学习可解释性(Interpretability)

小白学视觉 • 2 年前 • 298 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

来自 | 知乎    作者 | 谢天凯
链接 | https://zhuanlan.zhihu.com/p/141013178

本文经作者授权转载,请勿二次转发

机器学习可解释性在学术界也讨论了好几年了,一直想写一篇关于这个的总结,今天就来尽量用大白话帮大家总结一下这个方面的概念和近些年的发展进度。
关于机器学习可解释性(Interpretability),又或者是XAI(Explainable Artificial Intelligence )其实就是搞机器学习的研究者们始终存在的一个担忧:很多现在的深度神经网络没有办法以一种从人类角度完全理解模型的决策。我们知道现在的模型既可以完胜世界围棋冠军电竞冠军,图形识别语音识别接近满分,然而我们对这些预测始终抱有一丝戒备之心,就是我们因为不完全了解他们的预测依据是什么,不知道它什么时候会出现错误。这也是现在几乎所有的模型都没法部署到一些对于性能要求较高的关键领域,例如运输,医疗,法律,财经等。我们会发现这些领域仍然无法完全相信模型的预测能力,试想一下,如果哪天5级无人驾驶车真的突然问世了,你会真的放弃方向盘上路在车里睡觉吗?因此人们现在急于想要探求出的是,我们有没有办法去解释这些模型,从而真正建立人与模型之间的信任。
   什么是可解释性(Interpretability)?
 
对于比较模糊的理论和学科来讲,一般开头都需要抠抠字眼。可解释性其实是我从Interpretability翻译过来的,还有一个词是Explainability。这两个词在一开始的时候其实是经常互换的,大家都指的是一个意思,就是对模型的行为有一个解释。之后两个名词又有了些细微的差别:Interpretability或者Interpretable AI是使本就透明的模型(白盒)通俗易懂,所有经验水平的用户都可以明白模型的含义;而Explainabilily或者Explainable AI则是研究者对于黑盒模型的行为作出人们所能理解的解释。本文讨论是包括这两种理论的更广义一些的可解释性。
那么也许会有人问,如果可解释性的目的是把模型的行为变成人类理解的因果关系,那么在一个有成千上万neuron的神经网络里,我们细致地要探究到每一个neuron如何传播吗?其实不然。可解释性不需要知道网络里面的每一个数字,每一个矩阵,每一个激活函数。这里我们又要引出第二个问题,那就是我们为了什么而要可解释性。 
   为什么要可解释性?
 
还记得2019年CVPR的时候一位大佬(名字忘记了)也提过一句关于神经网络的可解释性。他认为也许可解释性是没有一个确切的解的:“模型也许像心理学,艺术一样,或许根本就不可解释”。这也体现了这个领域很多人持不同的意见。于是我们要思考的是,为什么我们要可解释性?
Google Brian的Been Kim在她的演讲中提到一个词:Fundamental Underspecification(翻译无能)。大概的意思是,可解释性不是为了一个明确的目标(像是一个待优化的目标函数)而存在,而是为了确保一些方面因为可解释性本身而得到保障。一个简单的例子就是安全方面。我们没有办法把安全这个方面量化到一个目标,然后说只要我们达到这个目标,无人车就是100%安全,因为我们不可能枚举出所有的不确定性事件危险事件然后我们统一优化他们。而对于模型开发者来说,我们想知道模型性能不佳的根本原因,而不是持续炼丹。这样的方面还有很多,包括现在的机器学习在保证高性能高精确率的情况下,还要带有一些人文主义色彩。比如分类器不可以根据种族肤色性别作为分类的依据,不然的话就扣上歧视的帽子了。
有了可解释性的必要性,我们就要进一步明确,什么时候需要可解释性,什么时候不需要。需要的时候是当我们考虑模型所涉及的因素的影响是比较模糊的或者没法形成明确的目标的时候。比如说我们想确保模型是公平的,可靠的等等。当然如果有一天这些方面有了万全的定义和量化指标的时候,我们也许就不需要可解释性了。 
   如何实现可解释性?
 
关于实现可解释性的方式方法,Kim摆出了一个比较通用的公式来概括我们要做的事:
其中Q是一个解释性的评价方程,E是实现可解释性的具体方法。整个过程就是让我们寻求这样一种解释方法:该方法使得给定特定的数据(Data)和针对于某种特定的任务(Task),特定经验的人群(Human)拥有对于特定的模型(Model)最大程度上的理解。
基于现在存在的方法,我们可以把实现可解释性的方法按照训练模型周期的流程划分,即分为模型训练前,训练中,训练后三个阶段。
训练前期的可解释性的目标可以直接表示为:
也就是说,在这一过程中,我们要做的就是尽可能地了解数据。传统机器学习理论中我们也知道数据的分布为IID是最基本的假设,然而实际上数据的分布不是。对于训练前期的可解释性重点在于数据的分析。用到的方法一般有数据可视化,统计分析数据分布(MMD)等。
训练过程的可解释性目标可以表示为:
这个过程也同样可以理解为,我们如何去打造可解释的模型。之前也讲到了,Interpretable AI和Explainable AI的两个对可解释性的阐述有细微差别,那么这个在训练过程中一边创建可解释性一边训练模型其实就是等同于我们创建的就是可解释的模型,即interpretable的模型,然后基于此,我们追求最好的模型表现。一个最简单的例子就是决策树。决策树是可解释的,不过我们也知道当决策规则越来越多时,整个树会变得十分难于维护。类似的还有规则集合(Rule Lists/ Rule Sets)等。他们都有类似的局限性,不过回到可解释性的目标来看,对于不同的任务和数据,这样的方法不见得是糟糕的。
训练后的可解释性目标即是:
这个也是目前该领域做的最多的尝试策略。我们企图通过不同的手段来解释这些既有的黑盒算法,从而来解释这些黑盒模型的决策依据。比较典型的两种方式是敏感性分析(Sensitivity Analysis)和基于梯度的方法(Gradient-based Methods)。
首先敏感性分析的出发点就是看你的模型对于哪个数据实例非常敏感。例如一个分类器,如果我们删除掉一个数据点,模型的决策边界有了剧烈的变化,那么我们就说这个数据点事非常敏感的,同时它也是这个分类器判别的一个重要依据。LIME这篇文章就是基于这样的思想,对于特定的数据点进行各个特征的扰动,从而给出分类器局部的解释,即局部来看,什么特征是最影响分类器的决策的。同样的还有Koh提出的Influential function,用来解释数据点对SVM的影响程度。
基于梯度的方法说起来也比较简单,其实就是看输入的哪一部分更影响决策。对于一个图片识别模型来说,这种方法就体现在一个saliency map上。也就是将图片的每个像素通过梯度变化的比较,来显示图片的哪些像素是分类器作为分类的依据。但是要注意,我们在这里没有讲到的是解释性的评价。对于saliency map来说,有一个被证实的偏见是来自于我们人类本身,它就是Confirmation Bias。这种偏见就是说,我们即使用这种方式看到了这些明显的像素对于决策占比很高,只是迎合了我们人类的理解,而实际上它并没有反映出它是模型决策的证据。这个结论也是kim团队做出的一项对于saliency map的检查。他们发现,即使把神经网络的每一层的输入随机化,许多模型的saliency map仍然是一个对于人类可识别的轮廓或形状,而理论上讲,打乱神经网络的各个层的输入和输出,这个模型只是一个随机的混乱预测,不应该找出人可以理解的证据的。于是随后推出了一些benchmark来评价可解释性的可靠程度。
训练后的可解释性实现方法还有很多不同的尝试,例如surrogate models,knowledge distillation,hidden layer的可视化等等,以后会另行总结。

   对于可解释性的一些看法
 

对于可解释性的研究,个人认为是一个与AI行业有着密不可分的关系。很多人也许会觉得现如今的模型和算法已经远远超出了人类的极限,我们眼中的不可解释或许是它已远在我们的理解力之上,甚至认为人为的干预只会变成自动化(automation)的干扰项。但可解释性的必要性在于,它背后的理论是已人类为中心,反应的是我们该如何通过解释模型达到人类对模型的信任,从而创造更加安全可靠的应用,进而推动整个AI产业的进步。

参考文献

[1]Marco Tulio Ribeiro, Sameer Singh, and Carlos Guestrin. 2016. Why Should I Trust You?: Explaining the Predictions of Any Classifier. (2016), 1135–1144. DOI:doi.org/10.1145/2939672

[2] Koh, Pang Wei, and Percy Liang. "Understanding black-box predictions via influence functions."Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.

[3] Doshi-Velez, Finale, and Been Kim. "Towards a rigorous science of interpretable machine learning."arXiv preprint arXiv:1702.08608(2017).

[4] UX defines chasm between explainable vs. interpretable AI

[5] Adebayo, Julius, et al. "Sanity checks for saliency maps."Advances in Neural Information Processing Systems. 2018.

[6] Doshi-Velez, Finale, and Been Kim. "Considerations for evaluation and generalization in interpretable machine learning."Explainable and Interpretable Models in Computer Vision and Machine Learning. Springer, Cham, 2018. 3-17.APA

[7] Interpretable Machine Learning(ICML 2017 Tutorial) vimeo.com/240429018

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇




下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲 即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147297
 
298 次点击