【Soft Weight-Sharing for Neural Network Compression】论文笔记

[ICLR’17]论文链接:https://arxiv.org/pdf/1702.04008.pdf
代码链接:https://github.com/KarenUllrich/Tutorial-SoftWeightSharingForNNCompression
这篇文章读的不是太懂,有问题的地方欢迎各位大佬指正。

主要思想:

首先根据MDL(minimum description length)原则将误差函数优化为Le和Lc两个部分:Le是error cost(the misfit between model and data),Lc是complexity cost(the cost to describe the model)。
这里写图片描述
其中p(w)是W的先验概率而p(D|w)是模型的可能性。根据香农的信源编码定理,在已知输入X和模型W的情况下,Le代表了传输目标T所需的预期信息量下限。可能性项的功能形式主要由目标分布决定。
这里写图片描述
其中N(tn; xn; w)是一个正态分布。与Le类似,Lc是模型传输的下限。更具体地说,如果发送者和接收者先前达成一致,则LC是传送参数w的预期成本。
这里写图片描述
其中H表示熵。对于较小的σ值,每个变分分解的后验概率q(wi)都与一个能达到机器精度的Dirac分布相关联,例如,具有方差σ的高斯分布。
这里写图片描述
这项工作的主要目标是找到一个合适的方案去优化后验概率q(w)和先验概率p(w)之间的交叉熵,同时考虑一个实际的编码方案。交叉熵是编码神经网络权重所需的平均比特数的下限(给定无限精度),将先验概率p(w)模型化为高斯混合
这里写图片描述
我们通过最大似然和网络权重同时学习混合参数μj,σj,πj。这种方法会鼓励量化,因为为了优化交叉熵,权重将紧密地聚集在cluster中,同时在Le的驱动下cluster会移动到最佳位置。
但是当损失没有足够的能力来保持它们分离时,混合成分会合并,因为权重被means吸引,means被权重吸引,因此means之间也相互吸引。这种方式下,网络的量化间隔是非常重要的。
通过强制设定一个固定μ0=0位置和π0接近于1的“零”分量,找到属于这个0分量同一个的component中的权重,最后将这一个component中的权重修剪掉,就可以达到期望的修剪率与修剪效果。在这种情况下π0可能是固定的或可训练的。
这里写图片描述
在LeNet-5-Caffe上的混合模型压缩程序图。左图:学习过程中,高斯混合模型的一个变化过程,y轴是高斯分布的中心值。最初有17个component (注意:初始化时只初始化了16个component,这里多的一个就是用来确定哪些参数趋近0的component),在学习过程中,各component被吸收到其他component中,最后产生大约6个重要component。右图:初始权重与最终权重的散点图。可以看到最初的权重分布大致是一个宽广的高斯分布,而最终的权重分布紧密地分布在6个component附近,具有良好的量化属性。
使用轻量级的权重分解和因式分解Dirac去重新训练预先训练好的神经网络。将误差函数优化为:
这里写图片描述
τ= 0.005。使用Adam优化梯度下降。
在预先训练好的权重范围内均匀分配16个非固定的component。方差的初始化,应使得每个高斯在其区域中具有较好的概率质量。
再训练完成后,将每个component中的权重设置为该component的均值,即量化权重。(emmm,感觉就是将K聚类换成了GMM聚类)
太相近的component之间,如果KL散度小于一定阈值,需要合并,这是合并的规则:
这里写图片描述
最后,存储时使用的是Song Han论文中的CSR格式(不懂见https://blog.csdn.net/liujianlin01/article/details/80591990)。

算法步骤:

主要分成2个部分:网络再训练和后期处理。
这里写图片描述

注意事项:

1) 这篇文章的主要操作目标是权重参数,不是卷积核,在量化和修剪完之后有很多卷积核处于全0状态,是否也可以进行修剪?
2) 论文中对于CSR的存储方式进行了改进,可以用霍夫曼编码对CSR存储矩阵进行进一步的压缩,同时对于IR和IC,因为存储的是索引和差值,所以数值并不大,可以考虑量化编码的方式进行优化。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值