前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >神经网络低比特量化——DSQ

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

作者头像
AI异构
发布2020-08-04 16:00:34
1.9K0
发布2020-08-04 16:00:34
举报
文章被收录于专栏:AI异构AI异构

DSQ

本文为商汤科技的量化工作,发表在 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倍。

  • 论文链接:https://arxiv.org/pdf/1908.05033v1.pdf
  • 源码链接(非官方复现):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,引入了可求导的量化函数,缓解了不可求导带来的梯度不匹配问题。同时,这个函数随着训练的进行可以逐步趋近标准量化,因此可以在部署时直接利用高效的线性低比特量化函数进行推理,此外,由于这个函数是可以求导的,因此截断值也能够直接被优化,在训练过程中平衡截断误差和取整误差间的关系。

方法

量化表示
二值网络量化表示
Q_{B}(x)=\operatorname{sgn}(x)=\left\{\begin{array}{ll} +1, & \text { if } x \geq 0 \\ -1, & \text { otherwise } \end{array}\right.
多位均匀量化表示
Q_{U}(x)=\operatorname{round}\left(\frac{x}{\Delta}\right) \Delta

其中,原始数据范围是(l,u),量化被切分为

2^b-1

个整数值

\mathcal{P}_{i}, i \in\left(0,1, \ldots, 2^{b}-1\right)

,并且量化间隔为

\Delta=\frac{u-l}{2^{b}-1}
量化函数
渐进函数
\varphi(x)=s \tanh \left(k\left(x-m_{i}\right)\right), \quad \text { if } x \in \mathcal{P}_{i}
m_{i}=l+(i+0.5) \Delta \text { and } s=\frac{1}{\tanh (0.5 k \Delta)}

标度参数

s

保证相邻区间的tanh函数可以平滑连接。由于tanh函数的高度对称性,在任何地方都是连续可微的。此外,系数

k

决定了渐近函数的形状。也就是说,

k

越大,渐近函数的行为就越类似于由具有多个量化级别的均匀量化器生成的期望阶梯函数。

可微软量化(DSQ)函数
Q_{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.

实验结果

消融实验
二值量化消融实验

二值量化消融实验

均匀量化消融实验

均匀量化消融实验

CIFAR-10

CIFAR-10量化结果对比

ImageNet

ImageNet量化结果对比

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DSQ
    • 摘要
      • 简介
        • 问题描述
          • 方法
            • 量化表示
            • 量化函数
          • 实验结果
            • 消融实验
            • CIFAR-10
            • ImageNet
        相关产品与服务
        NLP 服务
        NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档