Weighted-Entropy-based Quantization for Deep Neural Networks

本文提出了一种综合考虑权重的重要性和频率来进行量化的方式。它与其它量化方式的对比:
在这里插入图片描述
作者首先定义了被称为权重熵的变量:
在这里插入图片描述
这里Pn代表了权重的频率,In代表了它的重要性。作者设定了n个量化簇(cluster),i(n,m)是计算第n个簇的第m个权重的重要性的函数,作者这里简单地选择了平方函数。

在这里插入图片描述
上图是权重量化的伪代码:首先用平方函数计算每个权重的重要性,然后从小到大对其排序,并将它们均匀分为n个间隔(n为超参数)。然后对每个间隔ck遍历间隔[ck-1,ck+1],计算新的权重熵,若大于原先的S,则对间隔进行更新。最后计算每个量化间隔的量化值及对应的权重间隔。

对激活值的量化选择了另外的方法,因为它会根据输入的变化而变化。简单来说,作者用了一个截断的阶梯状ReLU函数。
在这里插入图片描述
这里的fsr是0之后的第一个间隔
在这里插入图片描述
,为1/16的倍数。step则是间隔的步长,为1/8的倍数,所以第二个间隔为在这里插入图片描述

这两个值会在之后穷举搜索来获得最佳值,因为它们俩的值集合较小。前者有16个,后者有大约500个。

权重量化仅在每个mini-batch更新权重后进行,而激活值量化则要在每次前向传播和后向传播时都要进行。首先使用ReLU进行激活,然后使用本文的方法对激活值量化,再将其传递到下一层,重复这一过程。

这篇文章挺有趣的,它克服了线性量化精度较低和log量化在零附近不必要的高精度的问题。而且由于可以自定义量化间隔,我们可以根据各种条件,自由地选取量化的bit数。它的另一个优点是,它可以简单地应用到其它网络架构上,而不需要对网络进行改造。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值