Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

从语义上理解卷积核行为,UCLA朱松纯等人使用决策树量化解释CNN

近日,加州大学洛杉矶分校的朱松纯教授等人发布了一篇使用决策树对 CNN 的表征和预测进行解释的论文。该论文借助决策树在语义层面上解释 CNN 做出的每一个特定预测,即哪个卷积核(或物体部位)被用于预测最终的类别,以及其在预测中贡献了多少。此前,斯坦福大学曾发表了一篇 AAAI 2018 的论文解释如何用决策树解释深度网络,由此可见可解释性的决策树在理解深度网络的进程中将发挥重要的作用。

卷积神经网络在许多视觉任务上取得了惊人的表现,例如物体分类和检测。然而,除了辨别能力,模型可解释性仍旧是神经网络的一大挑战。许多研究提出对 CNN 中隐藏的特征表征进行可视化、分析或者语义化,从而获得对网络表征的理解。

在此论文中,朱松纯等研究者提出了一种新任务,也就是使用决策树在语义层次上来量化解释 CNN 预测的逻辑。注意,这里的决策树泛指对不同图像的 CNN 预测生成先验解释的「一般性」树模型。

  • CNN 记忆多少类模式?

  • 对每个输入图像,哪种物体-部位模式被用于预测?

  • 如何量化测量每个物体-部位模式对预测的贡献度?

解决上面三个问题需要:1)确定卷积层特征图中每个神经激活值的语义含义;2)量化测量不同神经激活值的贡献,这对当前最优算法是重大挑战。

在此论文中,研究者通过略微修正 CNN 而解开表征,并学习一种决策树来解释 CNN 的预测。给定特定领域的物体图像以及随机图像作为正例和反例样本,同时作为学习 CNN 和决策树的输入。在此过程中,我们并未标记任何部分或者结构作为附加的监督。首先,我们向 CNN 添加了论文《Interpretable convolutional neural networks》中提出的卷积核损失函数。其次,我们创造了一种决策树来量化解释对输入图像的决策模式,也就是哪个物体部位(卷积核)被用在预测中,贡献度有多大。

如下图 1 所示,决策树中的每个节点表示特定的决策模式,且该决策树以由粗到细的方式组织所有的决策模式。接近顶部根节点表征许多样本共享的通用决策模式。接近叶节点对应少数样本的细粒模式。特别是每个叶节点对应于 CNN 的输出关于图像中不同物体部位的梯度。

图 1. 在语义层次上解释 CNN 预测的决策树。我们学习到一种分类物体的 CNN,带有顶部卷积层的解开表征,其中每个过滤层表征一个特定的物体部位。以一种由粗到精的方式,决策树解码 CNN 全连接层中隐藏的各种决策模式。给定一张输入图像,我们推断出一种解析树(红线)来量化分析 CNN 预测的基本原理,例如,哪些物体部位(或者过滤层)被用于预测,且其对预测的贡献度是多少。我们对总结低层节点并提供 CNN 预测紧密逻辑的高层决策模式更感兴趣。

因此如上所述,在这篇论文中,研究者们关注了一项新任务,即解开 CNN 的表征内容,并学习一个决策树以量化地解释每一个 CNN 预测的逻辑。他们提出了一种简单但高效的方法以在不使用标注的信息下学习一个决策树,因此可以在不使用物体部位作为额外的监督而实现学习 CNN 的过程。从理论上来说,研究者的方法是一种修正 CNN 的广泛技术,它能学到紧密耦合的 CNN 和决策树。实践上也证明了这种基于 VGG 网络方法的高效性。

论文:Interpreting CNNs via Decision Trees

论文地址:https://arxiv.org/abs/1802.00121

本文提出的方法可通过学习决策树从而量化地解释预训练卷积神经网络(CNNs)每一预测的内在逻辑。我们的方法从两个方面提升了神经网络的可解释性。1) 在 CNN 中,高层卷积层之中的每一个过滤层必须表征一个特定的物体部位,而不是描述无明确含义的混合模式。2) 人们可以借助决策树在语义层面上解释 CNN 做出的每一个特定预测,即哪个过滤层(或物体部位)被用于预测,以及其在预测中贡献了多少。为了对 CNN 做出量化解释,我们的方法学习 CNN 高层卷积层中物体部位的明确表征,并挖掘存储在全连接层之中的潜在决策模式。决策树按照由粗到细的方式组织这些潜在的决策模式。最后,我们的实验表明了这一方法的有效性。

3. 算法

3.1. 准备工作:学习带有解开(disentangled)表征的 CNN

通过在顶部卷积层为每一个过滤层添加损失,[30] 获得了已学习的 CNN 解开表征,从而把过滤层的表征推向了一个特定的物体部位。注意人们无需为监督标注物体部位。CNN 在端到端学习期间自动为每一个过滤层分配一个特定部位。

