本文提出了一种使用随机算法量化网络的方法。

它的思路类似INQ,都是将权重划分为被量化的和全精度部分,然后逐次增加量化的比例,直到百分百。不同之处在于量化权重的选取:INQ是按照从大到小的顺序进行量化,而本文则根据量化误差的大小选取:
Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
这里Wi是某通道权重的全精度值,Qi是其量化后的值。作者定义一个函数:Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
作者依据该函数提出了四种量化方案:
1:量化概率为1/m,m为权重的通道数。
2:线性函数Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
3:softmax函数Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
4:sigmoid函数Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
作者发现这四种方法的结果差不多,但因为线性函数最简单,所以认为它的效果最好。作者对这种现象的看法是,重要的是随机划分算法,而不是指示函数。

概率计算算法确定后,划分算法如下:
Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
整个训练算法如下:
Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
权重更新公式为:
Learning Accurate Low-Bit Deep Neural Networks with Stochastic Quantization
在更新时,分别使用量化后权重和全精度权重的梯度更新对应的权重。

随后作者做了多组对照实验:

逐元素量化和逐通道量化:逐通道量化的效果更好,这是因为逐元素量化会对元素间的相关性有较大的影响。

随机划分和确定划分:本文在决定量化的通道时使用了概率方法,这也是它被称作随机量化的原因。但这种方法真的是最好的吗?为此作者还设定了两种量化方案:1、严格按照量化误差由小到大的顺序进行量化;2、在第一次训练时决定好各通道的量化概率,并在之后保持这个概率。结果显示随机量化的效果最好,作者认为这是因为随机算法可以算作是正则化方法(在每次并不选取“最好”的量化通道,也就一定程度上防止了过拟合)。

量化比例的选取:在每次进行量化时,作者设定一个超参数r来决定多少比例的权重被量化,它的值会随着训练的进行而逐渐增加。为了探寻一个合理的增加方式,作者提出了三种方案:1、50%、75%、87.5%、100%,这是本文选取的方案,作者称其为Exponential Scheme(INQ中也选取了这样的比例,看来计算机更喜欢2的指数的变化);2、20%、40%、60%、80%、100%,作者称为Average Scheme;3、前两种方案都是train from scatch,于是作者提出了fine-tune的方案。结果证明第一种方案的效果最好。不过这可能是因为作者是在小型网络上做的实验,在大型网络上,fine-tune(包括post-quantization)的效果可能会更好。

相关文章:

  • 2021-07-18
  • 2022-01-20
  • 2021-07-06
  • 2021-05-16
  • 2021-05-28
  • 2021-07-09
  • 2022-01-21
猜你喜欢
  • 2021-04-24
  • 2021-05-18
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
相关资源
相似解决方案