深度模型压缩策略——量化与二进制化

翻译原文:Model Compression and Acceleration for Deep Neural Networks

量化是通过减少表示每个权重所需的比特数(the number of bits)来压缩原始网络。

文献[6]文献[7]对参数值使用 K 均值标量量化。

文献[8]表明8-bit量化可以在准确率损失极小的同时实现大幅加速。

文献[9]在基于随机修约(stochastic rounding)的 CNN 训练中使用16-bit定点(fixed-point)表示权重【译者注:文献[9]中指出,通过后向传播算法实现的深度神经网络通常用32-bit浮点来表示权重】,显著降低内存占用和浮点运算,同时仅有很小的分类准确率损失。

文献[10] 提出的方法是首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享来量化权重【译者注:文献[10]中表示为”Weight sharing by scalar quantization”,即“使用标量量化来共享权重”,具体操作是:使用K-means算法,对每一层都做一个weight的聚类,属于同一个 cluster 的就共享同一个权值大小,而非“使用权重共享来量化权重”】,再对量化后的权重和码本(codebook)使用霍夫曼编码,以进一步降低压缩率。
这里写图片描述
文献[10]提出的三步压缩法:修剪、量化和编码。输入是原始模型,输出是压缩模型。【译者注:修剪减少了权重的数量,量化减少了权重的比特数,编码做进一步压缩。附文献[10]中原图】
这里写图片描述

文献[11]表明Hessian权重可以用于衡量网络参数的重要性,并且提议最小化Hessian加权量化误差,以便对网络参数进行聚类。

文献[12]介绍了一种新颖的量化框架,将网络权重的精度降低到三元值。

在每个权重用1-bit表示的极端情况下,即二进制权重神经网络,还有许多研究直接训练二进制权重的CNN,例如Binary-ConnectBinaryNetXNORNetworks。 主要思想是在模型训练期间直接学习二进制权重或激活。 文献[16]中的系统研究表明,使用反向传播训练的网络可以抵抗(强烈抵抗或弹性抵抗)特定的重量扭曲,包括二进制权重。此类二元网络有一些缺陷,例如其准确率在处理大型 CNN 网络如 GoogleNet 时会大大降低;此外,现有的二进制化方法都基于简单的矩阵近似,忽视了二进制化对准确率损失的影响。为了解决这个问题,文献[17]提出了一种具有对角线Hessian近似的近端牛顿算法,该算法直接最小化了由于二元权重造成的损失。文献[18]中的工作通过随机二值化权重并将隐藏状态计算中的乘法转换为符号变换,显著减少了训练阶段浮点乘法的时间。【译者注:文献18中的二值化使用的权重值是+1和-1,因此使得乘法可以变为符号变换,大大节省时间】

猜你喜欢

转载自blog.csdn.net/zbgjhy88/article/details/80945528