如图 2 所示,人们为正样本设计 L^2 正模板 T^+ = {T_1,1, T_1,2, . . . , T_L,L} 以表征当滤波器 f 的物体部位出现在 x^(d) 上的 L^2 个不同位置候选处时的理想激活形状。负模板 T^−同样用于描述负样本上的特征图。过滤层 f 的损失是作为所有特征图和所有模板之间的负互信息给出的。

其中 X 表征所有训练样本上过滤层 f 的特征图的集合,T 表征所有的 L^2 + 1 模板。先验概率 p(T) 被定义为一个常量。

图 2:过滤层 f 的特征图的正模板。每个模板表征当过滤层 f 的物体部位出现在特定的图位置时的理想激活形状。

3.2. 学习一个决策树

过滤层中的部位概念:等式 (1) 中的损失确保每个过滤层表征一个特定的物体部位。让我们聚焦在有特定过滤层 f 所产生的特征图 xi , x ^(d)_ i ∈ R^L×L 的第 d 个通道,该通道表征一个解开的物体部位。我们可以把等式 (1) 中的过滤层损失重写为

如图 3 所示,这一损失确保第 d 个过滤层 f 表征目标物体的一个部位。

图 3:普通 CNN 特征图与本研究中使用的解开特征图之间的对比。我们可视化对应于每一特征图的图像区域。

CNN 预测的内在逻辑:如 [21] 所述,全连接层中为 I_i 编码的决策模式可以大致为分段线性表征所描述:

其中⊗表示卷积。关于特征图的梯度 partial y_i 除以 partial x_i 可通过梯度反向传播计算。

树:如图 4 所示,我们提取编码在 CNN 全连接层之中的决策模式,并构建一个决策树以组织决策模式的层级。从顶部节点到终端节点,决策树通过由粗到细的方式编码决策模式。

图 4:决策树的学习过程。P_3 中的红线表示解析树以解释给定图像 I 的原理。

学习:决策树学习的基本思想是从不同样本的特定决策模式中总结常见的决策模式,从而表征 CNN 预测的基本原理。

开始时,通过设定和α = 1,我们把每一个正样本 I_i 的梯度 g_i 初始化为一个终端节点。因此如图 4 所示,我们构建了一个初始树 Q,其中顶部节点把所有正样本的梯度作为后代。接着,在每一步中,我们在第二个层中选择并合并两个节点 v, v0 ∈ V(即,顶部节点的后代)以获得一个新节点 u,其中 V 表征第二层中的节点集合。v 和 v^'成为了 u 的后代,并且 u 替代 v 和 v^'成为了顶部节点的新后代。通过这种方式,在 T 合并操作之后我们逐渐把初始树 P_0 = Q 修改为最后的决策树:

整体如下:

3.3 解释 CNN

给定一个测试图像 I_i,我们使用 CNN 以预测 y_i。我们使用决策树对预测的基本原理进行莲花的计算。在推断过程中,我们能自上而下构建一棵解析树,图 4 中的红线展示了这样的解析树。如果读者希望了解更多解释 CNN 预测类别的过程,请查看原论文的该章节。

4. 实验

表 1:在决策树第 2、5、10、50 和 100 层的平均节点数。

表 2:在决策树第 2、5、10、50、100 和底层上的平均分类准确度。

表 3:在决策树第 2、5、10、50、100 和底层节点上的平均预测误差。

表 4:在决策树第 2、5、10、50、100 和底层节点上对卷积核拟合度的平均贡献。

上表 1 展示了决策树的结构,其余展示了各层级的特性。下图 5 可视化了决策树中的决策模式,而图 6 展示了物体部位的分布对 CNN 预测的贡献,该贡献通过使用决策树第二层节点进行估计。

一般来说,当我们使用更加细粒度的决策模式来解释预测逻辑时,该解释将更好地拟合 CNN 中的实际逻辑,并且使用决策模式预测 y_i 的误差也会降低。然而,更加细粒度的决策模式并不会展现更高的分类准确率,因为我们方法的目标是总结预训练 CNN 模型的决策模式,而不是提升分类准确度。

图 5:可视化决策树第二层节点所对应的决策模式,我们展示了每一个决策模式中的典型样本。

图 6:对 CNN 预测的物体-部位贡献。饼图展示了不同部位的贡献比例,它们都通过第二层节点进行估计。热力图表示顶部卷积层的神经元激活值分布,该热力图并不代表「贡献」的分布,因为神经元激活值并没有被 g_i 加权。右图为不同卷积核的图像感受野。基于这些感受卷积核,我们可以通过不同的物体部位分配卷积核,因而能计算物体部位的贡献。

本论文再最后的结语中表明,决策树理论上只为 CNN 的预测提供近似的解释,它不会对 CNN 的表征细节进行准确的重构。首先,我们并没有准确的物体-部位标注以监督 CNN 的学习,[30] 只能粗略地令每个卷积核表征一个物体部位。而卷积核在一些困难的样本中也可能生成不正确的激活值。其次,每一个节点的决策模式忽略非显著性的物体-部位模式(卷积核)以确保决策模式的稀疏表征。

理论卷积神经网络黑箱
41
nwpu・计算机・学士
请问有论文的代码吗?