https://arxiv.org/pdf/2004.07320.pdf
论文的核心思想如下:

Training with Quantization Noise for Extreme Model Compression
针对上图进行实例分析:
如对卷积层weight为(64,64,3,3)进行量化

  • 设置centroids数目如(32,9)其中9表示3*3卷积核的flatten
  • 通过k-means进行选取centroids

之后进行编码(codebook),生成三个矩阵:

  • centroids=(32,9)
  • assignments=[4096]来源(64*64),其中里面的值对应centroids的index
  • counts=[32]
    其中centroids表示base字典,之后将根据assignments进行恢复原始到(64,64,3,3)权重
    counts矩阵中的所有值sum之后为4096,表示不同区间的分布状态。

如果仅仅进行此转换,这种转换是不可微的,且使用直通估计器(straight through estimator,STE)来逼近梯度。STE 在梯度中引入了一个偏置,该偏置取决于权重的量化级别,因此也取决于压缩率。
在每个前向传播过程中,随机选择这些块的子集,并添加一些失真;在反向传播过程中,使用 STE 逼近失真的权重,进而计算所有权重的梯度值。

===================下面开始分析论文中的证明过程

  • Quantizing Neural Networks
    Training with Quantization Noise for Extreme Model Compression
    矩阵分解m*q个block子矩阵,

  • 正常标量的量化
    Training with Quantization Noise for Extreme Model Compression

  • Product Quantization
    量化后的矩阵通过STE转化逼近原有矩阵
    Training with Quantization Noise for Extreme Model Compression
    Iterative PQ,如何将loss更新codebook,见下面公式:
    Training with Quantization Noise for Extreme Model Compression
    论文提出的内存计算公式:
    Training with Quantization Noise for Extreme Model Compression

  • 训练网络是采用的 Training Networks with Quantization Noise

Training with Quantization Noise for Extreme Model Compression

  • 主要实验结果
    Training with Quantization Noise for Extreme Model Compression

相关文章: