神经网络低比特量化——DSQ

  • 摘要
  • 简介
  • 问题描述
  • 方法
    • 量化表示
      • 二值网络量化表示
      • 多位均匀量化表示
    • 量化函数
      • 渐进函数
      • 可微软量化(DSQ)函数
  • 实验结果
    • 消融实验
      • 二值量化消融实验
      • 均匀量化消融实验
    • CIFAR-10
    • ImageNet

本文为商汤科技的量化工作,发表在 ICCV 2019,论文题目:Differentiable Soft Quantization:
Bridging Full-Precision and Low-Bit Neural Networks。为了解决量化精度越低,模型识别率越低的问题,本文提出了一种可微软量化(DSQ)方法来弥补全精度网络和低比特网络之间的差距。DSQ可以在训练过程中自动进化,逐步逼近标准量化。由于DSQ的可微性,在适当的限幅范围内,DSQ可以在后向传播中跟踪精确的梯度,减少前向过程中的量化损失。通过对几种常用网络结构的大量实验表明,用DSQ训练低比特神经网络的性能始终优于目前最先进的量化方法。此外,与开源的8位高性能推理框架NCNN相比,我们第一个在ARM架构的设备上部署2到4位DSQ的有效实现速度提高了1.7倍。

  • 论文链接:Differentiable Soft Quantization:
    Bridging Full-Precision and Low-Bit Neural Networks
  • 源码链接(非官方复现):https://github.com/ricky40403/DSQ

摘要

硬件友好的网络量化(如二进制/均匀量化)可以有效地加速推理,同时降低深度神经网络的内存消耗,这对于在资源有限的设备(如移动电话)上部署模型至关重要。然而,由于低比特量化的离散性,现有的量化方法往往面临训练过程不稳定和性能严重下降的问题。为了解决这一问题,本文提出了一种可微软量化(DSQ)方法来弥补全精度网络和低比特网络之间的差距。DSQ可以在训练过程中自动进化,逐步逼近标准量化。由于DSQ的可微性,在适当的限幅范围内,DSQ可以在后向传播中跟踪精确的梯度,减少前向过程中的量化损失。通过对几种常用网络结构的大量实验表明,用DSQ训练低比特神经网络的性能始终优于目前最先进的量化方法。此外,与开源的8位高性能推理框架NCNN相比,我们第一个在ARM架构的设备上部署2到4位DSQ的有效实现速度提高了1.7倍。

简介

深卷积神经网络在计算机视觉、自然语言处理、信息检索等许多领域都取得了巨大的成功,但其昂贵的存储和计算成本严重阻碍了其在广泛的资源受限设备上的应用,特别是在实时应用中。为了解决这一问题,近年来,量化技术作为一种很有前途的网络压缩方案应运而生,并取得了长足的进展。使用不同类型的量化器,主要包括二元/三元量化器、均匀量化器,可以大大减少网络存储,同时加快推理速度。

由于受到指令集等硬件特性的限制,大多数量化方法很难达到网络加速的目的,而且还可能严重依赖于特殊的硬件设计和长期的硬件开发。值得庆幸的是,最近的研究已经证明,二进制和均匀量化模型都具有硬件友好的特性,这使得我们能够通过有效的位运算或纯整数算法直接在现成的硬件上加速推理。

尽管具有吸引人的优点,但当量化到极低比特时,由于量化级别有限且离散,现有的二进制和均匀量化模型仍然面临严重的性能退化。首先,基于离散量化表示,反向传播很难获得精确的梯度,因此必须采用适当的近似。在文献中,直通估计器(STE)被广泛用于近似。但它忽略了量化的影响,当数据量化到极低比特时,其误差会被放大,导致优化过程有明显不稳定性。量化和STE引起的梯度误差对量化模型的精度有很大的影响

此外,量化本身不可避免地带来原始数据与其量化值之间的较大偏差,从而常常导致性能下降。实际上,量化通常由两个操作完成:剪裁和舍入。前者将数据限制在较小的范围内,而后者将原始值映射到其最近的量化点。两种操作都会导致量化损失。因此,为了缓解性能下降,找到合适的剪裁范围并在剪裁和舍入之间取得平衡也很重要。

