adaround就是优化量化取整的操作,正常量化公式如下:

那么,[],到底是四舍五入还是取最近还是随机是个值得思考的问题。

首先,提高量化效果就是优化下面这项:

作者利用泰勒展开,展开为一阶项和二阶项,其中因为是PTQ量化,模型已训练收敛,故第一项可以忽略。那么优化公式改为

根据这个公式作者举了个例子来证明不同的取整方式对于精度的影响;

假设一个layer只有两个权重w1和w2,同时假设海森矩阵如图

故上面的公式可以化简为:

根据这个公式,如果我们取最近,那么第一项和第二项确实会小,但是第三项不确定,并且第三项是影响精度的,我们不能放任不管。同时对于n个weight值,并不是单独的每个weight的量化损失越少则整体损失就越小,weight之间的是存在相互的影响的,并且最终影响量化损失。

        然后作者做了个小实验进行验证

可以看到随机还是有可能会高的。

然后,那么如果优化这个取整呢?

首先作者做了如下三种假设

  • scale值是一个固定值。
  • 对于一个weight,其round方法只可能是floor round和ceil round二者中之一。
  • 只考虑同layer内weight之间的相互影响,忽略了layer和layer之间weight的关系。

但是直接优化上面那个公式会存在一下两个问题

1.weight的海森矩阵非常巨大,求解很困难。

2. 求解也是一个NP-hard问题,无法直接求解。

什么是np-hard问题

然后就到了重要的部分(一堆推导和假设)

作者首先假设一个模型最后输出层l是一个只有两个weight的全连接,对weight计算二阶偏导即为:

这里z(l)表示当前层的输入也就上一层w和x的乘,所以我们可以计算得出第l层权重的海森矩阵即为:

可以看出计算第L层weight的海森矩阵,需要借助第L-1层的二阶导信息,也就是这个原因导致直接计算每一层的海森矩阵是极其困难的,于是作者引入了一个假设:关于L-1层(也就是z(L))的海森矩阵是一个对角矩阵也就是L-1层的weights之间的相互关联对第L层weights的海森矩阵求导是不相关的。

然后,作者引入了第二个假设:

可以推导出

也就是说,作者假设在对第L层计算量化损失时,认为第L-1层对L层的量化损失影响是一个不依赖于校准数据集输入的常量,所以在公式(18)中可以直接省略。(在论文的实验中证明了该假设对最终结果的影响)。

于是通过多个假设,我们要求解的公式简化成了公式(20)。观察公式(20),可以发现此时待求解公式变成了一个每个layer独立的、不依赖于其它layer和task loss的求解公式。问题变成了找到可以使∆WX的MSE loss值最小的∆W。(转载)

        而为了求解∆W,引出本文核心四个公式

乍一看很复杂,其实非常好理解,我理解的就是在量化的[ ] 后加一个可训练的参数并且被限制在0-1,也就是相当于到底是up还是down,模型自己学,也就是h(v),这里引入了一个叫rectified sigmoid的东西,据说是可以解决传统的sigmoid梯度消失的问题。然后就很好理解了,练就完事,具体可以参考一篇知乎的讲解,侵删

同时,因为这里的量化是逐层计算的,并且不考虑其他层的影响,那么就会带来一个问题无法避免量化误差的不断累积也没有考虑到激活函数,所以最终公式如下:

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

Up or Down? Adaptive Rounding for Post-Training Quantization(记录)相关推荐

  1. 模型量化论文阅读#3----Up or Down? Adaptive Rounding for Post-Training Quantization

    前言 在量化中,常用的量化函数一般的四舍五入函数,即在量化时以0.5为阈值,当超过0.5时,结果为1:不超过0.5时,结果为0.这就是所谓的四舍五入函数.很多时候,直接进行四舍五入量化,结果往往不是最 ...

  2. Up or Down? Adaptive Rounding for Post-Training Quantization个人理解

    Up or Down? Adaptive Rounding for Post-Training Quantization个人理解 亮点 核心公式 推导 核心推导 实验结果 亮点 提出一个新的无需重训练 ...

  3. Fast Adaptive Similarity Search through Variance-Aware Quantization (ICDE 2022)

    随着高维数据的爆炸性增长,最近邻搜索中出现了很有前途的近似方法.其中,量化方法因其快速的查询响应和较低的编码和存储成本而受到关注.量化方法将数据维度分解为不重叠的子空间,并对每个子空间使用不同的字典进 ...

  4. QDROP: RANDOMLY DROPPING QUANTIZATION FOR EXTREMELY LOW-BIT POST-TRAINING QUANTIZATION

    QDROP:用于极低比特训练后量化的随机丢弃量化 Xiuying Wei 1, 2 ∗ , Ruihao Gong 1, 2 ∗ , Yuhang Li 2 , Xianglong Liu 1 , F ...

  5. 一文详解目标跟踪中的相关滤波

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文来源:AI干货知识库 / 导读 / 目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事 ...

  6. MTCNN论文翻译 人脸检测

    原理:参考 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 多任务级联卷积网络进 ...

  7. 单目标跟踪——个人笔记

    单目标跟踪--个人笔记 以<Handcrafted and Deep Trackers: A Review of Recent ObjectTracking Approaches>为主线看 ...

  8. 论文阅读:CVPR2016 Paper list

    原文地址:http://blog.csdn.net/xizero00/article/details/51386667 在过几天CVPR2016就要召开了,先放个list. ORAL SESSION ...

  9. CVPR 2016 摘要阅读

    为了说明看过CVPR2016全部文章的摘要,总结一下,摘要只保留了创新点部分. ORAL SESSION Image Captioning and Question Answering Monday, ...

最新文章

  1. 看完这篇缓存双写分析,你面试不再有问题呢~
  2. MYSQL备份与恢复精华篇
  3. DCMTK:读取多个图像的示例应用程序
  4. 077 Apache的HBase与cdh的hue集成(不建议不同版本之间的集成)
  5. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)
  6. POI2006 ZAB-Frogs
  7. 命令行请求网站地址带token_利用gitlab或gitee作为网站免费图床的C#实现
  8. html获取location,通过定义JS窗口对象获取url地址location.search部分的参数值
  9. 福利网站!程序员面试——算法工程师面试大全第四部分
  10. 安裝linux後的內核調優
  11. 在线开票服务器设置,开票服务器系统介绍
  12. 女朋友问阿里双十一实时大屏如何实现,我惊呆一会,马上手把手教她背后的大数据技术
  13. nao机器人刷机记录
  14. 电脑C盘空间变小解决办法
  15. 一缕黑暗中的火光-----------类图--------------优雅的建模语言
  16. 多任务环境中如何喂看门狗?
  17. 程序员不得不知道的 API 接口常识
  18. 微信小程序:恋爱小助手
  19. springboot天气预报系统 php气象百事通系统java
  20. 【密码学】AES加解密

热门文章

  1. qt multi-touch linux,I.MX6 linux Qt 同时支持Touch、mouse
  2. 解决word写论文改成两栏时mathtype的公式无法居中的问题
  3. 身为C的超集—— 我这个当大哥的有话要说 o( ̄ヘ ̄o) 超级超级详细!!!
  4. Cyrus Beck(参数化)裁剪算法基于opengl实现
  5. Android Studio使用idea的maven
  6. [财务报销]集团公司预算控制与网上费用报销系统
  7. sql语句,查出多条数据只取第一条
  8. 石膏板是根据ISO 834-4进行耐火测试吗?
  9. Git Your branch is ahead of ‘origin/master‘ by X commits解决
  10. pygame总是安装失败怎么办