【综述专栏】初探Explainable AI
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
地址:https://www.zhihu.com/people/zijie0
背景
动机
模型作为知识的来源。人类在学习知识时,往往也是通过一系列观察到的数据,进行归纳和演绎。在数据量巨大的情况下,模型可以很好的帮助人类来自动化的做类似的知识提取,然后以模型解释的形式反馈给使用者。 确保安全性。例如医学应用,自动驾驶等场景中,模型出现错误造成的损失是巨大的。通过模型解释,我们一定程度上能知晓模型给出预测的来源是什么,并在此基础上提升其安全性。 检测模型偏见。前阵子在Twitter上就有对训练数据引起的模型偏差有过激烈的讨论,模型解释可以很有效的暴露这方面的问题,帮助我们提升其公平性。 提升用户接受度。在推进机器学习项目时,经常碰到的一个问题就是用户难以理解模型这类概率性输出的软件系统,引发不信任感。模型解释能给出依据,帮助用户理解并判断预测输出,在整体上帮助整个项目应用的落地。 协助模型开发管理中的调试和审核。在Software 1.0中,我们面对确定性的软件系统,有着非常多的辅助工具可以帮助我们进行调试和开发,例如各种debugger,profiler等。在Software 2.0中,面对复杂的数据和模型,非常缺少相应的工具让我们对模型的运作方式有深入的了解,导致很多时候大家调侃建模就是个“炼丹”过程。模型解释就是Software 2.0中的model development kit :) 结合人类与模型长处的重要桥梁。在算法不断演进的同时,其不足之处也越来越凸显,例如逻辑推理能力等方面的缺失。因此human-in-the-loop思想也逐渐兴起,在这个过程中怎么更好的结合两者的能力,非常需要模型解释工具的支持。
可解释性跟模型性能一定程度上是有矛盾冲突的,人很难理解多个因素的复杂交互关系。从更深层次看人类行为跟模型行为模式都很不一样,整个系统无法end-to-end训练,最后得到的结果也很可能不是最优的。 模型解释也给系统攻击者可乘之机。如果过多暴露模型决策细节,攻击者可以针对性的改变一些输入数据来骗过模型。例如在搜索引擎排名上就会有很多这方面的对抗,因此一般此类系统也不会主动暴露模型解释给用户。
模型解释分类
模型自带的可解释性 or 后处理的解释方法 适用于特定模型的解释方法 or 模型无关的方法 模型整体解释 or 对单条预测(局部)的解释
模型内部的信息。例如像线性模型的权重值,决策树的结构,神经网络的梯度信息等,天然就是一种模型解释。 特征统计信息。例如随机森林,GBDT等ensemble模型给出的特征重要度等。 数据点解释。例如使用某个类别的典型数据点或者类似数据点来解释模型给出这类预测的数据依据。 与可视化结合。在可视化技术加持下,一些原本过于复杂的数据信息也能够以较为直观的方式展现出来。 甚至还有直接输出自然语言形式的模型解释,例如这篇文章[2]。
什么是好的解释
人们更倾向于对比性的解释。相对于一系列特征数据的阐述,对比的形式会更容易让人理解。例如模型说因为你的收入是xxx,工作年限是yyy,最近履约率是zzz,所以你的信用不够好,这对于用户来说还是难以理解。如果给出一个对比例子,例如信用普遍较好的人群,他们一般在工作年限上比你高多少,这样就明显清晰且有效得多。 解释需要有选择性。大多数情况下,人们对冗长但全面的解释并没有多少兴趣。一般来说,1-3个最重要原因的解释更能让人抓住重点,快速理解和接受。 解释需要考虑社会和受众因素。当模型解释被用于调试开发时,你面对的用户是专业的机器学习人员,其解释形式也可以相对的专业化数字化。而当你面对不了解机器学习技术的业务人员时,所需要的解释形式可能就完全不同了。 关注异常。对于贡献度接近的特征信息,人们往往会更关注相对来说异常和罕见的特征值。 常识与普适性。好的解释应该尽量符合常识,并有一定的普适性。例如一般来说,促销力度越大,销量会越高,房屋面积越大,售价会越高等。在使用一些复杂模型时,可能会因为非线性特性导致在部分区域出现反常识的解释,需要额外注意。
反对声音
可解释的模型
线性模型
构建高阶交互特征的形式来增强模型表达能力,这种情况下的解释难度会上升。 对数据分组,简化场景构建单独模型,来提升模型效果及可解释性。 使用GAM等复杂模型来增强非线性表达能力,例如fbprophet的各个component的解释(ref[8])。
决策树模型
决策规则
结合决策树与线性模型
朴素贝叶斯模型使用条件概率形式进行预测,我们可以比较容易的计算出每个特征在各个类别上的贡献度有多少。 kNN模型利用最近邻的数据点进行预测,因此我们可以使用相似的实例来给出解释。但是kNN无法给出全局特征上的解释,且在特征数量较大时解释的理解难度也较大。 Nori et al., 2019[24]中提出的EBM,能够达到线性模型的解释性以及GBDT这类ensemble模型的预测精度,值得一试。 Wan et al., 2020[25]中提出的NBDT,在神经网络的结构基础上,引入了层次聚类方法来形成类似决策树的层级结构(induced hierarchy),并设计了树结构损失来做fine tune,使得整体模型的运作会符合决策树的推断路径,最终形成可解释的预测结果。 Vaughan et al., 2018[26]中提出的xNN也是利用特殊的网络结构来让神经网络模型具有一定的可解释性。目前只能应用在全连接网络上,而且相关的实现和应用看起来还比较少。
特征工程相关
模型无关方法
Permutation Importance
LIME
Shapley
Global Surrogate
基于样本的解释
反事实解释
原型样本
有影响力的实例
模型解释工具及应用
Microsoft interpret IBM AIX360 eli5 shap PDPBox tf-explain
模型开发调试 获取知识,指导决策 建立信任,确保公平性,安全性
特征数量可能较多,需要比对量较大 数据分布相似度的量化有一定困难,还可能涉及到归一化操作等 数据分布的差距,到模型预测的差距之间,还会有一定的gap
着眼未来
目前模型解释方面的算法成熟度,框架便利性,以及算力数据方面的挑战还很大,可以说总体还是在一个起步阶段。放眼Software 2.0时代,模型解释作为算法系统的“UI”和“Development Kit”的重要组成,显然是一个非常重要的技术方向。我们观远数据也在业界落地前沿算法的同时,积极投入模型解释的相关研究与应用尝试,取得了一定的进展。欢迎有兴趣的同学加入我们,一起升级打怪,开拓决策智能的广阔天地!
参考
[1] https://arxiv.org/pdf/1702.08608.pdf
[2] https://lukeoakdenrayner.wordpress.com/2018/06/05/explain-yourself-machine-producing-simple-text-descriptions-for-ai-interpretability/
[3] https://arxiv.org/pdf/1706.07269.pdf
[4] https://arxiv.org/pdf/2005.01831.pdf
[5] https://www.techcentral.ie/googles-research-chief-questions-value-explainable-ai/
[6] https://hackernoon.com/explainable-ai-wont-deliver-here-s-why-6738f54216be
[7] https://onezero.medium.com/machine-learning-might-render-the-human-quest-for-knowledge-pointless-5425f8b00a45
[8] https://towardsdatascience.com/decomposing-a-time-series-in-a-simple-and-intuitive-way-19d3213c420b?gi=50c90315f9c6
[9] https://arxiv.org/pdf/1502.04269.pdf
[10] https://aaai.org/ojs/index.php/AAAI/article/view/3978/3856
[11] https://github.com/SiccoVerwer/binoct
[12] https://dial.uclouvain.be/pr/boreal/en/object/boreal%3A223390/datastream/PDF_01/view
[13] https://github.com/aia-uclouvain/pydl8.5
[14] https://arxiv.org/pdf/2006.08690.pdf
[15] https://github.com/Jimmy-Lin/GeneralizedOptimalSparseDecisionTrees
[16] https://www.mlpack.org/papers/ds.pdf
[17] https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107.2612&rep=rep1&type=pdf
[18] https://arxiv.org/pdf/1511.01644.pdf
[19] https://arxiv.org/pdf/1602.08610.pdf
[20] https://arxiv.org/pdf/0811.1679.pdf
[21] https://github.com/christophM/rulefit
[22] http://proceedings.mlr.press/v97/wei19a/wei19a.pdf
[23] https://github.com/christophM/rulefit
[24] https://arxiv.org/pdf/1909.09223.pdf
[25] https://arxiv.org/pdf/2004.00221.pdf
[26] https://arxiv.org/pdf/1806.01933.pdf
[27] https://arxiv.org/pdf/1610.02391.pdf
[28] https://arxiv.org/pdf/1909.04324.pdf
[29] https://arxiv.org/pdf/2002.01650.pdf
[30] https://cs231n.github.io/understanding-cnn/
[31] https://www.sicara.ai/blog/2019-07-31-tf-explain-interpretability-tensorflow
[32] https://github.com/tensorflow/lucid
[33] https://arxiv.org/pdf/1808.04260.pdf
[34] https://github.com/albermax/innvestigate
[35] https://arxiv.org/pdf/1606.07461.pdf
[36] https://arxiv.org/pdf/1710.10777.pdf
[37] https://arxiv.org/pdf/1904.02679.pdf
[38] https://github.com/jessevig/bertviz
[39] https://blackboxnlp.github.io/
[40] https://blog.einstein.ai/thinking-out-loud-hierarchical-and-interpretable-multi-task-reinforcement-learning/
[41] https://arxiv.org/pdf/1901.04592.pdf
[42] https://zhuanlan.zhihu.com/p/45898896
[43] https://github.com/SauceCat/PDPbox
[44] https://arxiv.org/pdf/1602.04938.pdf
[45] https://arxiv.org/pdf/2005.04118.pdf
[46] https://homes.cs.washington.edu/~marcotcr/aaai18.pdf
[47] http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf
[48] https://github.com/slundberg/shap
[49] http://ceur-ws.org/Vol-2071/CExAIIA_2017_paper_3.pdf
[50] https://arxiv.org/pdf/1801.08640.pdf
[51] https://arxiv.org/pdf/1803.04042.pdf
[52] https://papers.nips.cc/paper/8231-improving-simple-models-with-confidence-profiles.pdf
[53] https://papers.nips.cc/paper/2018/file/c5ff2543b53f4cc0ad3819a36752467b-Paper.pdf
[54] https://arxiv.org/pdf/1905.12698.pdf
[55] https://github.com/SeldonIO/alibi
[56] https://arxiv.org/pdf/1710.08864.pdf
[57] https://arxiv.org/pdf/1712.09665.pdf
[58] https://arxiv.org/pdf/1801.00349.pdf
[59] https://arxiv.org/pdf/1707.07397.pdf
[60] https://papers.nips.cc/paper/2016/file/5680522b8e2bb01943234bce7bf84534-Paper.pdf
[61] https://arxiv.org/pdf/1707.01212.pdf
[62] https://arxiv.org/abs/1806.10574
[63] https://github.com/cfchen-duke/ProtoPNet
[64] https://arxiv.org/pdf/1703.04730.pdf
[65] https://arxiv.org/pdf/2012.15781.pdf
[66] https://nbviewer.jupyter.org/github/jphall663/interpretable_machine_learning_with_python/blob/master/debugging_sens_analysis_redux.ipynb
[67] https://nbviewer.jupyter.org/github/jphall663/interpretable_machine_learning_with_python/blob/master/debugging_resid_analysis_redux.ipynb
[68] https://distill.pub/2018/building-blocks/
[69] https://www.kaggle.com/tentotheminus9/what-causes-heart-disease-explaining-the-model
[70] https://github.com/ianozsvald/data_science_delivered/blob/master/ml_explain_regression_prediction.ipynb
“综述专栏”历史文章
超详细的NLP预训练语言模型总结清单!
Transformer的9种变体概览
知识图谱综述
各细分学习领域调研(A Survey for Learning Fields)
Distributed Training:强化学习并行训练论文合集
用放大镜看Transformer——总体和各个模块的结构到底是什么样的
注意力机制到底是什么——基于常识的基本结构介绍
乘风破浪的PTM:两年来预训练模型的技术进展
对比学习(Contrastive Learning)综述
深度学习中的Normalization模型
目标检测之Neck选择
基于能量的模型
Image matting—图像抠图入门篇
深度生成式模型
知识蒸馏在推荐系统的应用
更多综述专栏文章,
请点击文章底部“阅读原文”查看
分享、点赞、在看,给个三连击呗!