一.Title

LEARNED STEP SIZE QUANTIZATION

二.Abstract&Introduction

why?

近年来,神经网络作为一种许多革命性技术的组成部分开始崭露头角,比如图像识别、语音识别以及自动驾驶等。但是,要利用好这一技术并大规模应用需要开发者有一个系统性的视角,即要兼顾网络的性能、吞吐率、能效以及紧凑程度。现在很多研究者都致力于在保持网络精度的同时,用低精度的数据去表示权重和激活,这种方法使得模型的大小以及计算量大大降低。因此,如何在降低精度的同时尽可能保持网络的精度成为了一个重要的问题。

how?

作者针对此问题提出了Learned Step Size Quantization (LSQ),该方法和之前的量化感知训练不同,之前的量化感知训练,是根据权重或者激活的统计分布来动态的修改Scale,而在LSQ中,Scale被设置为网络中可训练的参数,即直接通过BP算法来学习Scale。此外,作者还提出了一种启发式的方法,使得Scale更新时的相对幅度和权重更新的相对幅度保持在一个量级,从而使得模型的收敛速度和精度有了很大的提升。

result?

作者在ImageNet上对不同结构的网络进行了测试,结果表明,LSQ的精度高于之前所有的量化方法,并且在3bit的量化模型上精度首次达到了全精度网络的水准。

三.Methods

同google的量化感知训练论文一样,LSQ也包含量化和反量化操作,设待量化的张量为vvv,量化后的张量为v‾\overline vv,反量化后的张量为v^\hat vv^,则量化过程为
v‾=[clip(vs,−QN,QP)]\overline v=[clip(\frac{v}{s},-Q_N,Q_P)]v=[clip(sv​,−QN​,QP​)]
而反量化过程为
v^=v‾∗s\hat v=\overline v*sv^=v∗s
下图是模型推理时的计算过程,量化后的w‾和x‾进行整数运算,得到的输出再乘以sw和sx。推导如下\overline w和\overline x进行整数运算,得到的输出再乘以s_w和s_x。\\推导如下w和x进行整数运算,得到的输出再乘以sw​和sx​。推导如下
y=w^∗x^+b^=w‾∗sw∗x‾∗sx+b^=sw∗sx∗(w‾∗x‾+b‾)=y‾∗sw∗sx其中b‾=[b^/(sx∗sw)]y=\hat w*\hat x+\hat b=\overline w*s_w*\overline x*s_x+\hat b=\\s_w*s_x*(\overline w*\overline x+\overline b)=\overline y*s_w*s_x\\其中\overline b=[\hat b/(s_x*s_w)]y=w^∗x^+b^=w∗sw​∗x∗sx​+b^=sw​∗sx​∗(w∗x+b)=y​∗sw​∗sx​其中b=[b^/(sx​∗sw​)]

1.STEP SIZE GRADIENT

对round函数使用STE(直通估计),即假设取整函数的导数为1,那么可以得到v^对s的导数为\hat v对s的导数为v^对s的导数为

在之前的对梯度的估计中,人们都没有考虑v和取整函数转折点v和取整函数转折点v和取整函数转折点之间的相对距离对量化梯度的影响,但是可以理解的是,vvv和取整函数转折点的距离越近,那么s的轻微变动都极有可能使得量化后的v‾\overline vv发生改变,从而导致v^\hat vv^的巨大跳变,也就是说,网络能模拟的量化所带来的误差就越大,因此,∂v^∂s应该随着v与转折点距离的缩小而增大因此,\dfrac{\partial \hat v}{\partial s}应该随着v与转折点距离的缩小而增大因此,∂s∂v^​应该随着v与转折点距离的缩小而增大
确实,我们也在LSQ的方法中观察到了这一关系。
在作者的LSQ中,每一层的权重和激活都有一个各自的step size,它们被初始化为2∗<∣v∣>/QP2*<|v|>/\sqrt {Q_P}2∗<∣v∣>/QP​​,其中<∣v∣><|v|><∣v∣>表示该层所有特征或权重的绝对值的平均。

2.STEP SIZE GRADIENT SCALE

研究显示,每一层参数的更新幅度与参数本身的幅度之比越接近,模型训练时收敛的越快,因此,我们考虑step size的更新幅度与step size本身的幅度之比应该也要尽可能接近权重,如下图所示

