CSG:清华大学提出通过分化类特定卷积核来训练可解释的卷积网络 | ECCV 2020 Oral
论文提出类特定控制门CSG来引导网络学习类特定的卷积核,并且加入正则化方法来稀疏化CSG矩阵,进一步保证类特定。从实验结果来看,CSG的稀疏性能够引导卷积核与类别的强关联,在卷积核层面产生高度类相关的特征表达,从而提升网络的性能以及可解释性
来源:晓飞的算法工程笔记 公众号
论文: Training Interpretable Convolutional Neural Networks by Differentiating Class-specific Filters
Introduction
卷积神经网络虽然在多个视觉任务中有很好的表现,但可解释性的欠缺导致其在需要人类信任或互动的应用中受到限制,而论文认为类别与卷积核间的多对多关系是造成卷积网络可解释性差的主要原因,称之为filter-class entanglement。如上图所示,卷积网络通常提取包含多个语义概念的混合特征,比如类别、场景和颜色等,去除entanglement能够更好地解释每个卷积核的作用。
受细胞分化的启发,论文提出在最后的卷积层中学习类特定卷积核,希望卷积核能够”分化”成针对不同类别的分组,如图1右所示,单个卷积核专门负责特定类别的识别。为了实现这个想法,论文设计了可学习的类特定门控CSG(Class-Specific Gate)来引导将卷积核分配给不同的类别,只有当特定类别作为输入时,对应卷积核输出的特征才能被使用。
论文的主要贡献如下:
- 提出新的训练策略来学习更灵活的卷积核与类别的关系,每个卷积核仅提取一个或少量类别的相关特征。
- 提出通过卷积特征和类别预测的互信息来验证卷积核与类别的关系,并且基于此设计了一个度量方法来测量网络的filter-class entanglement。
- 通过实验证明论文提出的方法能够消除卷积核的冗余以及增强可解释性,可应用于目标定位和对抗样本检测。
Ideally Class-Specific Filters
如图2所示,理想的类特定卷积核应该只对应一个类别,为了明确定义,使用矩阵G\in [0, 1]^{C\times K}来表示卷积核和类别的相关性,矩阵元素G^k_c\in [0,1]代表k卷积核和c类别的相关性。对于输入样本(x,y)\in D,取矩阵G的行G_y \in [0, 1]^K作为控制门,将不相关的卷积核输出置为零。定义\tilde{y}为正常网络结构(STD)直接预测的类概率向量,\tilde{y}^G为加入矩阵G(处理倒数第二层的特征图)后的网络(CSG)预测的类概率向量,若存在G(所有列为one-hot)使得\tilde{y}^G和\tilde{y}几乎不存在差异时,称该卷积核为理想的类特定卷积核。
Problem formulation
为了让网络在训练中分化类特定卷积核,论文在标准的前行推理(standard path, STD)中引入可学习的类特定控制门(Class-Specific Gate path, CSG) ,用来有选择性地阻隔不相关特征维度。
The Original Problem
如上图所示,论文的目标是训练包含理想类特定卷积核的网络,网络参数为\theta,包含两条前向推理路径:
- 标准路径STD预测\tilde{y}_{\theta}。
- 包含矩阵G的类特定门路径(CSG)预测\tilde{y}^G_{\theta}。
CSG将倒数第二层的输出乘以可学习控制门G_y,y为输入样本的标签。 为了找到准确描述类别与卷积核关系的控制门矩阵G,需要在二值空间中搜索G使得CSG路径有最好的分类效果,即优化问题\Phi_0(\theta)=\underset{G}{min}CE(y||\tilde{y}^G_{\theta}), \forall k\in{1,2,\cdots, K},G_k是one-hot编码,\Phi_0用来验证网络中分化的卷积核的性能,将\Phi_0加入到训练损失中作为正则化项,得到整体网络的优化目标:
CE(y||\tilde{y}_{\theta})保证准确率,\lambda_1 \Phi_0(\theta)引导G的稀疏性。但公式1其实是很难优化的,首先很难保证每个卷积核是绝对地只对应一个类别,通常都是多类别共享特征,其次,非连续空间的二值向量很难通过梯度下降优化。
Relaxation
为了解决上面提到的两个问题,论文将one-hot向量G^k放宽为稀疏连续向量G^k\in [0, 1]^C,约束其包含至少一个等于1的元素(||G^k||_{\infty}=1)。另外,加入正则项d(||G||_1, g)来引导G的尽量稀疏,当L1向量范数||G||_1小于上界g时,则不进行惩罚。d的常规设计是d(a,b)=\psi(ReLU(a-b)),\psi可以是各种范数,包括L1、L2和smooth-L1范数。g的设置需满足g\ge K,因为||G^k||_{\infty}=1,共有K个G^k。综合上面的方法,\Phi_0重新定义为:
V_G={G\in [0,1]^{C\times K}:||G^k||_{\infty}=1},\mu为平衡因子,\Phi可看作是filter-class entanglement的损失函数,将\Phi替换公式1的\Phi_0得到放松后的完整的优化问题:
公式3可通过梯度下降联合优化\theta和G得到类特定卷积核,而且G能准确地描述卷积核与类别间的相关性,比优化原本离散的优化问题要简单得多。
Optimization
针对CSG算法的场景,论文提出PGD(approximate projected gradient descent)梯度下降来解决公式3的优化问题,当G进行梯度更新后,G^k会通过||G^k||_{\infty}进行归一化,保证||G^k||_{\infty}=1,然后裁剪到[0,1]。
由于CSG路径阻隔了大部分的特征,所以CSG路径的梯度回传比STD路径弱很多,如果按正常的方式进行训练,收敛效果会很一般。为此,论文提出alternate training scheme,在不同的周期交替地使用STD/CSG路径的梯度。如算法1所示,在CSG路径的周期,使用梯度\lambda_1 CE(y||\tilde{y}^G_{\theta})+\lambda_2d(||G||_1, g)更新G和\theta进行更新,而在STD路径的周期,则使用梯度CE(y||\tilde{y}_{\theta})进行更新。根据实验验证,这种训练方法在训练初期的分类效果会周期性波动,但最终的训练效果比正常的训练方法要好,同时卷积核也能逐渐分化成类特定卷积核。
Experiment
Quantitative Evaluation Metrics
论文实验使用了3种指标来验证CSG的有效性:
- classification accuracy,用来计算分类性能。
- mutual information score,使用互信息矩阵M\in \mathbb{R}^{K\times C}来计算类与卷积核的关系,矩阵元素M_{kc}=MI(a_k||1_{y=c})为卷积核k的特征值与类别c间的互信息。为了计算互信息,在多个数据集中采样(x,y),a_k由所有样本的对应输出全局平均池化得来,$1_{y=c}为类别,MI的计算直接调用“sklearn.feature selection.mutual_info_classif”方法。互信息分数MIS=mean_k max_c M_{kc}$,分数越高,则filter-class entanglement现象越少。
- L1-density,用来度量CSG的稀疏性,计算方法为\frac{||G||_1}{KC}
结果如表1所示,可以看到CSG网络在分类表现上仅比STD网络要稍微好一点,但其它指标要高出很多。
Visualizing the Gate/MI Matrices
为了展示卷积核与类别间的相关性,对控制门矩阵G和互信息矩阵M进行可视化:
- 图a表明CSG训练能得到稀疏的CSG矩阵,每个卷积核仅对应一个或少量类别。
- 图b1和b2则表明CSG网络比STD网络有更高的互信息得分。
- 图c表明图a和图b1的最大元素几乎是重叠的,卷积核能够按照稀疏的CSG矩阵进行学习。
Application
定位任务上的性能对比,这里的定位是直接通过特征图的大小进行定位,非Faster-RCNN之类的。
对抗样本检测任务上的性能对比。
Conclustion
论文提出类特定控制门CSG来引导网络学习类特定的卷积核,并且加入正则化方法来稀疏化CSG矩阵,进一步保证类特定。从实验结果来看,CSG的稀疏性能够引导卷积核与类别的强关联,在卷积核层面产生高度类相关的特征表达,从而提升网络的性能以及可解释性。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】