二. 量化

简单介绍目前比较SOTA的量化方法,也是最近看的。

2.1 DSQ   Differentiable Soft Quantization:Bridging Full-Precision and Low-Bit Neural Networks

本文的创新点主要在于引入了可微软量化的方法,来模拟近似量化过程。

通俗来说也就是,传统的量化方法都是利用round来取整,这就导致了量化的不可微。我们一般的处理方法都是使用STE(Straight Through Estimator),也就是跳过对round的微分,直接让他等于1。

这会存在什么问题?误差。尤其是当我们进行低bit量化时,误差就会非常大。所以,如果我们可以提出一种量化函数,可微的同时还可以无限靠近round函数,那就很好的解决了STE的问题。所以本文定义了一个可以模拟round函数的函数。

具体推导这里不做过多讲解,因为比较复杂,笔者也没太搞懂。anyway,这是个可以训练的函数,通过不断训练可以更好的贴合我们的量化函数。

随着 k 增大,DSQ 和一般的伪量化越来越接近,而 DSQ 由于可导,还能近似模拟 round 的梯度。因此,在量化训练的时候,我们可以直接把伪量化换成 DSQ 函数 。

但同时,作者注意到,无论怎么贴合训练,两者还是会有一定的误差,所以作者又引入了α,来衡量DSQ函数和round函数之间的误差。

α越小,证明误差越小。最后在损失函数中加上对α的约束即可。

故本文的核心思想就是使得量化可微。

2.2  LSQ:Learned Step Size Quantization

本文的创新点就是让S不再是通过min,max来确定,而是将他定为一个可训练的参数。

step size也就是scale,就是s,这里将s设置为可训练的参数,通过反向传播计算出更好更适应每一层的s。

同时,作者通过画出v与step size的微分图,发现这样训练还有一个好处。

这是round函数对于V的输出,我们知道round函数采用的四舍五入的方法,也就是如图,小于0.5输出0,大于0.5输出1,所以0.5处的斜率应该是非常大的 。

作者画出了LSQ与QIL,PACT量化的微分图,可以看到只有LSQ在0.5处有微分陡增,所以LSQ的效果应该更好 。

同时,研究表明当网络中所有权值层的平均更新幅度与平均参数幅度的比值近似相同时,可以获得良好的收敛性,所以作者认为step size的平均更新幅度也应该与平均参数幅度的比值近似相同。所以作者设计了一个比例系数来约束s的梯度。

然而,我们期望步长参数随着精度的增加而减小,也就是量化bit增加时,step size会减小,得到更为精确的量化。当量化比bit减少时,step-size会变大。为了让step-size的参数更新,能够适应量化比特数的调整,需要将step-size的梯度乘以一个scale系数。

第一个g乘在了权重上,第二个g乘在了激活值上。

以上就是LSQ的核心思想和要点。

2.3 PACT:PArameterized Clipping Activation for Quantized Neural Networks

这篇论文的核心思想主要是提出一个新的激活函数PACT。在大多数量化方法上,都专注于对于权重的量化,而对于激活的量化,均采用与权重相同的方法。

但这样其实是不合理的,首先,权重的量化误差可以通过训练学习而得到补偿,但是激活不可以。其次,权重的值与激活相比相对较小,同时现在大火的relu,他的问题就在于没有上界,可能会导致某些离散极大值点干扰量化。

如图,作者通过测试relu激活函数的量化前后的损失函数,发现在量化relu后,会产生较大的损失。

于是,作者提出了PACT激活函数,他可以在训练的过程中自动优化量化尺度。也就是截断式的relu。用α来截断,控制量化范围,这个α是可以训练的。同时,为了使得α可以较小,会对α使用L2正则化的操作。

然后,作者通过几组实验验证了PACT激活函数的优势。

如有错误,欢迎各位批评指正!!