R应该接近1。同时,我们还期望模型参数精度上升时,step size变小(因为数据被量化得更精细),被量化的参数数目变大时,step size更新也能变大( 因为在计算其梯度时,会有更多的项被求和)。因此,为了纠正这一点,作者将step size的梯度乘以一个g,对权重来说,这个ggg为1/NWQP1/\sqrt{N_WQ_P}1/NW​QP​​,而对激活来说ggg为1/NfQP1/\sqrt{N_fQ_P}1/Nf​QP​​,这个g的使用使得模型的精度和收敛速度有了很大的提升。

3.TRAINING

在其他的一些工作中,v^\hat vv^对vvv的梯度被直接估计为1,如下式

为了使得在训练时更加简单,作者同以前的量化模型一样,将伪量化后的v^\hat vv^送入卷积单元或者矩阵乘法单元。作者将除了第一层和最后一层的权重和激活都量化为2,3,4,8bit,而第一层和最后一层则使用8bit精度(这是由于保持第一层和最后一层的量化精度对模型最终的性能有很大的提升), 在量化空间中进行微调之前,所有量化网络都是使用经过训练的具有等效体系结构的全精度模型的权重初始化的,因为这可以提高性能。
作者的网络在训练时使用0.9的动量,使用softmax交叉熵损失函数,并使用了余弦学习率,8bit的网络训练1轮,而其余网络训练90轮,
全精度网络的初始学习率为0.1,2,3,4bit网络的初始学习率为0.01,8bit网络的初始学习率为0.001,并且所有的网络模型都是基于ImageNet数据集的,等等训练的细节不再赘述。

四.Experiment&Result

1.WEIGHT DECAY

作者预期对模型进行量化时也会降低模型过拟合的可能性,因此weight decay的大小可能不需要原先这么大。为了探究这个问题,作者在ResNet-18上使用了不同的weight decay,并观察结果,如下图所示

可以看到,低精度的网络所需的weight decay值的确更小。

2.COMPARISON WITH OTHER APPROACHES


如上表所示,用LSQ方法训练的低精度网络优于之前人们提出的量化模型,并且作者发现,从4bit到8bit,网络的精度并没有上升。
另一个有趣的现象是,将ResNet-18从全精度量化为2bit,top-1准确率下降了2.9%,而 SqueezeNext-23-2x却下降了14.0%之多,一个解释是:SqueezeNext的网络结构是精心设计的,它用更少的参数去达到了更高的精度,因此,网络对于参数精度的降低十分敏感。

3. ACCURACY VS. MODEL SIZE

对一个存储资源有限的应用来说,如何在符合条件的模型大小下选取更高精度的网络是一个很重要的问题,因此,作者绘制了下图:

4. STEP SIZE GRADIENT SCALE IMPACT

为了观察step size梯度伸缩因子g对模型训练的影响,作者在ResNet-18上进行了实验,测量了第一轮训练中500次迭代的平均R值。
作者发现,如果不进行梯度的伸缩,那么step size的R值会比weight高出2-3个数量级,并且这种不平衡随着量化精度的增大而增大。如果考虑每层的特征数目,即将ggg设置为1/NW1/\sqrt {N_W}1/NW​​,那么权重和step size之间这种更新的不平衡将会大大减少,但是由于量化精度带来的不平衡仍未消除,若将量化精度也考虑在内,即ggg=1/NWQP1/\sqrt{N_WQ_P}1/NW​QP​​,那么由于精度带来的不平衡也将大大减少。
作者观察了使用不同step size的梯度伸缩因子g训练2-bit的ResNet-18对最终结果的影响,如下图所示。

可以看到,将ggg设为1/NQP1/\sqrt{NQ_P}1/NQP​​的效果是最好的。

5.COSINE LEARNING RATE DECAY IMPACT

作者在LSQ中使用了cosine learning rate decay方法,为了凸显其优势,作者还和step-based learning rate decay进行了比较,该方法的初始学习率为0.01,每20个epoch学习率乘以0.1,一共训练90轮,最终达到了67.2%的top-1准确率,比使用cosine learning rate decay方法的准确率低了0.4%,由此可见余弦学习率衰减的优势。

6.QUANTIZATION ERROR

