《Dynamic Network Surgery for Efficient DNNs》论文笔记

本文介绍了Dynamic Network Surgery,一种不同于传统贪心方法的模型压缩技术。该方法通过pruning和splicing动态维护网络,有效压缩LeNet-5和AlexNet,实现高压缩比并保持精度。实验表明,此方法能加速训练收敛,适用于卷积和全连接层,且在异或问题上展示了有效性。

1. 概述

在这篇文章中给出了新的模型压缩方法:Dynamic Network Surgery。该方法有别于传统的贪心方法,论文中说将连接剪接恰当地融入到整个过程中,以避免不正确的剪接,使其成为一个持续的网络维护。经过实验证明,该方法是有效的,在网络LeNet-5与AlexNet上分别实现了108倍与17.7倍的压缩,而且没有精度损失。
目前开源代码给出的说明显示该方法对于可以运用在卷积与全连接中,并且具有良好的加测效果,在现有网络的基础上进行修改也很方便,只需要替换为“CConvolution”和“CInnerProduct”。代码地址:Dynamic-Network-Surgery

在这篇文章中通过持续的网络维护来切断冗余连接,我们称之为Dynamic Network Surgery。这个方法中有关键的两个步骤:pruning和splicing。pruning的含义自然就是剪除网络中的一些不重要的连接了;但是要是失误剪除掉了网络中一些重要的连接,对网络精度造成了比较大的影响,那么对其的补救步骤就是splicing,恢复这些被错误删除的重要连接。

下图中的左图展示的是本文方法的逻辑结构,右边的其它论文中的方法,可以仔细比较一下两则的区别,可以发现左边在网络发生变化对精度产生影响的时候,反馈更迅速,需要的训练次数更少。
在这里插入图片描述

2. Dynamic Network Surgery

在文章中将DNN的模型表示为 { W k : 0 ≤ k ≤ C } \{W_k:0\le k \le C\} {Wk:0kC} W k W_k Wk是第 k k k个层的权重矩阵。对于 p p p个输入 q q q个输出的全连接层 W k W_k Wk的维度为 q k ∗ p k q_k*p_k qkpk;对于卷积层,这里是将每个卷积核展开成为向量,从而组成一个权重矩阵 W k W_k Wk。对于每个权重矩阵,包含一个掩膜mask矩阵 T k T_k Tk,用来标识对应的权值是否被剪裁掉了。

2.1 Pruning和Splicing

文中将权重矩阵中那个权值重要性确定(组合优化问题)转换为了下面的最优化问题。
在这里插入图片描述
其中, h k ( ⋅ ) h_k(\cdot) hk()是权重矩阵中元素的重要性取值函数,其输出的结果是根据输入的权值来确定的,这个在后面的内容中会讲,对应位置输出为1,则代表该位置处重要,反之就可以删除掉了。这个优化问题通过梯度下降更新。那么其中 W k W_k Wk的更新是通过如下公式进行的
在这里插入图片描述
其中, β \beta β代表学习率,这里更新权值不仅仅是更新权重矩阵中重要的部分,还更新被判定为不重要和对Loss下降没有作用的部分。
因而上文中涉及到的训练过程描述为如下迭代步骤:
在这里插入图片描述
上面说到的动态属性,主要体现在如下两个方面:
1)只要现有的连接看起来不重要,就可以执行修剪操作;
2)如果错误修剪的连接曾经看起来很重要,那么应该重新建立它们,也就是恢复它的连接。
对于上面的第一点自然是本篇论文中提到的pruning,那么第二点就是之前提到的“splicing”,在训练的过程成两者不断得改变 T k T_k Tk的值,使得网络得到有效得剪裁。这样两者的组合操作有点像人类神经元中的兴奋与抑制递质的作用。

2.2 权值重要性度量

这个部分就是上面提到的权重度量函数 h ( ⋅ ) h(\cdot) h(),输入是权重输出为权重对应位置处是不是该保留。在传统方法中一般使用权重分布的均值与方差来确定单一的阈值,在这篇文章中为了增加系统的鲁棒性,为其设置了两个阈值 a k a_k ak b k = a k + t b_k=a_k+t bk=ak+t,其中 t t t是一个偏置项,因而文中所提到的权重确定函数就写为:
在这里插入图片描述

2.3 加速训练收敛

由于相比较与标准的反向传播算法,其增加pruning和splicing操作,这样会使得网络收敛的速度变慢,为了解决该问题,论文中提出了两点改进意见:
1)不要那么频繁地使用pruning和splicing,文中指出使用 p = σ ( i t e r ) p=\sigma(iter) p=σ(iter)为pruning和splicing添加概率因子,初始状态该概率为1,而且该函数是非单调递增的函数,会随着网络迭代的进行逐渐降低。
2)另外一个问题是梯度的问题,由于pruning和splicing不断地改变网络的结构,而且随着网络深度加深,梯度的问题会凸显出来。文中给出的策略是卷积层与全连接层分开剪裁,剪裁的时候还是按照上述的步骤进行。

3. 实验结论

论文对下列网络进行了剪裁,得到的结果见下表
在这里插入图片描述

3.1 异或问题

论文中引入这个问题目的是搭建一个小型的网络,然后使用本文提出的方法去压缩这个网络,从而从本质上去分析它为什么会被剪裁掉。论文中对于异或问题使用高斯分布去近似得到如下分布:
在这里插入图片描述
之后使用含有21个连接的三层神经网络去训练,在训练过程中对其进行压缩。论文从权值的特性角度出发展示其剪裁的依据,从而得到最后的网络
在这里插入图片描述

4. 个人感悟

这篇论文中提出了动态确定网络连接剪裁与否的方式,pruning去除被当时认为不重要的连接,splicing恢复被删除掉的重要的连接,这整个过程是在训练过程中完成的,能够很好确保网络的精度。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值