本文是对lsq:Learned Step-size Quantization的改进。
关于lsq,这篇文章讲得很清楚:
https://blog.youkuaiyun.com/nature553863/article/details/104275477
简单来说,就是通过学习来确定量化间隔。
在lsq提出时,当时流行的激活函数是ReLU。它的特点是,将小于0的激活值都置为0,因此lsq在量化激活值时使用非对称量化:即只量化正的激活值,负值直接量化为0。这在当时是没问题的,但后来swish、H-swish以及Leaky-ReLU这类负值区域的激活值不为0的激活函数被提出,如果再这样做,就会导致精度的下降(lsq+的作者通过实验证明了这一点)。
但是如果采取和量化权重一样的,对称量化激活值也会带来一个问题:量化的间隔是有限的,分出一半给负值就会减少正值的表示能力,而且负值区域相较正值来说要少很多,这样做并不值得。
为了解决这个问题,lsq+的作者给激活值加了一个可学习参数β: