神经网络模型的压缩加速之权值共享(Weight Sharing)

 

[References]:

https://arxiv.org/abs/1510.00149

http://www.cnblogs.com/chenshan-crystal/p/7543780.html

神经网络的权值共享指从一个局部区域学习到的信息应用到图像的其它地方去。例如用一个相同的卷积核去卷积整幅图像,相当于对图像做一个全图滤波,每个卷积核在整个图像上是不断重复的,这些重复的单元共享着相同的参数设定(权值Weight和偏置Bias)。若一个卷积核对应的特征是边缘,用该卷积核去对图像做全图滤波,即将图像各个位置的边缘都提取出来。不同的特征靠多个不同的卷积核实现。图像的局部统计特征在整幅图像上具有重复性(位置无关性),即若图像中存在某个基本图形,该基本图形可能出现在任意位置,则不同位置共享相同权值可实现在数据的不同位置检测相同的模式。在第一个窗口卷积后得到的特征是边缘,则这个卷积核对应的就是边缘特征的提取方式,可以用这个卷积核去提取其它区域的边缘特征。

基于这个思想,权值共享可被用来进行网络模型的压缩加速。若相邻两层之间为全连接,每层有1000个节点,那么这两层之间有1000*1000个权值(参数)。对这一百万个权值进行聚类,权值接近的为一类,可以用每个类的均值替换这一类的权值,这样部分连接(如果他们聚在同一类)将共享相同的权值。如果我们把一百万个数聚成一千类,就可以把参数的个数从一百万降到一千个,模型大小被大幅压缩。

权值共享方案如图所示:

获取为浮点数的权值之后,使用相关聚类方法,按照大小的相近程度分为不同类别(不同颜色块),每个类别只需要保存一个聚类中心的权值,和对应的聚类索引(Index),数据量大幅度减少。在权值更新时进行反向传播,计算每项权值的梯度(Gradient),将之前聚类的同一类别的梯度累加,结合学习率lr(Learning Rate)进行权值更新。

 

神经网络模型的压缩加速之权值共享(Weight Sharing)_第1张图片

 

进行权值共享优化之后的网络模型将会在一定程度上被压缩,例如对于经典网络AlexNet,下表显示出其经过剪枝和权值共享等优化处理之后的压缩效果:

权值大小

权值%(剪枝)

权值bits(剪枝+权值共享)

索引bits(剪枝+权值共享)

压缩率

Conv1

35K

84%

8

4

32.6%

Conv2

307K

38%

8

4

14.5%

Conv3

885K

35%

8

4

13.1%

Conv4

663K

37%

8

4

14.1%

Conv5

442K

37%

8

4

14.0%

Fc6

38M

9%

5

4

3.0%

Fc7

17M

9%

5

4

3.0%

Fc8

4M

25%

5

4

7.3%

总计

61M

11%(9倍)

5.4

4

3.7%(27倍)

 

你可能感兴趣的:(优化)