文章目录
- Introduction
- Related work
- Method
-
- KD
- Group sparseness in net(网络中的群体稀疏性)
- Variatonal Bayesian Sparsification(变分贝叶斯稀疏化)
- Experiment
- Reference
Introduction
Variational Bayesian Group-Level Sparsification for Knowledge Distillation (VBGS-KD): 变分贝叶斯群级稀疏化知识蒸馏网络
DL占用大量运算资源和内存空间,阻碍了它们在实际场景中在资源受限的设备中的部署。(知识蒸馏的经典应用背景)
然而,KD的性能对知识定义和传输机制非常敏感。有不少的研究是从Teacher Net上获取更多的信息用来训练Student Net 但直接对SN动手的不多。
主要贡献:
1) 知识蒸馏的贝叶斯稀疏化:在KD中融入贝叶斯稀疏并微调
2)变分群集稀疏化:引入一组参数的稀疏诱导先验,而不是单个权重——描述模型权重张量的内在相关性
3)最新的压缩结果: 该方法通过知识蒸馏和变分稀疏的复杂度降低,可以同时实现精度和压缩比的提高。
Related work
低秩分解、权重共享和量化、网络稀疏和剪枝、知识蒸馏(网络轻量化的四大方向)
Method
KD
Softmax:
ziz_izi?-----logits
ttt------temperature
Soft knowledge:KL散度—可参照论文(Distilling the Knowledge in a Neural Network)
QS、QTQ_S、Q_TQS?、QT?分别表示SN和TN的预测结果,t2t^2t2消除软目标产生的梯度1T2\frac{1}{T^2}T21?
Hard knowledge
两部分:数据误判评估(SN的预测值与标签之间的loss), 稀疏性评价(贝叶斯近似的先验知识施加稀疏约束)
Overall loss
Group sparseness in net(网络中的群体稀疏性)
使用稀疏促进loss函数的优化问题,使得模型参数大部分为0
LASSO回归:L1L1L1范数
该稀疏建模是对个体权重施加
group-LASSO:稀疏性是在群体上执行
The ‘Group’ 在全连接中对应一个神经元,在卷积层中对应一个滤波器
1、输入组设置为0,忽略相应特征
2、隐藏组变量为0,删除相应神经元
3、偏置组变量为0,删除相应偏置
Variatonal Bayesian Sparsification(变分贝叶斯稀疏化)
KLKLKL散度测量:由参数分布q?(θ)q_\phi(\theta)q??(θ)近似的后验分布p(θ∣D)p(\theta|D)p(θ∣D)
最大化L(?)L(\phi)L(?)寻找最优变分参数?\phi?
θ\thetaθ满足零均值高斯分布
引入新参数γ\gammaγ为了细化θ\thetaθ上的后验分布
通过将稀疏诱导先验用于隐藏单元而不是单个权重,我们可以修剪神经元
利用标准卷积层和全连通层来代替相应的贝叶斯隐层
这种群级稀疏化是传统稀疏建模方法的自然推广。 它可以通过将相关权重聚类在一起,有效地模拟参数矩阵的结构性质,这些权重可能属于相同的神经元或滤波器。 与独立权重修剪相比,它在修剪不相关的耦合权重方面具有更高的性能。
Experiment
参数设置:
MNIST中200 epochsepochsepochs,batchsizebatch sizebatchsize: 256
CIFAR-10中300epochsepochsepochs,batchsizebatch sizebatchsize: 128
SGD优化器,momentum=0.5
PyTorch框架
阈值确定:
修剪用的阈值是在training的过程中确定的,不需要fine-tune
计算logαilog\alpha_ilogαi?,通过可视化α\alphaα占主导地位的掩码值手动确定修剪的阈值
随着训练轮数增加,logαilog\alpha_ilogαi?分离成两个簇,左边的簇表示信号(Signals),右边的簇表示噪声(Noise)。纵轴表示相应簇下的神经元个数。
这边表示有点疑问,左信号右噪声,作者写的是随着训练,信号总数减少,意味着有用神经元减少,但(b)、?不是明显的信号总数增加么?还是说后面两层的总参数比LeNet要少很多?从图上看也没有这种数量级上的区别啊。
稀疏性分析
这张表其实不是很懂。。。没有给出稀疏化前的参数大小
这边表述和前面表1里有点冲突,感觉应该以这边为准。TN: LeNet-5, SN: LeNet-300-100
对比实验和消融实验
Reference
论文地址