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

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

作者头像
AI异构
发布2020-08-10 11:02:16
2.4K0
发布2020-08-10 11:02:16
举报
文章被收录于专栏:AI异构AI异构

LSQ

本文为IBM的量化工作,发表在ICLR 2020。论文题目:Learned Step Size Quantization。为了解决量化精度越低,模型识别率越低的问题,本文引入了一种新的手段来估计和扩展每个权重和激活层的量化器步长大小的任务损失梯度,并在 ImageNet 上的实验和分析证明了所提出的方法的有效性, 实现了ResNet 4 bit量化不掉精度!

  • 论文链接:https://arxiv.org/abs/1902.08153
  • 源码链接(非官方复现):https://github.com/zhutmost/lsq-net

摘要

在推理时以低精度操作运行的深度网络比高精度具有功耗和存储优势,但需要克服随着精度降低而保持高精度的挑战。在这里,本文提出了一种训练此类网络的方法,即 Learned Step Size Quantization,当使用来自各种架构的模型时,该方法在 ImageNet 数据集上实现了 SOTA 的精度,其权重和激活量化为2、3或4 bit 精度,并且可以训练达到全精度基线精度的3 bit 模型。本文的方法建立在现有的量化网络中学习权重的方法基础上,通过改进量化器本身的配置方式。具体来说,本文引入了一种新的手段来估计和扩展每个权重和激活层的量化器步长大小的任务损失梯度,这样它就可以与其他网络参数一起学习。这种方法可以根据给定系统的需要使用不同的精度水平工作,并且只需要对现有的训练代码进行简单的修改。

方法

量化计算公式
\bar{v}=\left\lfloor\operatorname{cip}\left(v / s,-Q_{N}, Q_{P}\right)\right\rceil
\hat{v}=\bar{v} \times s
  • s为量化的 STEP SIZE 可学习参数。s即是数据的缩放因子,又能控制数据截断的边界
  • 针对weights:
Q_{N}=2^{b-1} \text { and } Q_{P}=2^{b-1}-1
  • 针对data:
Q_{N}=0 \text { and } Q_{P}=2^{b}-1

低精度卷积层或全连接层计算示意图

STEP SIZE GRADIENT
\frac{\partial \hat{v}}{\partial s}=\left\{\begin{array}{ll} -v / s+\lfloor v / s\rceil & \text { if }-Q_{N} < v / s < Q_{P} \\ -Q_{N} & \text { if } v / s \leq-Q_{N} \\ Q_{P} & \text { if } v / s \geq Q_{P} \end{array}\right.

LSQ对比PACT与QIL的梯度更新

STEP SIZE GRADIENT SCALE

当量化比特数增加时,step-size会变小,以确保更为精细的量化;而当量化比特数减少时,step-size会变大。为了让step-size的参数更新,能够适应量化比特数的调整,需要将step-size的梯度乘以一个scale系数。

  • 权重:
g=1 / \sqrt{N_{W} Q_{P}}

N_{W}

代表当前层的权重数。

  • 激活:
g=1 / \sqrt{N_{F} Q_{P}}

N_{F}

代表当前层的特征数。

STEP SIZE EFF梯度缩放示意图

直通估计器

量化的权重和激活用于前向和反向传递,通过 Bengio 提出的直通估计器(STE)计算,如下公式:

\frac{\partial \hat{v}}{\partial v}=\left\{\begin{array}{ll} 1 & \text { if }-Q_{N} < v / s < Q_{P} \\ 0 & \text { otherwise } \end{array}\right.

实验结果

Weight Decay

Weight Decay对量化的影响

ImageNet

ImageNet对比量化结果

Accuracy VS. Model Size

Accuracy VS. Model Size示意图

消融实验

Step Size Gradient Scale Impact

Step Size Gradient Scale Impact

添加知识蒸馏提高精度

添加知识蒸馏提高精度

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LSQ
    • 摘要
      • 方法
        • 量化计算公式
        • STEP SIZE GRADIENT
        • STEP SIZE GRADIENT SCALE
        • 直通估计器
      • 实验结果
        • Weight Decay
        • ImageNet
        • Accuracy VS. Model Size
      • 消融实验
        • Step Size Gradient Scale Impact
        • 添加知识蒸馏提高精度
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档