Loading

【CDRP】2018-CVPR spotlight-Interpret Neural Networks by Identifying Critical Data Routing Paths-论文阅读

CDRP

2018-CVPR spotlight-Interpret Neural Networks by Identifying Critical Data Routing Paths

来源: ChenBong博客园

2020-TIP-Interpret Neural Networks by Extracting Critical Subnetworks

Introduction

借鉴了通道剪枝的思想, 通过在pre-trained model上, 为每个样本寻找各自的"关键子网"的方式来解释神经网络的工作方式的文章

image-20211019145608130

Motivation

不同的样本激活的卷积核是不同的, 作者为不同样本都单独学习一组channel-wise的control gate vector, 来确定该样本激活的"关键节点"(channel), 从而确定该样本的"关键子网"

image-20211019150007652

Method

Sample-Specific Subnetwork

\(i\) 层的 control gate value: \(\boldsymbol λ_i \in \mathbf R^{1 × c_i}\), \(c_i\) 是第 \(i\) 层的通道数

整个网络的 control gate value: \(\Lambda=\left\{\boldsymbol{\lambda}_{1}, \cdots, \boldsymbol{\lambda}_{n}\right\}\)

给定一个pre-trained model, 和某个样本x, 如何优化的 \(\Lambda\) ?

使用SGD梯度更新 \(\Lambda\) , 最小化公式(2)的loss:

\(\begin{aligned} \min _{\Lambda} & \mathcal{L}_{\mathrm{CE}}\left(f_{\theta}(x), f_{\theta}(x ; \Lambda)\right)+\gamma \sum_{j}^{n} \boldsymbol{\lambda}_{j} \\ \text { s.t. } & \boldsymbol{\lambda}_{j} \succeq 0, \forall j=1,2, \cdots, n, \end{aligned} \qquad (2)\)

\(\frac{\partial \mathcal{L}}{\partial \Lambda}=\frac{\partial \mathcal{L}_{\mathrm{CE} / \mathrm{BCE}}}{\partial \Lambda}+\gamma * \operatorname{sign}(\Lambda) \qquad(7)\)

  • 算法输入为单张图片, 输出为为该图片优化的 \(\Lambda\)
image-20211019151029476

Algo L7-9保证了每个样本找到的 稀疏Sample-Specific Subnetwork 的预测结果都与full model完全一致, 即在Acc不降的前提下, 找到最小的子网 (最稀疏的 \(\Lambda^*\) )

Class-Specific Subnetwork

Class-Specific Subnetwork只需要判断该样本是否属于该类(是/否), 即二分类, 因此改为BCE Loss:

image-20211019151854751

\(\frac{\partial \mathcal{L}}{\partial \Lambda}=\frac{\partial \mathcal{L}_{\mathrm{CE} / \mathrm{BCE}}}{\partial \Lambda}+\gamma * \operatorname{sign}(\Lambda) \qquad(7)\)

  • Sample-Specific Subnetwork是每个样本应用各自的一个 \(\Lambda^*\) , Class-Specific Subnetwork相当于一类样本应用同一个 \(\Lambda^*\) , 因此无法做到Acc不降, 因此算法2的输入多了预设的稀疏率 \(\tau\)
image-20211019151621770

Experiments

Sample-Specific Subnetwork

在ImageNet上与类似剪枝的方法对比

  • Adaptive Weight Pruning (AWP), 根据weight norm来确定 Sample-Specific Subnetwork (\(\Lambda^*\)), 输入无关? 性能最差
  • Adaptive Activation Pruning (AAP), 根据activation norm 来确定 Sample-Specific Subnetwork (\(\Lambda^*\)), 输入有关

AWP和AAP相当与 \(\Lambda\) 中的值的取值范围是{0, 1}, 而本文的方法 \(\Lambda\) 中的值的取值范围是 [0, \(+\infty\)], 不是很公平

因为control gate value是>=0的值, 因此稀疏率的计算应该是 \(\Lambda\) 中值为0对应的channel认为是被剪去, 其余的都视为保留, 然后计算每个样本对应的Sample-Specific Subnetwork的平均稀疏度

而且这里应该是为每个验证集的样本单独学习各自的 \(\Lambda\)

image-20211019152835400

可以看出, 本文的方法可以在很低的FLOPs下(10-20%), 保持与 Fullmodel 相同的性能, 性能高的原因: 在验证集上单独优化每个样本的Specific Subnetwork (\(\Lambda^*\))

如果可以设计1个module, 可以自适应的根据输入样本生成每一层的 \(\lambda_i\), 就是动态网络的工作, 此时表1中的结果可以看成是这种动态网络方法性能的上界.

Class-Specific Subnetwork

  • AUROC是二分类的指标, 越高越好
image-20211019160514679

每一类共用一个Class-Specific Subnetwork的方式, FLOPs的压缩率就不是很高了

进一步的如果所有类共用1个Specific Subnetwork, 其实就和静态剪枝一样了

可解释性

Sample-Specific Subnetwork

对不同样本不同层的gate vector做降维可视化, 越深的层区分度越高.

image-20211019161301289

使用Sample-Specific Subnetwork gate vector计算类内距离, 可以发现一些离群的样本:

image-20211019161832297

使用Sample-Specific Subnetwork gate vector 检测攻击样本:

image-20211019162504198

蓝色: 攻击图片(右) 与 50张目标类(car wheel)图片的 Sample-Specific Subnetwork gate vector在不同层的相关系数, 都在一个比较高的值

橙色: 攻击图片(右) 与 原始图片(右) 的 Sample-Specific Subnetwork gate vector在不同层的相关系数, 在越深的层相关系数越小(在深层语义上逐渐背离原始图片)

  • 如果攻击图片的语义与原始图片接近, 则差距不大

Class-Specific Subnetwork

对1000个类的Specific Subnetwork(vector)聚类为25类可视化:

image-20211019161516827

Summary

样本自适应的动态网络工作与模型剪枝, (空间/通道)注意力, 神经网络可解释性的工作有很多交叉的地方, 可以从这些工作中得到一些启发

Reference

https://zhuanlan.zhihu.com/p/68299186

http://www.hahnyuan.com/algorithm/interpret-nn-CDRP.html

https://blog.csdn.net/john_xia/article/details/90598228

ROC 曲线入门 | 模型评估首选方案 - 知乎 (zhihu.com)

posted @ 2022-07-09 11:33  ChenBong  阅读(110)  评论(0编辑  收藏  举报