【论文阅读笔记】Incremental Network Quantizatio:Towards Lossless CNNs with Low-Precision Weights

全文概括

  先前的量化方法(同时量化所有的weight)都太粗暴了,这导致了量化损失严重,作者提出一种分组量化-分组re-train的方法来拟补量化带来的损失。

  INQ方法步骤:

  1. 将为量化的参数分成 待量化/待re-train组(用超参数定义每次量化的百分比,百分比会自动在参数中找到一个临界点,绝对值大于这个临界点的分为待量化组 ,因为作者认为大值比小值重要,让小的re-train。这个观点,在选择fixed-point的IL和FL划分时,也是这样认为的。)
  2. 量化待量化组
  3. retrain 待retrain组

  INQ目前只研究了量化权重的模式(量化activation待研究中,目前在VGG16成功展示)

  其结果表示:量化效果好(包括二元/三元量化),accuracy不降反升(只降一点点 );其权重量化限制为 2n,让乘法操作可变作移位操作(注意,本论文的该方法,只是将权重进行量化,对activation并未操作,仍是floating point。所以这种移位操作,只是想象的,并未实际运用)

  这种方法使量化不会产生大的损失,但加剧了实验者对超参调整经验的要求,因为每次量化部分参数都要调整到最好。


前言

  INQ旨在于将任意以训练好的高精度CNN模型量化成参数限制为2n或0的低精度版本。INQ方法可以分为三个相互依赖的部分:weight partition,group-wise quantization,re-training.
  weight parition将CNN模型的每层划分成不想交的两组,(group-wise)一组进行量化(通过可变长度编码方法)(re-train)另一组进行re-train来补偿量化损失。

  具体来说,在5-bit量化中 (可变长度编码:1位用于表示零值,其余4位最多表示16位不同的值,用于表示2的幂)【个人认为,这个零位专门标记出来,是为了方便判断 0和2n,即2n带来的移位操作计算优势】

  结果展示:

  1. 对于AlexNet,VGG-16,GoogleNeet 和 ResNets,用5-bit量化,可以提高32-bit全精度的精确度;
  2. INQ让每次re-train更容易收敛,每次预训练不到8个epochs就能得到5-bit的无损模型;
  3. 以ResNet-18为例,用4-bit,3-bit 和 2-bit的三元权重都能改善或者非常接近32-bit 浮点数的基准线

Incremental Network Quantization

Weight Quantization with Variable-Lnegth Encoding

  量化后的权重 W l ^ \hat{W_l} Wl^表示第 l l l层的权重,其取值限制为 P l = { ± 2 n 1 , . . . , ± 2 n 2 , 0 } P_l = \{\pm2^{n_1},...,\pm2^{n_2},0\} Pl={±2n1...±2n20}。其中, P l P_l Pl表示第 l l l层的参数, n 1 , n 2 n_1,n_2 n1n2是两个整数,并定义 n 2 &lt; n 1 n_2&lt;n_1 n2<n1
  所以,量化的关键是如何如何找到 n 1 n_1 n1 n 2 n_2 n2(因为bit-width是我们定义的超参数,且有 ( n 1 − n 2 + 1 ) ∗ 2 = 2 b − 1 (n_1-n_2+1)*2=2^{b-1} (n1n2+1)2=2b1,其中,乘2是表示正负号,b-1是因为有一个bit去标记零值。所以,其实我们只要找到 n 1 n_1 n1或者 n 2 n_2 n2就行,另一个可以计算得出)
  我们从以下公式得到 n 1 n_1 n1 n 1 = f l o o r ( l o g 2 4 s 3 ) s = m a x ( a b s ( W l ) ) n_1=floor(log_2\frac{4s}3)\\s=max(abs(W_l)) n1=floor(log234s)s=max(abs(Wl))
我们的 b − 1 b-1 b1个bit得到的数字,是作为幂的指数部分存在的。

  然后就近选择量化的结果。

Incremental Quantization Strategy

在这里插入图片描述
  不断增大量化的比例,量化比例中未量化的参数(从大到小量化),re-train不在比例中的参数。
  在量化时,用一个mask数组 Tl来标记哪些是还没被量化的,即re-train时需要更新的部分(待量化部分, T l ( i , j ) = 0 T_l(i,j)=0 Tl(i,j)=0;待re-trained部分, T l ( i , j ) = 1 T_l(i,j)=1 Tl(i,j)=1)

目标函数: m i n W l E ( W l ) = L ( W l ) + λ R ( W l ) s . t . W l ( i , j ) ∈ P l ,   i f   T l ( i , j ) = 0 , 1 ≤ l ≤ L min_{W_l} E(W_l)=L(W_l) +\lambda R(W_l) \\ s.t. W_l(i,j) \in P_l, \ if\ T_l(i,j) = 0,1 \leq l \leq L minWlE(Wl)=L(Wl)+λR(Wl)s.t.Wl(i,j)Pl, if Tl(i,j)=01lL

参数更新: W l ( i , j ) ← W l ( i , j ) − γ ∂ E ∂ ( W l ( i , j ) ) T l ( i , j ) W_l(i,j)\leftarrow W_l(i,j)-\gamma \frac{\partial E}{\partial(W_l(i,j))}T_l(i,j) Wl(i,j)Wl(i,j)γ(Wl(i,j))ETl(i,j)


结果展示

在这里插入图片描述
  上表中,带ref的是32-bit 全精度推测,而下面的是 5-bit的量化网络。可以看出,在ImageNet上,5-bit的量化网络比32-bit全精度网络达到了更好的结果。

【以下比较的结果,都是在ResNet,基于ImageNet上进行的】
在这里插入图片描述
  上表权重划分的两种方式的结果。可以看出,随机划分效果有稍微的下降。可以看出,划分方式是会影响结果的,所以如何选择更好的划分方式,也可以是一个方向。比如用聚类算法,划分。

在这里插入图片描述
  上表是INQ探索Low-bit表示的结果。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值