初入神经网络剪枝量化4(大白话)相关推荐

  1. 「每周论文推荐」 初入深度学习CV领域必读的几篇文章

    https://www.toutiao.com/a6718570271269192200/ 很多朋友都希望我们开通论文推荐和阅读板块,那就开吧,此专栏名为<每周论文推荐>.在这个专栏里,还 ...

  2. 【每周论文推荐】 初入深度学习CV领域必读的几篇文章

    很多朋友都希望我们开通论文推荐和阅读板块,那就开吧,此专栏名为<每周论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题 ...

  3. 如何去选取第一批要阅读的论文?_顶会最佳论文奖得主:初入科研领域,如何正确做科研?...

    文字整理:智源社区 常政.贾伟.王炜强 每个人都拥有着相似的才智,为什么有些人能顺利地完成学生到学者的过渡,能在学术生涯早期早早地做出突破性工作:而有些人,虽有雄心壮志,却始终不得其法,不能进入科研之 ...

  4. 顶会最佳论文奖得主:初入科研领域,如何正确做科研?

    每个人都拥有着相似的才智,为什么有些人能顺利地完成学生到学者的过渡,能在学术生涯早期早早地做出突破性工作:而有些人,虽有雄心壮志,却始终不得其法,不能进入科研之门? 初入科研领域,如何才能正确地做科研 ...

  5. 【转】初入NLP领域的一些小建议

    初入NLP领域的一些小建议 李纪为 ACL2019投稿刚刚落幕,投稿数超过了2800篇,可以说是历史以来最盛大的一届ACL.在深度学习的推动下,自然语言处理这个子领域也逐渐被推上人工智能大舞台的最前列 ...

  6. (计算机视觉笔记)1、初入计算机视觉

    计算机视觉笔记 1.初入计算机视觉 文章目录 一.人工智能 1.什么是人工智能 2.人工智能三大核心要素 3.算法概念 4.机器学习 5.深度学习 6.神经网络 二.计算机视觉 1.什么是计算机视觉 ...

  7. 初入职场的我怎么就成了个打杂的,我是这样破局的 No.146

    本文为转载文章,转载于公众号:一名叫大蕉的程序员 这么快就到6月份了,又到一大批有为青少年离开象牙塔摩拳擦掌准备进入职场大干一番的季节.但很多人也开始迷茫起来,毕竟啊,那个以考试成绩为唯一标记性成果的 ...

  8. RxJava初入学习(一)之Gifts-for-designers

    Introduction 一个为设计师设计的APP( ´_ゝ`)一个特别简单项目 主要用来练习Rx,当然这个适合初入Rx的看看. 自己参考的教程给 Android 开发者的 RxJava 详解 Git ...

  9. 【青春须早为,岂能长少年】一个初入职场程序员的阶段总结

    作者:陌北有棵树,Java人,架构师社区合伙人! 2019届毕业的小伙伴们,都应该已经入职快两个月了吧,从学校踏入工作,想必都有很多新的感悟和想法吧,我在这里写下我作为新人的的思考和总结,困惑与迷茫. ...

最新文章

  1. pandas中df的用法
  2. Tungsten Fabric SDN — Service Chain — 高级特性
  3. Postgresql使用笔记
  4. C++ Primer 5th笔记(10)chapter10 泛型算法 :lambda
  5. mysql my.cnf key_buffer_size_mysql5.6之key_buffer_size优化设置-阿里云开发者社区
  6. 终于等到你!微软正式上线 Windows Terminal 预览版
  7. 50: Luogu P4568 分层图
  8. 论文浅尝 | WWW2022 - “知识提示”之知识约束预训练微调
  9. 一个老程序员的心里话---想创业的技术人员可以看
  10. [转载] Python字典的setdefault()方法
  11. antd 轮播图样式_antd-design 的轮播图组件Carousel如何在初始化的时候自动跳转到特定图片...
  12. iOS8 自定义navigationbar 以及 UIBarButtonItem 边距问题
  13. android音乐播放器课程设计报告,音乐播放器课程设计报告
  14. Shell判断字符串是否为空
  15. ENSP路由交换机配置
  16. C语言-排序中的快速排序(简称快排)
  17. ABAP 透明表操作备忘 刘欣
  18. HR告诉你,怎么回答“为什么从上家公司离职?”
  19. 84 岁 iOS 女程序员,不得不服!
  20. 专业的人做专业的事 VxRail助中通业务创新驶上“快车道”

热门文章

  1. Java中MessageFormat的坑
  2. 西安5位教授联名呼吁免除药家鑫死刑
  3. 【华为OD机试真题2023 JAVA】硬件产品销售方案
  4. vue3:codepen上生成的动效代码/ 前端生成统计图(echarts包)
  5. 一起来学k8s 06.安装dashboard
  6. Django基础五之Django模型层(二)多表操作
  7. 合并与拆分数据模型(MSDM:Merging Spliting Data Modeling)
  8. 锐龙r5-4600u性能怎么样
  9. ABP中IdentityServer4的Secret生成
  10. vue.js项目实战运用篇之抖音视频APP-第二节:项目基础架构搭建