本文提出了使用全精度网络而非量化网络的误差更新权重的方法,以及对INQ的改进。

一般的量化网络,在训练时都会使用量化网络或混合网络(部分网络被量化)的误差来更新权重。本文则另辟蹊径,使用全精度网络的误差来更新权重。不仅取得了较好的结果,还避免了梯度的不匹配问题。

其损失函数为:
Explicit Loss-Error-Aware Quantization
第一项是全精度网络的误差,第二项是全精度网络和量化网络的差异,第三项是量化权重和全精度权重的期望差。a1和a2是两个正的超参数。
Explicit Loss-Error-Aware Quantization
作者定义Lp如下:
Explicit Loss-Error-Aware Quantization
Explicit Loss-Error-Aware Quantization
Explicit Loss-Error-Aware Quantization
Explicit Loss-Error-Aware Quantization
这样式5的后两项形式就统一了。

梯度更新方式为:
Explicit Loss-Error-Aware Quantization
这种方式咋一看很奇怪,但仔细想想就觉得很巧妙。一般的量化思路是缩减量化权重和全精度权重的差距。但这种思路的问题是,在量化后,网络实际上已经和原来的网络不同了,所以会带来可能的精度损失。这种方法则类似于将量化误差视作一个正则项,它实际上是试图在满足尽可能地减少量化误差的同时,去寻找一个最好的全精度网络。这种做法从感觉上来说,要比其它方式更加有效。

在找到这样一个网络后,剩下的两个步骤是选取一个合适的放缩尺度及量化方法。

对前者,如果是三值网络:
Explicit Loss-Error-Aware Quantization
如果是二值网络:
Explicit Loss-Error-Aware Quantization
al定义如下:
Explicit Loss-Error-Aware Quantization

量化方法的过程如下:
Explicit Loss-Error-Aware Quantization
作者选取了和INQ一致的思路,并不一口气量化所有权重,而是逐步进行量化。但不同之处在于,INQ是按照权重绝对值从大到小的顺序进行量化,而本文则是从每个量化值开始,逐步地量化其两边的权重。

相关文章:

  • 2022-12-23
  • 2022-01-03
  • 2021-11-13
  • 2021-06-10
  • 2022-12-23
  • 2021-05-29
  • 2021-07-02
猜你喜欢
  • 2021-08-07
  • 2021-05-13
  • 2021-12-01
  • 2021-07-20
  • 2021-05-16
  • 2021-11-19
  • 2022-01-19
相关资源
相似解决方案