wuvin
Always take risks!
Toggle navigation
wuvin
主页
实验室的搬砖生活
机器学习
公开的学术内容
公开的其他内容
About Me
归档
标签
友情链接
ZYQN
ihopenot
enigma_aw
hzwer
杨宗翰
网络可解释性
? Interpretability ?
2020-04-05 17:25:31
1459
0
1
wuvin
? Interpretability ?
# 直观可解释性 ## 直接可解释的模型 * Decision trees * Linear regression * k-NN * [ILP](https://arxiv.org/pdf/1711.04574)(定义了一套逻辑推理语言和从数据中通过贝叶斯学习该推理规则的方法,但是如果数据有任何错,会学出奇奇怪怪的东西。同时定义了$\partial$ILP,解决了对于数据鲁棒性的问题,但是不可解释。) ## 特征加权 不同特征有不同权重,具有一定的可解释性。 * Random forest * [Random Ferns](http://blog.leanote.com/post/wuvin/Random-Ferns) ## 特征选择 在海量的特征中选出少量重要的特征。 * 投影法:通过数学变化,选取值最大的几个。 * Wrapper:选取特征子集上的分类错误率最小的。 * Filter:对特征排序后选出排序较高互补性较强的子集。 ## 模型解释 ### 可解释性哲学 这类就是讨论什么是可解释性,为什么要可解释性等等看起来非常哲学的东西,并且多数文章解释方法也非常"哲学" * [The Mythos of Model Interpretability](https://arxiv.org/pdf/1606.03490) 综述了监督机器学习可解释性的定义、为什么需要可解释性、两类可解释性研究思路以及一些相关问题的讨论。这篇文章试图澄清可解释性的概念,为可解释性研究“正确的问题”扫清障碍。 比如,我们什么时候需要可解释性?如果一个模型的精确度很高,百分百正确,我们可能不需要可解释能力。如果一个模型精度不够高,我们就会急切想知道机器为何出错。如果机器出错的地方,也是人类出错的地方,那么人们可能将心比心,不会削弱对机器的信任。对于人类不容易出错,但机器却出错的地方,人类对机器的信任度就会急剧降低。 * 别的文章都差不多,个人觉得没啥意思,毕竟不是搞哲学的,这里就略过了。 ### 通用模型解释 * LIME:[“Why Should I Trust You?”: Explaining the Predictions of Any Classifier](https://arxiv.org/pdf/1602.04938) 对于单一数据的预测的解释方式,使用一个线性逼近输入数据周围的空间,并对于这个线性分界线解释。 ![title](https://leanote.com/api/file/getImage?fileId=5ea6dd9eab64412e2802f571) 比如对于图片而言,就可以每次随机删除一些像素点,查看输出降低了多少,从而获取该像素对于决策的重要程度。 ![title](https://leanote.com/api/file/getImage?fileId=5ea6df14ab64412c3402f8eb) 具体操作方法为,通过颜色聚类聚为色块,然后每次随机保留一定量的色块交给网络处理,然后重复随机一定次数(比如$1000$次)取预测值最高的几次来进行解释。 * [Understanding Black-box Predictions via Influence Functions](http://blog.leanote.com/post/wuvin/%5BICML-2017-best-paper%5D-Understanding-Black-box-Predictions-via-Influence-Functions) 对于LIME的继续扩展,此篇单独开了[一页](http://blog.leanote.com/post/wuvin/%5BICML-2017-best-paper%5D-Understanding-Black-box-Predictions-via-Influence-Functions)来转述。 ### 特定模型解释和模型可视化 * Visualizing and Understanding Convolutional Networks 这是CNN领域可视化理解的开山之作,这篇文献告诉我们CNN的每一层到底学习到了什么特征,作者通过可视化进行调整网络提高精度。 根据原有网络及参数,从某一层的feature map开始,逐个反向构建 反卷积(和卷积相同参数),反池化(记录一下之前最大值位置),反激活(ReLU不变)。注意,这里只是为了求得一个可以得到这个feature map的输入图像,而非真实的原有图像(因为forward过程中不可避免的会有信息丢失,所以我们只是得到一个可行解而非所有解)。 ![title](https://leanote.com/api/file/getImage?fileId=5eb28d6fab64413a21069bd3) 然后基于这个可以可视化学习过程中权值变化等。 由于本作比较早期,且只求一个可行解,导致可视化结果相对较差(比没有好)。 * Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps 通过梯度下降,求解对于每一类别,响应程度最高的输入图片。以及根据特定输入算导数,得到热力图。 ![title](https://leanote.com/api/file/getImage?fileId=5eb28f48ab64413c22069ce0) ![title](https://leanote.com/api/file/getImage?fileId=5eb28faaab64413c22069da3) 可能是网络非鲁棒的原因,这个图不太好看。 * Understanding Neural Networks Through Deep Visualization 热力图可以通过直接使用激活大小取得,另外一种方法和第一篇类似,但是加了一个正则项,使得看起来好一些。 ![title](https://leanote.com/api/file/getImage?fileId=5eb290d4ab64413a2106a285) * Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization 依旧也是一种使用梯度和feature map 来做可视化的方法,下图很清楚。 ![title](https://leanote.com/api/file/getImage?fileId=5eb42a13ab64417e5902b326) * Generating Visual Explanations NLP任务,分为两个部分,第一部分网络提取尽可能少且连续的单词,给第二个网络,第二个网络由第一个网络给出的单词来进行预测。 * Visual Explanation by Interpretation: Improving Visual Feedback Capabilities of Deep Neural Networks ![title](https://leanote.com/api/file/getImage?fileId=5ed994bcab644132320002fd) ![title](https://leanote.com/api/file/getImage?fileId=5ed99527ab644134450002d2) 训练过程是通过原网络每层的激活(除开最后两层)来训练一个类别预测,每一类单独提取出激活,过一个全连接$W_i$,输出lable向量。 对于一个新的预测,寻找与 激活 最相近的 $W_i$,然后把这个数据 feed 到 Deconvnet-based method 去生成原图。 * Axiomatic Attribution for Deep Networks 这是一篇讲归因的文章,这篇文章对于归因提出了一下要求: > 对于预测无关部分,归因为 $0$ > 与baseline(如全黑图片)由于某部分输出不同,这部分归因不为零。 方法上,首先baseline 应该为0,然后积分就行。 ![title](https://leanote.com/api/file/getImage?fileId=5ed99cb8ab64413232000349) 效果 ![title](https://leanote.com/api/file/getImage?fileId=5ed99af1ab64413232000338) 但是这篇文章有几个问题,第一baseline不一定是全黑的图片,全黑也有全黑的信息,不然图上本来黑的部分,就没有任何信息了。第二这个积分公式也过于简陋了吧,图片样本空间真的是直线吗,是不是应该还有一项与样本空间相关的系数(这里默认为1),这个积分结果可能并不满足对于积分路径的不变性。 第三,这个相对积分的方法是否可以用于 adverserial attack 的解释。 * THE (UN)RELIABILITY OF SALIENCY METHODS 这篇文章指出,现有可解释方法,对于整个图片整体增加一个常数会有较大的变化,所以不合理。(这tm什么强盗逻辑,加一个常数网络输出都不同了好吧) 所以这篇文章提出了一个对于输入图片加常数不变的可视化方法。 ![title](https://leanote.com/api/file/getImage?fileId=5ed9a230ab6441323200037c) * A Benchmark for Interpretability Methods in Deep Neural Networks 这篇文章挺有意思 ![title](https://leanote.com/api/file/getImage?fileId=5ed9a376ab6441323200038c) 这里他的 Benchmark 叫 ROAR。简单来说就是根据可解释性模型给出的重要程度分布,去掉图片中重要的$x\%$,然后再重新训练整个模型,以此评估这个重要程度分布是否准确,重训的模型掉点越多,说明选择越正确。 而且自带一个可视化类综述 ![title](https://leanote.com/api/file/getImage?fileId=5ed9a4faab6441323200039f) ![title](https://leanote.com/api/file/getImage?fileId=5ed9a6e0ab644134450003be) ![title](https://leanote.com/api/file/getImage?fileId=5ed9a50bab644132320003a2) 本次实验的空白对照 ![title](https://leanote.com/api/file/getImage?fileId=5ed9a559ab6441344500039c) 开始对比 ![title](https://leanote.com/api/file/getImage?fileId=5ed9a599ab644134450003a2) ![title](https://leanote.com/api/file/getImage?fileId=5ed9a64bab644134450003b1) 这篇文章几个问题,第一需要去掉足够多的特征,准确度才会有所下降。所以相对随机到处乱擦,IG之类去掉的重要部分不一定是必要部分,所以掉点可能很少(重训的模型可能会找新的特征)。 别的review也题出了一下问题,ROAR到底在measure什么?ROAR会让一个预测偏了的解释得低分吗?ROAR的评估得分真的是可靠的吗?ROAR是否能有效比较不同解释的效果?不同风格的解释方法可能有差不多的效果,但是会有完全不同的ROAR得分。 * iNNvestigate neural networks! 这是一个github可解释库,地址:https://github.com/albermax/innvestigate 效果: ![title](https://leanote.com/api/file/getImage?fileId=5ed9b54dab64413445000484) * Attention is not Explanation [知乎现场](https://www.zhihu.com/question/314463239) ![title](https://leanote.com/api/file/getImage?fileId=5ed9b5ddab6441323200049b) * KNOWLEDGE CONSISTENCY BETWEEN NEURAL NETWORKS AND BEYOND [这里有单独的Review](http://blog.leanote.com/post/wuvin/KNOWLEDGE-CONSISTENCY-BETWEEN-NEURAL-NETWORKS-AND-BEYOND) ## 化简不可解释网络 * Extracting Automata from Recurrent Neural Networks Using Queries and Counterexamples 这是一个套模的paper。 本身有一个从任意函数中提取DFA的算法叫 $L^*$ ,本文只是把RNN进行适量修改后套了一下这个算法。由于本身RNN可以被视为一个指数级大小的自动机,所以这相当于是一个化简RNN自动机的方法。 ![title](https://leanote.com/api/file/getImage?fileId=5ed9ba2cab644134450004b9) 本文有几个有用的结论:用正则表达式训出来的RNN,化简出来大概率不是这个正则表达式。问题是这个并没有在一个像样的环境下测试这个DFA效果,只是在一个toy problem上测试了一下。这可能与生成的自动机大小非常大有关。 * Distilling a Neural Network Into a Soft Decision Tree 树上每个节点是个感知机。 ![title](https://leanote.com/api/file/getImage?fileId=5ed9c939ab6441323200055f) ![title](https://leanote.com/api/file/getImage?fileId=5ed9c95cab64413232000560) 这个模型的蒸馏操作是在最后的叶子节点上,叶子节点的类型输出需要尽可能接近NN的最后一层输出。 训练用Loss: ![title](https://leanote.com/api/file/getImage?fileId=5ed9ce94ab64413232000584) 其中 $Q$ 是输出叶子节点的向量过softmax后的结果。$P$是到达该节点的概率。![title](https://leanote.com/api/file/getImage?fileId=5ed9cfbcab6441323200058a) 相比直接训练的效果 ![title](https://leanote.com/api/file/getImage?fileId=5ed9cd24ab644134450005bd)
上一篇:
Random Ferns
下一篇:
Paper Readings
0
赞
1459 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
1
条评论
More...
文档导航
没有帐号? 立即注册