深度神经网络量化算法基础理论

news/2024/11/13 4:07:40/

关于量化,之前的博客中首先从第一个将量化思想应用在神经网络模型上的工作开始介绍,随后阐述了量化领域的极端情况,即二值化与三值化,并指出尽管目前已经存在多种对二值网络的优化方法,但是显然因极端量化带来的严重精度损失使得这类量化模型无法满足实际场景中的需求。参考之前博客中的量化分级,本文将主要关注Level3的量化方法,即通过在训练过程中模拟量化,来尽可能地降低由量化带来的精度损失,其属于量化感知训练一类,本小节将介绍的即为量化感知训练方法的一些基础理论。

根据量化间隔是否相等,可将量化方法分为均匀量化与非均匀量化,例如对数量化即为典型的非均匀量化方法,但目前该基于非均匀量化的部署还较难在现有硬件上实现,因此本研究主要关注均匀量化。

在均匀量化中,从量化参数中是否包含零点(Zero Point ,简写为zp )可分为非对称量化与对称量化。为便于理解,下面将通过[67][158]中的量化方案来阐述相关概念,其中非对称量化的计算如式2.6中所示。

 式2.6为量化计算过程,其中的s 为缩放因子,代表量化步长,zp 为零点,代表的是浮点数中的0经量化后的整数值,b 是设置的量化位宽,clip( ) 为截断函数, 代表舍入函数,为传统的向最接近值舍入方式。式2.7中则为反量化过程,用于在量化感知训练过程中来接近原始值。上述两式中涉及到两个量化参数szp ,在量化感知训练过程中,这两个参数的初始化与更新均通过式2.8与式2.9完成。

 上述两式中,xmaxxmin 分别表示原浮点值中的最大值与最小值,qmax 则为量化后的最大值。均匀对称量化则是在式2.6与式2.7的基础上删去零点即可,如式2.10与2.11中所示。

其量化参数s 的初始化与更新则与式2.8中相同。最后从量化粒度的角度,可将量化分为逐通道量化与逐层量化,例如在卷积层中,同一层的每个卷积核(Filter)拥有独立的量化参数则为逐通道量化,若每个卷积核共享同一组量化参数,则为逐层量化。一般来说,量化粒度越细,则量化造成的精度损失越低,但是更细的量化粒度,往往会造成更多的冗余计算,因此需要根据实际的参数分布以及硬件情况来选择量化粒度。

最后来关注一下如何通过量化将原本的浮点运算全部转为定点运算过程。鉴于卷积神经网络的运算本质上是由大量矩阵运算完成,此处不妨以两个矩阵的运算来做实例。首先假设两个大小为N×N 的矩阵r1r2r1r2 矩阵相乘后得到r3 ,计算如式2.12。

 采用最一般的量化方式,即式2.6中的非对称量化,不妨假设r1 矩阵的量化参数分别为s1zp1r2r3 的量化参数同理设置,可得式2.7。

 观察式2.14不难发现,除了s1s2/s3 为浮点数,其他运算均为定点数运算,因此此时只需将s1s2/s3 转为定点运算即可。参考[67]中的解决方法,不妨假设M=s1s2/s3 ,通过大量的实验发现,M 的值域通常为(0,1) ,鉴于此,可将其表示为M=2-nM0 ,其中的M0 值域为[0.5,1) ,n转为非负整数。此时,M0 可根据硬件情况表示为一个INT16或INT32的定点乘数,此处不妨假设为INT32,则表示M0 的整数此时是最接近2^31*M0 的INT32整型值,同时由于M0>0.5 ,所以这个值至少为2^30 ,即表明其至少有30位的相对精度,综上,与M0 的乘法运算可通过定点数乘法来完成,而2^-n 则可通过简单的移位来完成。同时鉴于s1s2/s3 中涉及到的量化参数在量化完成后均已知,所以可提前完成s1s2/s3 的近似转换。


http://www.ppmy.cn/news/786122.html

相关文章

计算机硬盘移位,旧电脑挂了3.5硬盘很鸡肋?加一物秒变移动硬盘

原标题:旧电脑挂了3.5硬盘很鸡肋?加一物秒变移动硬盘 随着SSD的普及,大批的3.5寸大硬盘闲置下来,发现不少小伙伴都对它们束手无策,只能将它们束之高阁然后不理不问;近来,存储介质涨得那叫一个疯…

把计算机信息传到电视屏的方法,如何将电脑内容投屏到电视上?当贝市场完整版教程...

如何将电脑内容投屏到电视上?当贝市场完整版教程 2019年08月27日 12:50作者:黄页编辑:黄页 分享 很多朋友都试过将手机内容投屏到电视上,但鲜少有用户知道电脑上的内容如何投屏到电视上。今天当贝小编就这个问题跟大家分享一下教程…

如何把一组计算机做成云,怎样才能把旧电脑变成云电脑呢?

大家好,这里是酷乐米小编龙牧,相信很多人的家里有个一两台电脑,有的因为更新换代闲置了下来,有的还在继续使用,属于超龄服役,就像笔者的台式机07年配的,依然能够正常使用。只不过性能已经跟不上…

K8s集群部署最新Jenkins 2.387.1

K8s集群部署最新Jenkins 2.387.1 概述环境准备设置存储目录并启动NFS服务安装 NFS 服务端 动态创建 NFS存储(动态存储)部署jenkins服务 概述 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作…

旧电脑变废为宝成为nas

老台式机1台 可用任意电脑一台,用来调试nas U盘1个,64M以上 黑群晖安装包 显示器 下载黑群晖安装工具包:http://pan.baidu.com/s/1eRSAwAQ 使用ChipEasy检查并记录U盘的VID PID对应文件目录为:\黑群晖\相关软件\1)ChipEasy芯片无…

360元(含硬盘)!小白二手旧电脑组建超低价NAS记录

起初是自己买树莓派跟朋友一起接触了nextcloud、owncloud等一些私有云平台。这些平台与我个人而言无非就是为了起到类似百度网盘的作用,但相对于百度网盘,云平台在功能,以及传输速度(取决于自家宽带),实用性…

硬盘数据传到计算机,如何把旧电脑硬盘上的数据复制传输到新电脑上

如何把旧电脑硬盘上的数据复制传输到新电脑上 电脑旧了就需要升级,如果电脑零件过于残旧而不合适安装到新电脑上使用的话,我们就应该选择放弃,假如旧电脑还有零配件适合新电脑使用,我们就不应该浪费,必须将其安装在新电…

旧电脑当远程服务器,旧电脑平板别丢了!将你身边的屏幕都利用起来

感谢IT之家网友 ARM控股的投稿 或许大家看到这个标题会联想到市面上的一些远程控制软件,诸如:TeamViewer、AnyDesk等。这一次笔者想推荐的并不是一款远程桌面软件,而是一款远程显示软件,甚至可以理解成一款简易的KVM系统。 虽然市…