论文总结:PACT

论文地址:https://arxiv.org/pdf/1805.06085v1.pdf

主要内容

作者提出了PArameterized Clipping acTivation(PACT)针对激活值的量化方法,使神经网络能在超低精度的权重和激活值下正常工作(精度不会显著下降)。PACT能将激活值量化至任意精度。而且还第一次证明权重和激活值都能被量化到4位,且网络精度与全精度网络的精度相当。
概括一下,其主要贡献有:

  1. PACT:通过在relu函数基础上引入新的参数 α \alpha α用于表示clipping level(相当于截断的位置),通过反向传播学习该参数。 α \alpha α需要使量化尺度比relu小以便减小量化误差,同时需要比传统的截断激活函数大,以便梯度更有效的流动。
  2. 实验结果证明PACT的有效性:权重和激活值精度 ≤ \leq 2bits时,PACT的网络精度最高;基于4bits量化的CNN,结果与单精度浮点数表示的精度相当。

激活值量化的难题

传统的激活函数没有可训练的参数,如果直接量化就不能在反向传播中进行误差补偿,网络精度会显著下降。
如果使用relu函数,虽然比其他激活函数准确性更高,但其输出无界,量化结果范围大,准确性会显著降低。
截断激活函数可以缓解上述问题,但其误差仍然高于基线。

PACT

基于上述问题,作者提出了PACT量化方法。
激活函数为:
在这里插入图片描述
相当于relu函数截断上界,输出限制在[0, α \alpha α]。
也可以将其线性量化为k位:
在这里插入图片描述
α \alpha α相当于loss中的参数,可以通过反向传播进行学习(STE):
在这里插入图片描述
在损失函数中对 α \alpha α使用L2正则化。
只改变某一层的 α \alpha α的值,保持其他参数以及其他层的 α \alpha α值不变,得到如下结果:
在这里插入图片描述
不量化时,relu是个很好的激活函数,但并不是每层都能将交叉熵损失函数收敛至很好的值(act0,act6);但是量化后, α \alpha α的值不能过大,意味着无上界的relu函数不合适。
注意:每一层共享一个 α \alpha α的效果更好; α \alpha α初始化的值尽量大,然后通过训练中的正则化减小 α \alpha α的值; α \alpha α的正则化参数可以与权重的正则化参数 λ \lambda λ相同。
最后,作者还将PACT和其他方法用于经典的神经网络进行对比:
在这里插入图片描述
PACT与DoReFa:
在这里插入图片描述

总结

PACT量化方法可以对激活函数进行量化,其中的参数 α \alpha α可以通过反向传播进行学习优化,而且在经典的神经网络上的量化效果不错(量化精度低于4bit,准确率下降不到1%)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值