为了解决这些问题,本文引入了可微软量化(DSQ)来很好地逼近标准的二值和均匀量化过程。DSQ采用一系列双曲正切函数逐步逼近阶梯函数进行低比特量化(如1比特情况下的符号),同时保持平滑性,便于梯度计算。我们针对一个近似特征变量重新构造了DSQ函数,并相应地发展了一种进化训练策略来逐步学习微分量化函数。在训练过程中,DSQ和标准量化之间的近似值可以由特征变量控制,特征变量和限幅值可以在网络中自动确定。我们的DSQ减少了由极低比特量化引起的偏差,从而使训练中的前向和后向过程更加一致和稳定。与最先进的解决方案相比,DSQ的特殊设计使其具有以下优势:

  • 新颖的量化。我们引入一个DSQ函数来很好地逼近标准二进制和均匀量化。利用进化训练方法可以很容易地控制DSQ的逼近。
  • 容易收敛.DSQ充当整流器,根据量化逐步重新分配数据点。因此后向传播与前向传播更加一致,从而更容易与精确梯度收敛。
  • 平衡损失。借助于DSQ,我们可以共同确定量化的限幅范围和近似值,从而平衡包括限幅误差和舍入误差在内的量化损失。
  • 高效率.DSQ可以基于我们的快速计算内核实现,其推理速度超过大多数开源高性能推理框架。
  • 灵活性强。DSQ与二进制或均匀量化方法兼容,易于部署在最先进的网络结构中,能够得到进一步的精度提高。

问题描述

由于量化函数本身是离散不可导的,导致其无法像标准神经网络一样使用反向传播计算梯度,一个常用的做法是使用梯度直通估计器(STE),即在反向过程中忽略量化这一步骤产生的影响,而这也就自然的带来了梯度不准确的问题。权重经过STE拿到的梯度跟它应该拿到的梯度是不匹配的。ICLR 2020年有一篇论文通过实验具体的分析了这一现象,发现随着比特数的降低,不匹配的现象更加明显。

这让低比特量化网络很难高效训练,针对这个问题,该文章提出了一个可微分的软量化函数DSQ,引入了可求导的量化函数,缓解了不可求导带来的梯度不匹配问题。同时,这个函数随着训练的进行可以逐步趋近标准量化,因此可以在部署时直接利用高效的线性低比特量化函数进行推理,此外,由于这个函数是可以求导的,因此截断值也能够直接被优化,在训练过程中平衡截断误差和取整误差间的关系。

方法

量化表示

二值网络量化表示