所谓量化误差,是指vvv和v^\hat vv^两个张量在某种度量下的距离,比如L1范数,L2范数等等。作者为了探究使得量化误差最小的s和经过BP算法训练得到的s是否相等,进行了实验,实验结果表明,BP算法得到的s并不是使得量化误差最小的s。

7. IMPROVEMENT WITH KNOWLEDGE-DISTILLATION

作者探究了知识蒸馏对低精度模型训练的作用,实验结果表明,知识蒸馏能在一定程度上提升量化训练的精度。

五.Conclusion

论文阅读-LEARNED STEP SIZE QUANTIZATION相关推荐

  1. LSQ:LEARNED STEP SIZE QUANTIZATION论文学习

    论文链接 摘要 在推理时运行低精度操作的深度网络具有功率和空间优势,但需要克服在精度降低时保持高精度的挑战.在这里,我们提出一种方法来训练这样的网络,学习步长量化,达到最高的精度AmageNet数据集 ...

  2. 论文阅读——LSQ+: Improving low-bit quantization through learnable offsets and better initialization

    LSQ+: Improving low-bit quantization through learnable offsets and better initialization from Qualco ...

  3. 模型量化论文阅读#2----BRECQ: PUSHING THE LIMIT OF POST-TRAINING QUANTIZATION BY BLOCK RECONSTRUCTION

    2021/5/20 10:31 第一次编辑: 1. 相关基础 量化基础知识 在量化中,一个比较重要的概念是量化函数q(⋅)q(\cdot)q(⋅),即如何从一个浮点数值映射到具有特定宽度的量化值,即: ...

  4. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  5. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](7)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](7) Into the Weeds Other types of grap ...

  6. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](5)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](5) Graph Neural Networks 图神经网络 Now th ...

  7. YOLOv4论文阅读(附原文翻译)

    YOLOv4论文阅读(附原文翻译) 论文阅读 论文翻译 Abstract摘要 1.Introduction 引言 2.Related work相关工作 2.1.Object detection mod ...

  8. 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》

    深度学习论文阅读目标检测篇(三):Faster R-CNN< Towards Real-Time Object Detection with Region Proposal Networks&g ...

  9. [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  10. 深度学习论文阅读图像分类篇(五):ResNet《Deep Residual Learning for Image Recognition》

    深度学习论文阅读图像分类篇(五):ResNet<Deep Residual Learning for Image Recognition> Abstract 摘要 1. Introduct ...

最新文章

  1. Xamarin Android项目运行失败
  2. 任天堂经典游戏可以体感操作了,打开网页就能玩,击败泰森不是梦
  3. Java并发编程的艺术(二)——重排序
  4. python英语字典程序修改_详解如何修改python中字典的键和值
  5. linux下使用taskset设置进程cpu绑定不起作用
  6. PyCairo 中的透明度
  7. websocket中发生数据丢失_什么是WebSocket,它与HTTP有何不同?
  8. 视频开发(即时通讯平台)
  9. 删除所有的distribution chain再保存的后台执行逻辑
  10. Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
  11. win10下rdlc报表在vs(visual studio)中中文显示小方块的批量处理解决方法
  12. Android自定义选座,Android实现电影院选座效果
  13. Mock Server基本使用方法
  14. C#导入有道词典单词本到扇贝
  15. Activeperl安装教程
  16. SQL中模糊查询 like使用
  17. 置换流水车间调度问题的matlab求解,置换流水车间调度问题的几种智能算法
  18. 计算机绘画社团活动教案,电脑绘画社团活动策划书精选
  19. 利用Sharepoint里面Mysite的Shared Pictures的图片做相册 [包括创建文件夹,上传文件]...
  20. 自动化缺陷检测系统01-项目总体方案设计

热门文章

  1. 【图】公路车为什么最好不要用脚撑
  2. 2017报计算机热不热,【2017年10月份热吗】2017年10月份热不热_亲亲宝贝网
  3. python 网络编程模块_详细介绍Python网络编程模块
  4. 10.2 项目干系人管理
  5. 姿态估计之CPN(Cascaded Pyramid Network)
  6. python读取海康视频流(rtsp格式)
  7. java 工资如何_Java编写员工薪资表
  8. DOTA模式命令详解 及 DotA英雄英文名字和简称
  9. css3直线运动_纯CSS3炫酷元素边框线条动画特效
  10. 八种语言最新毕业文献参考