深度学习可解释性综述笔记
最近组里在聊神经网络的可解释性,找了张拳石那篇综述《Visual Interpretability for Deep Learning: a Survey》精读了一遍,又顺着把 Interpretable CNN、周博磊的 Network Dissection 以及一篇黑箱解释方法的综述都看了。这个方向有点散,趁着印象还在,把脉络整理成一篇。
这篇综述讲了什么
综述把可解释性的工作大致归成五个方面:
- CNN 表示的可视化
- CNN 表示的诊断
- 把 CNN 里 filter 的混合模式分解出来
- 直接构造可以解释的模型
- 通过人机交互实现语义级别的 middle-to-end learning
下面分别说。
CNN 表示的可视化
可视化是最直接的一类。主流做法是基于梯度的:算 CNN 中某个节点的值对输入图片的梯度,再去找能最大化这个值的图像区域,就知道这个节点在「看」哪里。
另一种是上采样(up-convolutional net),直接从卷积层的 feature map 反过来还原出图片。它的问题是数学上没法保证还原结果的正确性,不如梯度方法可靠。
还有一种是精确计算一个 filter 的感受野——值得一提的是,用 filter size 算出来的理论感受野,其实比实际有效感受野要大,实际起作用的区域往往更小。
CNN 表示的诊断
诊断比单纯可视化要更进一步,综述把它分成五个小方向:
- 全局分析 CNN 的特征:探索每个 filter 的语义信息、filter 表示的可迁移性、预训练 CNN 里不同属性/类别在特征空间中的分布。
- 抽取对输出有直接贡献的图像区域:有的把 feature map 对 loss 的梯度传回图像平面来估计这个区域,有的直接提取对输出比较敏感的区域。
- 估计特征空间中容易被攻击的点,也就是对抗攻击的方向。
- 基于对特征空间的分析来精炼网络的表达(细节不展开)。
- 找出 CNN 里潜在的有偏表示:有时候一个属性会被多个特征同时表示,从而出现一些错误的表达。
把 CNN 表征分解为解释图 / 决策树
高层 filter 通常学到的是一种混合模式,可以用一种图(graph)结构来表示,图的每一层对应 CNN 的某个卷积层:
另一条路是用决策树来量化解释每一层 CNN:到底是哪个 filter 在做判断、它的贡献有多大,用树的结构表达出来。
直接学一种可解释的表征
与其事后去解释,不如训练的时候就让网络的表征本身可解释。已经有了一些经典网络的可解释变体,比如 Interpretable CNN、Interpretable R-CNN、Capsule、info-GAN 等。
这里单独说一下 Interpretable CNN,因为它的思路很有代表性。它的目标是:让高层卷积层里的每一个 filter 都稳定地表示同一个 object part——也就是说,不管输入哪张图片,这个 filter 始终响应物体上同一个区域。它有几个很实用的优点:
- 可以套到很多不同的网络上
- 不需要额外标注,用的还是原网络训练时的同样信息
- 不用改变 loss 的整体形式
- 会损失一点精度,但不多
具体做法是:在高层每个 filter 上加一个 loss,让这个 filter 尽量只表达一个 part,即让「这个 part」和「这个 filter 的响应」之间的互信息越大越好,所以这个 loss 取成互信息的负数。
可解释性怎么量化评价
光说「可解释」太虚,得有指标。综述里主要提了两个工作:
- Filter interpretability:把 filter 按语义分成几类(纹理、材料等),得到它们的感受野,再和事先标注好的像素级语义信息对比,用 IoU 来衡量可解释的程度。
- Location instability:度量 feature map 中激活值最大的位置还原到原图上的点,与某个目标对象之间的定位是否稳定准确。同样需要事先标注。
周博磊在 VALSE 上的可解释 AI 专题
VALSE 的可解释 AI 专题里周博磊讲的这条线,正好和上面对得上,几个代表性工作串起来很清楚:
- 语义概念的解耦:《Disentanglement of Visual Concepts from Classifying and Synthesizing Scenes》,从分类场景里解耦出内部表征。
- Network Dissection(CVPR 2017):把图片输入网络,自动找出有语义性的神经元,给可视化结果做语义标定。对应论文《Interpreting Deep Visual Representation via Network Dissection》。它的核心贡献是对可解释程度做了量化——用一套统一的框架去度量任意表征的可解释性,而不只是给张热力图。
- GAN Dissection(ICLR 2019):把可解释性的分析从分类网络扩展到了生成网络,去看 GAN 内部学到了什么表征。
- feature inversion:还有他在 SIGGRAPH 上的相关工作。
周博磊的博士论文也是这条线,核心就是:可视化网络的内部表征、用一套框架对任意表征做量化、刻画深度模型决策时的视觉理解(把信息量最大的区域高亮出来),并且从图像扩展到视频。他把网络表示的可视化和解释归成几类:深度视觉表示的可视化、属性分析、无监督学习。
可解释性接下来能落到哪些场景?大致是:解决 overfitting、对抗攻击、模型压缩、迁移学习,以及 GAN / RL。
不只是视觉:黑箱模型的解释
除了 CNN 这种视觉模型,还看了一篇更一般的综述《A Survey of Methods for Explaining Black Box Models》,它的视角更偏「给谁解释、怎么算好的解释」:
- 全局 vs 局部可解释性
- 解释的语义要易于理解,有时候得让用户快速看懂
- 针对特定用户知识背景的语义解释
- 用一个可解释的模型去模仿 black box(代理模型)
- 公平 / 隐私上的考虑
- 交互式的可解释性
- 还要考虑数据本身的可解释性,比如表格数据天然就比矩阵/向量更容易被人理解
小结
整个领域目前还比较散,但骨架大致是清楚的:事后解释(可视化、诊断、分解成图/树)和事前构造(直接学可解释表征)两条路,配上一套能量化的评价指标(Filter interpretability、Location instability、Network Dissection)。视觉这块周博磊和张拳石的工作是主线,再往外推就是黑箱模型「给人看」的那一套。对做模型压缩的人来说,可解释性其实挺有用——知道哪些 filter 在干活、哪些是冗余的,本身就是剪枝的依据。