全文概括

  先前的量化方法(同时量化所有的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

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

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

Incremental Quantization Strategy


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

目标函数: minWlE(Wl)=L(Wl)+λR(Wl)s.t.Wl(i,j)∈Pl,ifTl(i,j)=0,1≤l≤Lmin_{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 minWl​​E(Wl​)=L(Wl​)+λR(Wl​)s.t.Wl​(i,j)∈Pl​, if Tl​(i,j)=0,1≤l≤L

参数更新:Wl(i,j)←Wl(i,j)−γ∂E∂(Wl(i,j))Tl(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))∂E​Tl​(i,j)


结果展示


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

【以下比较的结果,都是在ResNet,基于ImageNet上进行的】

  上表权重划分的两种方式的结果。可以看出,随机划分效果有稍微的下降。可以看出,划分方式是会影响结果的,所以如何选择更好的划分方式,也可以是一个方向。比如用聚类算法,划分。


  上表是INQ探索Low-bit表示的结果。

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

  1. INQ 论文解读:Incremental Network Quantization: Towards Lossless CNNs with Low-Precision Weights

    这篇论文是ICLR 2017的一篇量化相关的论文.本文提出了一种渐进式量化的方法( INQ ):先分组量化,然后冻结已量化的部分并训练未量化的部分,重复以上步骤多次直到所有权重都被量化.这种渐进式量化 ...

  2. (摘要)ICLR 2017 神经网络压缩,Incremental Network Quantization: Towards Lossless CNNs with Low-Precision Weig

    目录 目录 原文 摘要 原文 原文:https://arxiv.org/abs/1702.03044 代码:https://github.com/Zhouaojun/Incremental-Netwo ...

  3. INCREMENTAL NETWORK QUANTIZATION: TOWARDS LOSSLESS CNNS WITH LOW-PRECISION WEIGHTS

    在量化方面已经有很多工作了,其中一个是用每个FC层的浮点的聚类中心值来代替所有权重值,可以获得20X的压缩率,以及在top-上1%的精度损失:hash网则将所有权重放入哈希桶内,且所有共享哈希桶的权重 ...

  4. 量化神经网络:QNN论文阅读笔记

    论文:<Quantized Neural Networks: Training Neural Networks with Low Precision Weights and Activation ...

  5. LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记)

    LiDAR-based Panoptic Segmentation via Dynamic Shifting Network(论文阅读笔记) 环形扫描骨干网络.动态漂移.一致性驱动的融合 一.重点内容 ...

  6. Sentiment Classification towards Question-Answering with Hierarchical Matching Network 论文阅读笔记

    Sentiment Classification towards Question-Answering with Hierarchical Matching Network 论文阅读笔记 这篇论文介绍 ...

  7. 论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering,SENet,用于大规模子空间聚类的自表达网络

    论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering. SENet--用于大规模子空间聚类的自表达网络 前言 摘要 ...

  8. 【异构图笔记,篇章3】GATNE论文阅读笔记与理解:General Attributed Multiplex HeTerogeneous Network Embedding

    [异构图笔记,篇章3]GATNE论文阅读笔记与理解:General Attributed Multiplex HeTerogeneous Network Embedding 上期回顾 论文信息概览 论 ...

  9. 论文阅读笔记:《Hyperspectral image classification via a random patches network》(ISPRSjprs2018)

    论文阅读笔记:<Hyperspectral image classification via a random patches network>(ISPRSjprs2018) 论文下载地址 ...

  10. RFA-Net: Residual feature attention network for fine-grained image inpainting 论文阅读笔记

    RFA-Net: Residual feature attention network for fine-grained image inpainting 论文阅读笔记 摘要 尽管大多数使用生成对抗性 ...

最新文章

  1. 前后端分离实践(试探篇)
  2. CentOS7 搭建GIT环境
  3. c++中实现域内,左,右对齐的方法
  4. CodeForces - 1362E Johnny and Grandmaster(贪心+模拟)
  5. 后端学习 - JVM(上)内存与垃圾回收
  6. Vue2.0 脚手架代码详解
  7. 企业即时通讯将成为未来企业竞争致胜的关键
  8. [开发回忆录]第三方模块的松耦合
  9. unity相机渲染不同层的东西和相机的深度
  10. INTOUCH中文乱码
  11. 历史 微信开发者工具_关于微信小程序开发者工具的版本管理使用介绍
  12. 敏 感 信 息 扫 描 工 具 使 用 对 比
  13. 金华市电子计算机学校,金华市第十四届中小学生计算机竞赛结果
  14. Arturia Buchla Easel V for Mac - Buchla音乐画架插件
  15. 北大才子吴明辉3万5千字的深度分享告诉你:能成功创立秒针跟明略的连环创业者是有秘籍的
  16. 一个五年架构师凭什么基本年薪酬就可以达到50万
  17. 程序员提升码字代码速度网站
  18. 线性代数几种特殊类型行列式_及其计算
  19. 超松弛迭代法求解二维电磁场有限差分方程(附Matlab代码)
  20. 【Java】斗地主和斗牛游戏

热门文章

  1. hdu 1677 Nested Dolls 子串
  2. linux执行lsof命令_linux系统 lsof命令详解
  3. 正向代理与反向代理通俗版解释
  4. 关于服务器上安装新版Python报错的问题
  5. html p代码的效果,html元素 p 标签的使用方法及作用
  6. SpringBoot/Spring Cloud/Docker
  7. 我国成功研制出巨型计算机,1989年11月17日 我国首台小巨型电子计算机研制成功...
  8. mysql报错1593_主从复制报1593错误的处理
  9. win10右键闪退到桌面_win10打开控制面板总闪退弹回桌面怎么办
  10. 提升网站关键词的排名