1. 概述
训练得到的特征图,并不是所有特征图都重要,另一方面,希望对权重执行策略,体现出权重之间的差异性,最终目的就是获得不同特征图中的channel sacling factors
,表征了不同特征图的重要性
2. BN
采用的方法是BN,BN就是减均值再除以标准差
1.BN的本质
BN就是减均值再除以标准差
每次如果不加BN操作,会使得数据的分布较为散乱,用在部分激活函数的时候,如sigmoid的时候容易出现梯度消失的问题,使用BN将值重新规范化到均值为0方差为1的分布上去,加速模型的收敛,但BN也把数据强行压缩到模型的线性区域,也会某种程度上降低模型的表达能力,所以BN添加
α
γ
\alpha\gamma
αγ两个参数,弥补BN带来的模型表达能力降低的问题,所以BN最终形式如下(原始的归一化减均值除以方差,这里弥补为乘以一个值再加上一个值,很合理吧)
![](https://i-blog.csdnimg.cn/blog_migrate/47abd7291e5065121d7329c07ae8da67.png)
通过对每一个特征图进行BN,获得中间的 γ \gamma γ作为某一层特征图的权重,根据阈值滤除不需要的特征图
2.如何实现进一步拉开权重之间的差异呢?使用正则化的方法
L1正则化:稀疏与特征选择
L2正则化:平滑特征
论文中对 γ \gamma γ参数进行正则化,拉开 γ \gamma γ的差异性
![](https://i-blog.csdnimg.cn/blog_migrate/6d9ec737dad2e076ed9b3ad56f255d8a.png)
3. 整体流程
采用的方法是训练-剪枝-训练的方式来迭代
首先更改模型的BN,更新方式是:BN = BN+L1
通过排序确定图中的thre值,然后生成mask,再使用原始权重和mask相乘获取最后生效的权重层
然后将ok的结构及数据拷贝到新的权重中去,开启新的训练