Dynamic Network Pruning with Interpretable Layerwise Channel Selection
0. Abstract
- 本文提出了一种动态网络剪枝的算法框架,可以根据输入的不同动态地确定剪枝所用到的mask,并且体现了剪枝过程的可解释性。
- 两大contribution:
- 将决策的路径"可视化",剪枝过程更具有可解释性
- 提出了adversarial example detection算法。可以根据不同的决策路径来判断normal/adversarial example。
1. Introduction
- 静态剪枝技术:对预先训练好的模型剪去多余的参数或结构。
- 动态剪枝技术:保留完整的网络结构,加入计算单元,根据运行时不同的输入使用不同的mask,以完成前向传播过程。
- 本文方法的核心思想:每一个卷积层都对应一个计算单元,这个计算单元存储m个masks,针对不同的input,得到对这m个masks的概率,取概率最大的mask用于通道剪枝。注意:根据上文来看,需要用到argmax函数,但是argmax本身是不可微的,因此作者采用 连续松弛技术(continuous relaxation technique) 解决该问题,后文会提到。简单来说就是不单纯取概率最大的mask,而是所有mask都使用,但是系数不同。
1.1 算法的一些特点
- 每一层的计算单元根据不同的input会做出不同的决策路径,这与输入的语义信息有较大关系。可以根据决策路径的明显差异判断normal/adversarial examples。
adversarial detection可以用于检测攻击。
2. Methodology
2.1 整体训练目标
算法整体框架如下:
解释:第l个卷积层以xl−1\textbf{x}_{l-1}xl−1为输入,输出xl。xl−1\textbf{x}_{l}。\textbf{x}_{l-1}xl。xl−1首先进入决策单元。决策单元分为两部分:Action Head和Channel Selection Masks。Channel Selection Masks 当中有m个masks。首先xl−1\textbf{x}_{l-1}xl−1经过Action Head输出对这m个masks的概率分布,取概率最大的mask,即G[i]G[i]G[i],作用于卷积层,只激活权值非零的卷积核。经过mask激活后的卷积层对xl−1\textbf{x}_{l-1}xl−1做卷积操作得到xl\textbf{x}_{l}xl,然后xl\textbf{x}_{l}xl再与G[i]G[i]G[i]相乘得到最终输出。
Cl−1C_{l-1}Cl−1代表第l-1层输出的通道数
整体的目标函数如下
假设CNN一共有L层,Θ\ThetaΘ为全部卷积层的参数,Φ\PhiΦ为L个卷积层的Action Heads与对应的Masks{Gl}L\{G_l\}_L{Gl}L的全部参数。Lent\mathcal{L}entLent为交叉熵损失,fΘ(Xk)f_\Theta(\textbf{X}_k)fΘ(Xk)表示第k个卷积层(应用了剪枝后)的输出,yky_kyk为标签。{Gl}\{G_l\}{Gl}是第l层的mask,Ω\OmegaΩ是正则化项,用于保证mask的稀疏性。γ\gammaγ为平衡因子。
2.2 决策单元
还是假设CNN有L层,xl∈RN×Co×Ho×Wo,xl−1∈RN×Ci×Hi×Wi\textbf{x}_l \in \mathbb{R}^{N \times C_o \times H_o \times W_o},\textbf{x}_{l-1} \in \mathbb{R}^{N \times C_i \times H_i \times W_i}xl∈RN×Co×Ho×Wo,xl−1∈RN×Ci×Hi×Wi,NNN为batch_size\textrm{batch\_size}batch_size,kkk为卷积核尺寸,CCC为通道数,下标i,oi,oi,o代表输入输出,θl\theta_lθl代表第lll个卷积层的参数,conv为卷积操作。
每一个卷积层都有一个决策单元π(⋅)\pi(·)π(⋅)
其中ϕ\phiϕ为决策单元的参数,G={gi∈RCl∣i=1,2,...,m},G=\{g_i \in \mathbb{R}^{C_l} | i = 1,2,...,m\},G={gi∈RCl∣i=1,2,...,m},为该决策单元中masks的集合。每个gig_igi包含ClC_lCl个值,对应每个输出通道的权重。
A(⋅)\mathcal{A}(·)A(⋅)为Action Head,输出m个通道的概率p∈Rm,p=[p1,p2,...,pm]p \in \mathbb{R}^m,p=[p_1,p_2,...,p_m]p∈Rm,p=[p1,p2,...,pm],用于判断选择哪一个mask。
最终第l个卷积层输出公式如下
*代表按每个通道做乘法。对于A(⋅)\mathcal{A}(·)A(⋅)可以根据如下方式实现:
2.3 解决Action Head不可微的问题
由于argmaxargmaxargmax不可微,使用连续松弛技术,对Index重参数化(这里Index\textrm{Index}Index就是概率最大的mask的索引)。
其中GiG_iGi为服从Gumbel分布的随机变量,pip_ipi代表对第i个mask的概率,t\mathcal{t}t 可以理解为温度。
针对每一个mask计算对应的III,得到I=[I1,I2,...,Im]I=[I_1,I_2,...,I_m]I=[I1,I2,...,Im],最终xl\textbf{x}_lxl为:
xl=∑i=1mIigixl \textbf{x}_l = \sum\limits_{i=1}^m I_i g_i x_{l} xl=i=1∑mIigixl
2.4 Mask权重的学习(正则项的计算)
对正则项求解:
这里采用了L1正则化,其中GiG_iGi应该对应每一层所使用的mask,CiC_iCi为对应的输出通道数,r\mathcal{r}r为压缩比。
问题:
词语释义
adversarial 对立的,敌对的
on the fly 在运行中
perturbation 扰动
scheme 方案,计划
agent 实施者
data manifold 数据流形
formulation 阐述
符号释义
参考链接:
https://www.cnblogs.com/chenbong/p/13472036.html