QB(x)=sgn⁡(x)={+1,if x≥0−1,otherwise Q_{B}(x)=\operatorname{sgn}(x)=\left\{\begin{array}{ll} +1, & \text { if } x \geq 0 \\ -1, & \text { otherwise } \end{array}\right. QB​(x)=sgn(x)={+1,−1,​ if x≥0 otherwise ​

多位均匀量化表示

QU(x)=round⁡(xΔ)ΔQ_{U}(x)=\operatorname{round}\left(\frac{x}{\Delta}\right) \Delta QU​(x)=round(Δx​)Δ
其中,原始数据范围是(l,u),量化被切分为2b−12^b-12b−1个整数值Pi,i∈(0,1,…,2b−1)\mathcal{P}_{i}, i \in\left(0,1, \ldots, 2^{b}-1\right)Pi​,i∈(0,1,…,2b−1),并且量化间隔为Δ=u−l2b−1\Delta=\frac{u-l}{2^{b}-1}Δ=2b−1u−l​

量化函数

渐进函数

φ(x)=stanh⁡(k(x−mi)),if x∈Pi\varphi(x)=s \tanh \left(k\left(x-m_{i}\right)\right), \quad \text { if } x \in \mathcal{P}_{i} φ(x)=stanh(k(x−mi​)), if x∈Pi​

mi=l+(i+0.5)Δand s=1tanh⁡(0.5kΔ)m_{i}=l+(i+0.5) \Delta \text { and } s=\frac{1}{\tanh (0.5 k \Delta)} mi​=l+(i+0.5)Δ and s=tanh(0.5kΔ)1​

标度参数sss保证相邻区间的tanh函数可以平滑连接。由于tanh函数的高度对称性,在任何地方都是连续可微的。此外,系数kkk决定了渐近函数的形状。也就是说,kkk越大,渐近函数的行为就越类似于由具有多个量化级别的均匀量化器生成的期望阶梯函数。

可微软量化(DSQ)函数

QS(x)={l,x<lu,x>ul+Δ(i+φ(x)+12),x∈PiQ_{S}(x)=\left\{\begin{array}{cl} l, & x < l \\ u, & x > u \\ l+\Delta\left(i+\frac{\varphi(x)+1}{2}\right), & x \in \mathcal{P}_{i} \end{array}\right. QS​(x)=⎩⎪⎨⎪⎧​l,u,l+Δ(i+2φ(x)+1​),​x<lx>ux∈Pi​​

实验结果

消融实验

二值量化消融实验

均匀量化消融实验

CIFAR-10

ImageNet


神经网络低比特量化——DSQ相关推荐

  1. 神经网络低比特量化——LSQ

    神经网络低比特量化--LSQ 摘要 方法 量化计算公式 STEP SIZE GRADIENT STEP SIZE GRADIENT SCALE 直通估计器 实验结果 Weight Decay Imag ...

  2. 全网最全-网络模型低比特量化

    CSDN的公式是在是太蛋疼了,如果要看公式的可以上知乎上面看原文 神经网络低比特量化中训练和推理是如何实现的? - ZOMI酱的回答- 知乎 https://www.zhihu.com/questio ...

  3. LSQ 的低比特量化之路

    LSQ 是一种有效的低比特量化算法 对于深度神经网络,模型的权重一般都用浮点数表示,如 32-bit 浮点数(float32).推理的时候,如果也采用这种数值类型,会消耗较大的内存空间和计算资源.在不 ...

  4. 低比特量化之DoreFa-Net理论与实践

    本文首发于GiantPandaCV公众号. 1. 前言 这篇文章首先详细介绍了DoreFaNet任意比特量化网络的原理,然后提供了DoreFaNet的Pytorch代码实现解析,并给出将DoreFa- ...

  5. 神经网络压缩之低比特量化的优劣分析

    优势 减小模型尺寸(减少内存占用):如8位整型量化可减少75%的模型大小,更小的模型大小意味着不需要更多的内存 加快推理速度: 1)8 位的访问次数要比 32 位多,在读取 8 位整数时只需要 32 ...

  6. 基于可训练Step-size的低比特量化——LSQ: Learned Step-size Quantization

    Paper地址:https://arxiv.org/abs/1902.08153 GitHub地址 (PyTorch):GitHub - zhutmost/lsq-net: Unofficial im ...

  7. AAAI2020| 超低精度量化BERT,UC伯克利提用二阶信息压缩神经网络

    2020-01-19 10:50:01 机器之心发布 机器之心编辑部 2020 年 2 月 7 日-2 月 12 日,AAAI 2020 将于美国纽约举办.不久之前,大会官方公布了今年的论文收录信息: ...

  8. 超全总结:神经网络加速之量化模型 | 附带代码

    作者丨郝泽宇 学校丨西安交通大学人机所硕士生 研究方向丨深度神经网络压缩 鸣谢 | XJTU @魏亚东 I.C. @董豪 量化模型(Quantized Model)是一种模型加速(Model Acce ...

  9. HAWQ-V2:基于Hessian迹的混合比特量化策略

    HAWQ-V2:基于Hessian迹的混合比特量化策略 摘要 方法 自动化的位宽选择 Hutchinson快速求解Hessian迹 敏感度指标分析 激活的混合精度量化 实验结果 ResNet50 on ...

最新文章

  1. 高并发Nginx,Tomcat8,mysql数据库配置
  2. 对于Python开发者,这本书绝对算得上此生必读之作
  3. kubeadm常见报错和解决方法
  4. 继SqlPager之后推出一款可用于前台页面的分页控件--UrlPager
  5. Hibernate n+1问题
  6. httpRuntime 一点经验---引
  7. Linux vim使用心得--一些高级话题
  8. 【HDU -1568】 Fibonacci(斐波那契通项公式+取对数)
  9. mysql 日志_MySQL日志系统
  10. Oracle数据库之三
  11. 大涨50%之后 瑞幸咖啡美股盘前再涨逾30%
  12. 转:imageNamed和dataWithContentsOfFile的区别
  13. PHP curl get post 请求的封装
  14. Java版通用身份证验证
  15. C语言程序怎么解决数独,数独解法解决方法
  16. 微信内置浏览器禁止调整字体大小的方法
  17. 图像表头数据读取,图像数据块读取,图像类型转换
  18. Hyper-V安裝筆記
  19. 单片机中code、data、idata、xdata等关键字意思
  20. Java final与static

热门文章

  1. 【web安全】文件包含漏洞
  2. 【速通版】吴恩达机器学习笔记Part2
  3. php获取json中的内容
  4. 怎么做加减计算机程序vb,如何用VB设计一个简单计算器能进行加减乘除运算?...
  5. 牛客 试卷: 浩鲸科技2019校招算法类笔试题 经典二分 二分答案
  6. 数字信号处理笔记(上)
  7. 浏览器渲染原理的学习与总结
  8. Object.freeze()--将对象冻结--在const中的应用
  9. 选择手机中的一张照片或拍照上传图片(超高清晰度)
  10. 如何卸载阿里云盾(安骑士)和腾讯云镜的监控?你对这件事一定很感兴趣!