2.845

2023影响因子

(CJCR)

  • 中文核心
  • EI
  • 中国科技核心
  • Scopus
  • CSCD
  • 英国科学文摘

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种基于动态量化编码的深度神经网络压缩方法

饶川 陈靓影 徐如意 刘乐元

饶川, 陈靓影, 徐如意, 刘乐元. 一种基于动态量化编码的深度神经网络压缩方法. 自动化学报, 2019, 45(10): 1960-1968. doi: 10.16383/j.aas.c180554
引用本文: 饶川, 陈靓影, 徐如意, 刘乐元. 一种基于动态量化编码的深度神经网络压缩方法. 自动化学报, 2019, 45(10): 1960-1968. doi: 10.16383/j.aas.c180554
RAO Chuan, CHEN Jing-Ying, XU Ru-Yi, LIU Le-Yuan. A Dynamic Quantization Coding Based Deep Neural Network Compression Method. ACTA AUTOMATICA SINICA, 2019, 45(10): 1960-1968. doi: 10.16383/j.aas.c180554
Citation: RAO Chuan, CHEN Jing-Ying, XU Ru-Yi, LIU Le-Yuan. A Dynamic Quantization Coding Based Deep Neural Network Compression Method. ACTA AUTOMATICA SINICA, 2019, 45(10): 1960-1968. doi: 10.16383/j.aas.c180554

一种基于动态量化编码的深度神经网络压缩方法

doi: 10.16383/j.aas.c180554
基金项目: 

湖北省自然科学基金 2017CFB504

湖北省创新研究团队 2017CFA007

国家自然科学基金 61807014

国家重点研发计划 2018YFB1004504

中央高校基本业务费 CCNU19Z02002

中国博士后科学基金 2018M632889

国家自然科学基金 61702208

详细信息
    作者简介:

    饶川  华中师范大学国家数字化学习工程技术研究中心硕士研究生.2015年获得湖北大学计算机与信息工程学院学士学位.主要研究方向为深度模型的压缩与加速.E-mail:raoguoc@163.com

    徐如意  华中师范大学国家数字化学习工程技术研究中心算法工程师.2008年获得武汉科技大学学士学位, 2016年获得华中科技大学硕士学位.主要研究方向为计算机视觉及多媒体应用.E-mail:86798653@qq.com

    刘乐元  华中师范大学国家数字化学习工程技术研究中心副教授.主要研究方向为计算机视觉, 模式识别, 多模态人机交互.E-mail:lyliu@mail.ccnu.edu.cn

    通讯作者:

    陈靓影   华中师范大学国家数字化学习工程技术研究中心教授.2001年获得南洋理工计算机科学与工程系博士学位.主要研究方向为图像处理, 计算机视觉, 模式识别, 多媒体应用.本文通信作者.E-mail:chenjy@mail.ccnu.edu.cn

A Dynamic Quantization Coding Based Deep Neural Network Compression Method

Funds: 

Hubei Natural Science Foundation 2017CFB504

Foundation for Innovative Research Groups of Hubei Province 2017CFA007

National Natural Science Foundation of China 61807014

National Basic Research Program of China 2018YFB1004504

Basic Operating Costs of Central Universities CCNU19Z02002

China Postdoctoral Science Fund 2018M632889

National Natural Science Foundation of China 61702208

More Information
    Author Bio:

      Master student at National Engineering Research Center for E-Learning, Central China Normal University. He received his bachelor degree from Hubei University in 2015. His research interest covers deep neural network compression and acceleration

       Algorithmic engineer at the National Engineering Research Center for E-Learning, Central China Normal University. He received his bachelor degree from Wuhan University of Science and Technology, and master degree from Huazhong University of Science and Technology in 2008 and 2016 respectively. His research interest covers computer vision and multimedia applications

       Associate professor at the National Engineering Research Center for E-Learning, Central China Normal University. His research interest covers computer vision, pattern recognition, and multimodal human-computer interaction

    Corresponding author: CHEN Jing-Ying   Professor at National Engineering Research Center for E-Learning, Central China Normal University. She received her Ph.D. degree from the School of Computer Engineering, Nanyang Technological University, Singapore in 2001. Her research interest covers image processing, computer vision, pattern recognition, and multimedia applications. Corresponding author of this paper
  • 摘要: 近年来深度神经网络(Deep neural network,DNN)从众多机器学习方法中脱颖而出,引起了广泛的兴趣和关注.然而,在主流的深度神经网络模型中,其参数数以百万计,需要消耗大量的计算和存储资源,难以应用于手机等移动嵌入式设备.为了解决这一问题,本文提出了一种基于动态量化编码(Dynamic quantization coding,DQC)的深度神经网络压缩方法.不同于现有的采用静态量化编码(Static quantitative coding,SQC)的方法,本文提出的方法在模型训练过程中同时对量化码本进行更新,使码本尽可能减小较大权重参数量化引起的误差.通过大量的对比实验表明,本文提出的方法优于现有基于静态编码的模型压缩方法.
  • 近年来, 深度神经网络在解决机器学习任务时取得了巨大的成功. 2012年, Krizhevsky等[1]首次使用深度神经网络, AlexNet在ILSVRC (ImageNet large scale visual recognition competition)[2]分类任务上获得了冠军, 他们的结果相比传统的机器学习算法在识别精度上提升了近10个百分点, 引起学术界和工业界巨大轰动.从那时起, 各种不同结构的深度神经网络模型如雨后春笋般不断涌现. 2014年英国牛津大学的Visual Geometry Group提出了VGG[3]模型, 同时谷歌的研究人员提出了GoolgLeNet[4], 2015年He等提出了ResNet[5-6].这些模型的网络结构越来越深, 从而能学习到更好的特征以提升模型的性能.然而, 由于内存和计算能力有限, 随着网络变得越来越深, 对包括移动设备在内的有严格时延要求的有限资源平台而言, 随之增加的模型参数需要消耗更多的计算和存储资源, 难以直接应用于手机等移动嵌入式设备.

    虽然将深度神经网络部署到云服务器端, 移动端将数据上传服务端处理, 能很好解决上述问题, 但服务器需要耗费昂贵的硬件成本, 导致计算成本过高, 其次移动端在使用的过程对网络要求高, 需要将移动端本地的数据上传到云端服务器进行保存, 在处理一些隐私数据时, 还会存在信息的泄露.所以将深度学习算法部署到移动端本地非常有意义, 但常用的深度模型具有大量的储存量, 比如AlexNet的模型大小量超过200 MB, VGG的模型大小量超过500 MB, 如果将这些网络结构直接运用到手机APP中, 用户需要大量的流量下载APP文件, 还会占用用户手机的大量内存.同时, 巨大的模型文件会带来另外一个问题, 手机设备的能源消耗问题, 手机在调用这些文件时会存在大量的能源消耗, 会让手机设备产生大量的热量, 因此深度模型压缩是非常有必要的.

    为了解决这一问题, 各种深度模型压缩方法被提出, 这些方法主要有:模型剪枝、知识精炼(Knowledge distillation)、低秩分解、精细化的模型结构以及权重共享.本文主要关注基于权重共享的方法来压缩模型, 权重共享是通过卷积滤波器中相近的权重共享同一量化值从而达到对深度神经网络压缩的目的.权重共享的方法大致可以分为三类:聚类编码法、二值/三值量化编码和指数量化编码.

    聚类编码法, 指使用聚类的方法, 将权重聚类为若干类, 取每类的聚类中心作为共享的权重.例如, Gong等[7]通过对全连接层参数进行聚类, 取聚类中心作为量化编码, 可以将深度模型AlexNet压缩20倍, 而Top-5准确率仅仅下降1 %.类似的, Chen等[8]提出了HashedNets对全连接层进行量化, 利用哈希函数随机的将权重分到不同的哈希桶(Hash bucket), 同一哈希桶的权重具有相同的量化值. Han等[9]提出了一种深度压缩(Deep compression)方法, 通过对卷积层和全连接层的权重进行剪枝, 然后通过K-Means聚类进行量化, 最后使用霍夫曼编码(Huffman coding)对模型进行保存, 极大的压缩了模型的规模.但是, 聚类编码法需要大量额外的计算开销用于聚类分析, 算法的训练效率低.

    二值/三值量化编码, 将网络的权重、激活值量化为二值或者三值.例如, Courbariaux等[10]提出了一种二值连接(Binary connect)方法, 将权重进行二值量化(量化为${-1, 1}$), 可以将一个深度模型直接压缩32倍; 他们随后提出了Binarized neural networks[11], 将权重和激活值同时进行二值量化, 在压缩网络的同时还可以提高运算效率. Rastegari等[12]提出的二值权重网络(Binary weight networks)和XNOR-Net, 在把权重量化为+1和$-1$的基础上乘以一个尺度因子, 在大数据集ImageNet上取得了不错的压缩效果. Li等[13]提出的HORQ, 相对于XNOR只使用到一阶阈值, HORQ还用到二阶阈值, 让二阶阈值逼近一阶阈值的残差, HORQ在对准确率影响很小的情况下能将模型缩小32倍, 同时加速30倍左右. Li等[14]提出的TWN (Ternary weight networks), 在二值网络的基础中引入0作为量化权重值. Zhu等[15]提出的TTQ (Trained ternary quantization), 将网络的权重量化为+1和$-1$的基础上, 分别乘上两个不同的尺度因子. Cai等[16]提出HWGQ-Net通过改变网络的激活函数, 将权重量化1个比特网络的激活值量化为2个比特, 网络只有微小的性能损失.尽管这类方法将模型中的每一个权重、激活值压缩为一到两位来表示, 但是模型的识别精度也有一定幅度的下降.

    指数量化编码, 将权重量化为2的(为整数)次幂, 以便于嵌入式系统进行二进制移位操作.该方法由Zhou等[17]首次提出, 利用预训练模型获取固定的指数量化的码本, 然后通过增量量化过程来逐渐量化整个网络.在使用5-bit量化时, 压缩模型的识别率能够保持与原模型一致.这种方法在量化时, 可以高效率对深度神经网络量化, 但在网络重训练时, 他们提出的增量网络量化方法需要分多个阶段训练, 训练效率较低.

    鉴于以上几点, 本文提出一种基于动态量化的深度模型压缩方法, 不同与从预训练模型获取固定码本, 动态量化在训练的过程中也更新码本.这种量化方式在保证模型性能的同时, 还加快了效率.同时为了方便嵌入式系统进行移位操作, 本文对所有网络的权值采用指数量化编码, 并通过理论证明得出, 绝对值较大权值参数的量化对模型的精度影响越大.因此, 本研究通过动态编码使得码本能自适应网络中绝对值较大的权值参数.本文的主要贡献有以下三点:

    1) 提出动态更新码本自适应网络中绝对值较大的权值参数, 尽可能减小这些参数的量化对模型精度的影响;

    2) 提出交替迭代算法用于模型训练, 使得权值参数和码本交替更新, 加快训练过程的收敛速度;

    3) 大量的对比实验表明, 本文所提的基于动态编码的模型压缩方法总体上优于静态编码的方法.

    本文剩余部分的组织结构如下:第1节介绍现有的深度神经网络压缩方法; 第2节介绍本文提出的方法, 包括基于权重的动态编码过程以及压缩模型的训练过程; 第3节通过大量的对比实验验证本文方法的有效性; 第4节总结与展望.

    本节主要介绍不同的深度神经网络压缩方法.除了上一节重点介绍的权重共享的方法, 深度神经网络压缩的方法还包括:模型的剪枝、知识精炼(Knowledge distillation)、低秩分解以及精细化的模型结构.

    模型的剪枝, 通过评定预训练模型中参数的重要性, 剔除网络中不重要的网络连接, 主要有权重剪枝和滤波器剪枝两种方法.权重剪枝主要通过判断权重的大小来决定重要性, 一般设定一个阈值进行剔除, 或者根据设定剪切比例进行剔除, 优先将那些权重较小的值剔除例如Song等[18]采用此方法将AlexNet模型的参数量减少了9倍, VGG模型的参数量减少13倍, 而并没有造成模型精度的下降; Anwar等[19]按照一定的比例对每层中的权重随机裁剪, 统计多种随机剪裁下局部最优的作为最终剪裁.滤波器剪枝则是剔除网络中那些对网络影响较小的卷积滤波器, Li等[20]通过对卷积滤波器所有元素绝对值求和, 剔除那些求和较小的滤波器, 从而实现对模型的剪枝; Luo等[21]对卷积滤波器剪切前和剪切后激活值的损失进行评定, 剪切那些对损失影响不大的滤波器; Hu等[22]通过判定卷积录波器中权重为0的参数量来评定剪切标准; Luo等[23]提出了一种基于熵值的裁剪方式, 通过特征层的概率分布来评价卷积滤波器的重要性; Yang等[24]通过每层需要消耗的能量来进行裁剪, 优先修剪那些消耗大的层.相对而言, 滤波器剪枝会产生规则的稀疏矩阵, 而权重剪枝则会产生大量不规则的稀疏矩阵, 因此, 在加速方面滤波器剪枝更加有效.

    知识精炼, 利用大模型指导小模型, 从而让小模型学到大模型相似的函数映射. Hinton等[25]利用训练好的复杂模型指导小模型的训练, 小模型通过优化复杂模型的输出交叉熵和自身的交叉熵, 在模型性能和训练速度上均有所提高. Romero等[26]提出的FitNets通过添加网络模型中间层的特征作为监督信号, 有效解决由于网络层数过深造成的学习困难. Zagoruyko等[27]同样采用大模型的中间特征作对小模型进行监督学习, 让小模型同时学到低、中、高层三个层次的特征输出.

    低秩分解, 将原来的矩阵分解成若干个小矩阵, 对分解的小矩阵进行优化调整. Zhang等[28]将卷积矩阵变换为二维的矩阵, 结合SVD分解, 将VGG-16模型加速4倍而精度只有微小的下降. Lebedev等[29]使用CP分解的方法, 将每层网络分解成若干个低复杂度的网络层, 将AlexNet的第二个卷积层的速度提升了4倍却只增加1 %的分类误差.

    精细化的模型结构, 通过使用小的卷积单元或者改变卷积方式对模型进行压缩和加速. Iandola等[30]提出的SqueezeNet使用$1 \times 1$卷积核对上层特征进行卷积降维, 然后使用$1 \times 1$和$3 \times 3$卷积进行特征堆叠, 大大减小了卷积的参数数量. Howard等[31]提出的MobileNets对每个通道的特征单独卷积, 之后再使用$1 \times 1$卷积对不同通道特征进行拼接. Zhang等[32]提出的ShuffleNet则是对多通道特征先进行分组后再执行卷积, 避免信息流不通畅的问题.这些轻量化的模型设计, 极大了减小了模型的参数量和计算量.

    这些方法在对深度神经网络的压缩, 使得网络的性能在一定程度上有所下降, 有些压缩算法实现步骤繁琐, 甚至有些方法还对原始的网络结构进行了改变.而与这些方法相比, 权重共享的方法只对深度神经网络中的权重进行量化, 实现简单, 不会改变模型的网络结构, 本文对深度神经网络的压缩采用了权重共享的方式.

    本文提出的方法由两部分组成:权重量化与动态编码, 以及基于动态编码的量化模型训练, 本节将详述这两部分内容.

    为了方便嵌入式系统进行移位运算, 本文采用类似文献[15]中的方法, 采用2的$n$次幂的形式对神经网络中的权值进行量化, 即当权重量化为$b$比特时, 码本最多有$2^{b}$个取值.码本可以表示为:

    $ \begin{equation} P_{l}=\left \{ \pm 2^{n} \right \}, n\in [n_{1}, n_{2}], n\in {\bf Z} \end{equation} $

    (1)

    式中, $l$代表深度神经网络的第$l$层, $n_{1}$和$n_{2}$是两个整数, 满足$n_{1} < n_{2}$.由于$n_{1}$和$n_{2}$之间有$n_{2}-n_{1}+1$个整数, 且码本中正负整数的个数是相等的, 因此码本中总的取值有$2\times (n_{2}-n_{1}+1)=2^{b}$个, 即:

    $ \begin{equation} n_{2}-n_{1}+1=2^{b-1} \end{equation} $

    (2)

    亦可引入0作为量化值对权重进行编码, 具体形式为:

    $ \begin{equation} P_{l}=\left \{ \pm 2^{n}, 0 \right \}, n\in [n_{1}, n_{2}], n\in {\bf Z} \end{equation} $

    (3)

    由于0无法表示成2的$n\ (n$为整数)次幂, 需要额外的一个比特来表示0这个量化值.当$n_{1}$和$n_{2}$保持不变时, 式(3)需要$b+1$比特来量化权重.即:

    $ \begin{equation} n_{2}-n_{1}+1=2^{b} \end{equation} $

    (4)

    虽然将0作为量化值引入码本需要增加一个比特, 但是会让网络中产生大量的稀疏矩阵, 有利于网络的正则化, 能在一定程度上抑制过拟合.

    无论是否引入0进行编码, 当量化的位数确定时, 只要确定$n_{1}$或$n_{2}$中任意一个的值, 根据式(2)或式(4)求得另外一个参数, 从而根据式(1)或式(3)得到码本.假设给定预训练的模型, 并将此模型中的网络权值量化为2的$n$次幂.可采用以下式(5)使量化误差最小化:

    $ \begin{equation} \begin{split} &\underset{n}{\min}\ err =\underset{n}{\min}(|w^{+}-2^{n}|), w^{+}\in |W_{l}|\\ &{\rm s. t.}\quad{\ n\in [n_{1}, n_{2}], n\in Z} \end{split} \end{equation} $

    (5)

    式中, $err$为量化误差, $W_{l}$为预训练模型的第$l$层权重, $w^{+}$为$|W_{l}|$中的任一正值权重.假设$|W_{l}|$中的两个值$w_{1}^{+}$和$w_{2}^{+}$, $w_{1}^{+} < w_{2}^{+}$, 同时近似满足$2^{q}w_{1}^{+}\approx w_{2}^{+}$, $q$为正整数. $w_{1}^{+}$和$w_{2}^{+}$分别量化为$2^{m_{1}}$和$2^{m_{2}}$, $2^{m_{1}}$和$2^{m_{2}}$应满足$2^{q}2^{m_{1}}=2^{m_{2}}$, 则$w_{1}^{+}$和$w_{2}^{+}$的量化误差$err_{1}$和$err_{2}$满足以下关系:

    $ \begin{align} err_{1}= &|w_{1}^{+}-2^{m_{1}}|\rightarrow \Delta \approx 0\nonumber\\ err_{2}= &\left|w_{2}^{+}-2^{m_{2}}\right|=2^{q}\times \left|\frac{1}{2^{q}}w_{2}^{+}-2^{m_{1}}\right|\approx\nonumber\\ & 2^{q}\times |w_{1}^{+}-2^{m_{1}}|=2^{q}err_{1}\geq err_{1} \end{align} $

    (6)

    由于量化模型的权值调整大小是由反向传播的梯度和学习率的乘积来决定, 而这两个量都非常的小, 因此$2^{q}w_{1}^{+}\approx w_{2}^{+}$这一假设是容易满足的, 从而可以根据式(6)得出当模型进行指数量化时, 量化权值的绝对值越大, 量化误差也越大.

    基于这一结论, 我们在量化的过程中优先量化那些权重绝对值较大的值, 即根据$|W_{l}|$中的最大值确定上限$n_{2}$的取值.具体的计算过程如下:

    $ \begin{equation} n_{2}=~{\bf floor}({\rm log}_{2}(\max(|W_{l}|))) \end{equation} $

    (7)

    其中, floor$(\cdot)$表示的是向下取整操作, max$(\cdot)$表示的取最大值操作.确定了$n_{2}$, 就可以通过式(2)或式(4)得到下限$n_{1}$的取值, 从而确定码本$P_{l}$.

    对于式(1)定义的码本, 每个网络权值用码本中最近的量化值进行编码, 具体量化规则如图 1所示.

    图 1  网络权值的量化规则
    Fig. 1  Quantization rules for network weights

    可用如下的公式来计算:

    $ \begin{equation} \hat{w} = \begin{cases} 2^{n_{2}}\times I(w), &|w|\geq \dfrac{3}{2}\times 2^{n_{2}}\\ 2^{k}\times I(w), &\dfrac{3}{4}\times 2^{k}\leq |w| < \dfrac{3}{2} \times 2^{k}, \\ & k\in [n_{1}, n_{2}], k\in {\bf Z}\\ 2^{n_{1}}\times I(w), &|w|\leq \dfrac{3}{4}\times 2^{n_{1}} \end{cases} \end{equation} $

    (8)

    式中, $\hat{w}$为量化后的权重, $2^{k}$为权重$w$的绝对值$|w|$的量化值; $I(w)$为指示函数, 用于区分网络中的正负权值.当$w$大于0时, $I(w)$为1; $w$为小于或等于0时, $I(w)$为$-1.$

    对于式(3)定义的码本, 只需要根据码本下限进行截断取0值即可, 对应的量化公式如下:

    $ \begin{equation} \hat{w} = \begin{cases} 2^{n_{2}}\times I(w), &|w|\geq \dfrac{3}{2}\times 2^{n_{2}}\\ 2^{k}\times I(w), &\dfrac{3}{4}\times 2^{k}\leq |w| < \dfrac{3}{2}\times 2^{k}, \\ & k\in [n_{1}, n_{2}], k\in {\bf Z}\\ 0, &|w| < \dfrac{3}{4}\times 2^{n_{1}} \end{cases} \end{equation} $

    (9)

    本节主要介绍量化模型的训练过程.对于初始的深度神经网络模型, 首先基于式(7)根据网络中的最大权值确定码本, 然后根据码本对网络权值采用式(8)或式(9)进行量化, 量化的深度神经网络通过前向传播过程计算网络的损失.再根据网络损失通过反向传播过程, 对网络权值进行更新.网络权值的更新会破坏原有的量化, 因此有必要对码本进行更新, 然后使用新的码本对网络权值进行再一次的量化.整个训练过程码本和权重交替迭代更新, 直到网络损失收敛为止.在整个迭代过程中, 码本根据网络权值的变化进行动态的更新, 码本的更新和深度神经网络的训练交替进行, 训练流程如图 2所示.以下介绍量化模型训练的具体实现细节.

    图 2  动态量化编码压缩方法的训练流程
    Fig. 2  The process of dynamic quantization coding

    对于普通的深度神经网络, 其训练由两个基本过程构成, 即前向传播过程和反向传播过程.在前向传播过程中, 分层网络的前一层的输出作为后一层的输入, 直到传入网络的最后一层得到整个深度神经网络的输出.根据输出和标签之间的差异计算损失函数, 其中损失函数的定义如下:

    $ \begin{equation} \begin{split} &\underset{w_{l}}{\min}\ E(\hat{w_{l}})=L(\hat{w_{l}})+\lambda R(\hat{w_{l}})\\ &{\rm s. t.}\quad\ \hat{w_{l}}\in P_{l}, 1\leq l\leq L \end{split} \end{equation} $

    (10)

    式中, $E(\hat{w_{l}})$是网络的损失, $R(\hat{w_{l}})$是正则项, 本文采用$L_{2}$正则项, $\lambda$是正则项的权值系数.在反向传播过程中, 网络的残差由后一层逐层向前传递, 网络的权重根据残差计算的梯度进行更新:

    $ \begin{equation} w_{l}^{k+1}\leftarrow w_{l}^{k}-\gamma \frac{\partial E}{\partial w_{l}^{k}} \end{equation} $

    (11)

    式中, $w_{l}^{k+1}$是更新后的权重, $\gamma$是学习率.但是, 对于量化模型来说, 对式(8)或式(9)中指示函数$I(w)$进行求导会导致得到的梯度为0, 无法更新参数.需采用STE (Straight-through estimator)方法[33]来处理:

    $ \begin{equation} \begin{split} &\mbox{前向过程:}\ q\sim {\rm Bernoulli}(p)\\ &\mbox{反向过程:}\ \frac{\partial E}{\partial p}=\frac{\partial E}{\partial q} \end{split} \end{equation} $

    (12)

    其中, $q$是二项分布函数, $p\in [0, 1]$的概率.根据$STE$的处理方法, 在反向求导的过程中, 我们可以这样处理模型中的权重$w_{l}^{k}$:

    $ \begin{equation} \frac{\partial E}{\partial w_{l}^{k}}=\frac{\partial E} {\partial \hat{w}_{l}^{k}} \end{equation} $

    (13)

    因此在进行反向传播过程时, 式(11)可以写成:

    $ \begin{equation} w_{l}^{k+1}\leftarrow {w}_{l}^{k}-\gamma \frac{\partial E}{\partial\hat{w}_{l}^{k}} \end{equation} $

    (14)

    采用动态量化编码的方式对深度神经网络压缩, 使得网络的权重在一个动态更新的范围量化.与静态量化的码表相比, 动态量化后的权重与模型最新更新的权重之间误差更小.另外, 由于动态更新的码本在训练过程会随着网络的训练误差而间接更新, 所以动态更新码本的方法无需一个预训练的模型作为初始化也能最终使模型收敛.

    为了验证本文方法的有效性, 我们在标准数据集MNIST[34]、CIFAR-10[35]上进行了实验.其中, MNIST数据集是一个手写字符数据集, 大小为$28\times 28$的单通道图像, 包含训练集60 000张, 测试集为10 000张; CIFAR-10是一个图像分类数据集, 所有的图像都是大小为$32\times 32$的三通道彩色图像, 包含60 000张图片, 其中训练集为50 000, 验证集为10 000.

    在MNIST数据集上, 先使用LeNet[35]在不同的损失函数下训练全精度32位的模型.在压缩过程中, 使用预训练的全精度模型作为压缩模型的初始化.使用的三种损失函数为Softmax-loss、Softmax-loss加上L1正则项、Softmax-loss加上L2正则项, 分别对应码本中有无0两种情况, 实验过程中正则项系数为0.001, 具体实验结果如下:

    通过表 1~表 3可以看到, 无论在码本中是否引入0, 本文的方法均能有效地对网络进行压缩.同时还可以看到, 在损失函数中引入L2正则项有比较好的结果, 因此在后续的实验中只使用Softmax-loss加上L2正则项作为损失函数.

    表 1  LeNet在Softmax-loss下量化效果
    Table 1  Quantization performance of LeNet under Softmax-loss
    位宽 码本无0 码本有0
    3 99.29 % 99.22 %
    4 99.30 % 99.25 %
    5 99.35 % 99.32 %
    下载: 导出CSV 
    | 显示表格
    表 2  LeNet在Softmax-loss+L1下量化效果
    Table 2  Quantization performance of LeNet under Softmax-loss and L1
    位宽 码本无0 码本有0
    3 98.69 % 99.25 %
    4 99.09 % 99.25 %
    5 99.14 % 99.27 %
    下载: 导出CSV 
    | 显示表格
    表 3  LeNet在Softmax-loss+L2下量化效果
    Table 3  Quantization performance of LeNet under Softmax-loss and L2
    位宽 码本无0 码本有0
    3 99.26 % 99.29 %
    4 99.29 % 99.28 %
    5 99.36 % 99.28 %
    下载: 导出CSV 
    | 显示表格

    为了清晰地看到压缩前和压缩后的变化, 我们先使用不同深度的ResNet训练了全精度32位的模型.在压缩过程中, 为了尽量避免初始化不同对最终实验结果的影响, 以及加快量化模型的训练收敛速度, 均使用预训练好的32位模型作为量化模型的初始化.在预训练和量化压缩过程中, 数据预处理都使用了数据增强的方法, 在原32 $\times $ 32的图像边界上填补0扩充为36 $\times $ 36的图像, 再随机的裁剪为32 $\times $ 32的图像, 然后随机左右翻转.在训练过程中, 都迭代了80 000轮, 每轮送进网络一个批次的数据是128, 初始的学习率为0.1, 当训练达到40 000次学习率为0.01, 达到60 000次之后学习率为0.001, 训练中使用正则项, 其权值系数设置为0.001.

    3.2.1   对比不同码本的性能

    本文在第3.1节引入了两种码本, 在量化同样的位数下, 一种在码本中引入了0另外一种没有.将0作为量化值引入码表, 会使滤波器产生大量的稀疏矩阵, 这会在一定程度抑制过拟合.但由于0不能表示为2的$n$ (为整数)次幂这种形式, 需要额外的一个比特来表示, 会影响码表的丰富性.为了说明这两种量化的差别, 我们做了如下实验:

    表 4~7中可以看到, 两种量化方式均能有效压缩深度神经网络.当量化位数一定时, 网络越深量化效果越好:当网络深度一定时, 量化位数越大量化效果越好.特别在量化位数较大且网络较深时, 采用这种动态量化编码的方法, 甚至可以提升网络的性能.

    表 4  ResNet-20在不同码本下量化效果
    Table 4  Quantization performance of ResNet-20 under different codebook
    位宽 码本无0 码本有0
    3 90.07 % 90.78 %
    4 91.71 % 91.91 %
    5 92.63 % 92.82 %
    下载: 导出CSV 
    | 显示表格
    表 5  ResNet-32在不同码本下量化效果
    Table 5  Quantization performance of ResNet-32 under different codebook
    位宽 码本无0 码本有0
    3 91.44 % 92.11 %
    4 92.53 % 92.36 %
    5 92.87 % 92.33 %
    下载: 导出CSV 
    | 显示表格
    表 6  ResNet-44在不同码本下量化效果
    Table 6  Quantization performance of ResNet-44 under different codebook
    位宽 码本无0 码本有0
    3 92.68 % 92.53 %
    4 93.14 % 93.37 %
    5 93.28 % 93.14 %
    下载: 导出CSV 
    | 显示表格
    表 7  ResNet-56在不同码本下量化效果
    Table 7  Quantization performance of ResNet-56 under different codebook
    位宽 码本无0 码本有0
    3 92.72 % 92.69 %
    4 93.54 % 93.39 %
    5 93.21 % 93.24 %
    下载: 导出CSV 
    | 显示表格
    3.2.2   对比静态量化编码(SQC)方法

    本文使用的是动态的码本(Static quantitative coding, DQC), 每次迭代都会对码本进行更新.为了说明DQC的有效性, 我们比较了基于SQC和DQC的模型性能.其中, SQC方法与DQC方法不同的地方在于量化模型的训练过程中不对码本进行更新.基于SQC方法的实验结果如表 8, 通过表 8可以看到深度模型的网络结构越深, 量化的位数越大, 量化效果越好.

    表 8  固定码本下量化效果
    Table 8  Quantization performance of SQC
    网络 3 bits码本 3bits码本 3 bits码本 3 bits码本 3 bits码本 3 bits码本
    SQC无0 SQC有0 SQC无0 SQC有0 SQC无0 SQC有0
    ResNet-20 92.72 % 92.69 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-32 93.54 % 93.39 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-44 93.21 % 93.24 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-56 93.21 % 93.24 % 92.72 % 92.69 % 92.72 % 92.69 %
    下载: 导出CSV 
    | 显示表格

    为了更加清楚地显示SQC和DQC两种方法训练得到模型性能的差异, 我们将静态码表的结果减去动态码表的结果, 具体结果如图 3图 4所示.

    图 3  码本中无0, SQC和DQC的量化比较
    Fig. 3  Quantization performance of SQC and DQC with 0 in codebook
    图 4  码本中有0, SQC和DQC的量化效果比较
    Fig. 4  Quantization performance of SQC and DQC without 0 in codebook

    图 3图 4中可以看到, 除了个别情况, 绝大数情况动态变化的码本比固定码本对深度神经网络的压缩效果更好, 特别是在网络较浅时, 动态量化编码的效果比静态量化的效果更加明显.在使用动态更新的码本方法时, 码本随着权重的更新而更新, 深度神经网络的权重在新的码本内量化, 这会在一定程度上减小由于量化造成的误差; 而固定的码本只与预训练的权重有关系, 量化得到的模型权重与预训练模型中权重误差较小.显然, 采用动态量化编码的方式, 能更好的减小由于量化造成的影响.

    本文与Deep compression[9]做了对比, 由于文献[9]是对网络进行了剪枝之后再进行量化.为了对比的公平性, 我们在此处做了和文献[9]同样的处理, 使用的数据集是MNIST, 将LeNet第一个卷积层66 %的小权重置为0, 第二个卷积层12 %较小权重置为0, 第一个全连接层8 %的小权重置为0, 第二个全连接层19 %的小权重置为0.对于这些置为0的权重, 在更新过程中不进行求导运算.此处本文的方法码本中没有引入0, 具体实验结果如下:

    表 9可以看到, 在相同条件下, 我们的方法有一定的优势.

    表 9  Deep compression与DQC的实验比较
    Table 9  Comparison of deep compression and DQC
    压缩方法 位宽 准确率
    Deep compression 5 99.20 %
    DQC 5 99.70 %
    下载: 导出CSV 
    | 显示表格

    为了进一步说明我们的方法, 本文与INQ[15]的结果做了比较.这里主为了实验的客观性, 只与INQ做了对比实验, 由于本文的量化方法与INQ相近, 都是将权重量化为2的$n~(n$为整数)次幂这种形式, 从而在对比实验时避免编码形式的影响.我们使用相同的数据、初始网络结构, 压缩到同样的位数, INQ使用4个步骤进行量化, 每次量化比例: 0.50, 0.75, 0.85, 1.00, 两种方法均量化5 bits, 结果如下:

    表 10可知, 无论网络的层数多深, 码本中是否引入0, 使用动态量化编码的结果均优于INQ的方法, 进一步说明了我们方法的有效性.

    表 10  量化为5 bits时INQ和DQC在CIFAR-10上的准确率比较
    Table 10  Compare the accuracy of INQ and DQC on CIFAR-10 with 5 bits
    网络 INQ DQC码本无0 DQC码本有0
    ResNet-20 91.01 % 92.63 % 92.82 %
    ResNet-32 91.78 % 92.87 % 92.33 %
    ResNet-44 92.30 % 93.28 % 93.14 %
    ResNet-56 92.29 % 93.21 % 93.24 %
    下载: 导出CSV 
    | 显示表格

    本文提出了一种基于动态量化编码的深度神经网络压缩方法.为了方便在嵌入式系统采用移位操作, 本文对网络中的权值采用指数量化编码, 通过理论推导得出, 将模型量化为指数形式时, 绝对值较大权值参数的量化对模型引起的误差也越大.为此, 本文采用动态量化编码, 在反向传播更新网络权值后, 对码本进行更新以自适应模型中的绝对值较大的权值参数, 减小这些参数的量化对模型精度的影响.本文还讨论了静态和动态两种不同码本进行编码时压缩模型的性能.通过实验表明, 深度神经网络越深, 压缩位数越大, 压缩效果越好; 动态量化编码的方法优于静态量化的方法; 本文方法在网络压缩10.67倍时准确率还有提升.虽然本文为了说明动态量化的优越性能, 使用不同深度和量化位宽对深度神经网络压缩进行了大量实验, 但目前只对小数据集进行实验, 后续将在更大的数据集上进行实验.


  • 本文责任编委 胡清华
  • 图  1  网络权值的量化规则

    Fig.  1  Quantization rules for network weights

    图  2  动态量化编码压缩方法的训练流程

    Fig.  2  The process of dynamic quantization coding

    图  3  码本中无0, SQC和DQC的量化比较

    Fig.  3  Quantization performance of SQC and DQC with 0 in codebook

    图  4  码本中有0, SQC和DQC的量化效果比较

    Fig.  4  Quantization performance of SQC and DQC without 0 in codebook

    表  1  LeNet在Softmax-loss下量化效果

    Table  1  Quantization performance of LeNet under Softmax-loss

    位宽 码本无0 码本有0
    3 99.29 % 99.22 %
    4 99.30 % 99.25 %
    5 99.35 % 99.32 %
    下载: 导出CSV

    表  2  LeNet在Softmax-loss+L1下量化效果

    Table  2  Quantization performance of LeNet under Softmax-loss and L1

    位宽 码本无0 码本有0
    3 98.69 % 99.25 %
    4 99.09 % 99.25 %
    5 99.14 % 99.27 %
    下载: 导出CSV

    表  3  LeNet在Softmax-loss+L2下量化效果

    Table  3  Quantization performance of LeNet under Softmax-loss and L2

    位宽 码本无0 码本有0
    3 99.26 % 99.29 %
    4 99.29 % 99.28 %
    5 99.36 % 99.28 %
    下载: 导出CSV

    表  4  ResNet-20在不同码本下量化效果

    Table  4  Quantization performance of ResNet-20 under different codebook

    位宽 码本无0 码本有0
    3 90.07 % 90.78 %
    4 91.71 % 91.91 %
    5 92.63 % 92.82 %
    下载: 导出CSV

    表  5  ResNet-32在不同码本下量化效果

    Table  5  Quantization performance of ResNet-32 under different codebook

    位宽 码本无0 码本有0
    3 91.44 % 92.11 %
    4 92.53 % 92.36 %
    5 92.87 % 92.33 %
    下载: 导出CSV

    表  6  ResNet-44在不同码本下量化效果

    Table  6  Quantization performance of ResNet-44 under different codebook

    位宽 码本无0 码本有0
    3 92.68 % 92.53 %
    4 93.14 % 93.37 %
    5 93.28 % 93.14 %
    下载: 导出CSV

    表  7  ResNet-56在不同码本下量化效果

    Table  7  Quantization performance of ResNet-56 under different codebook

    位宽 码本无0 码本有0
    3 92.72 % 92.69 %
    4 93.54 % 93.39 %
    5 93.21 % 93.24 %
    下载: 导出CSV

    表  8  固定码本下量化效果

    Table  8  Quantization performance of SQC

    网络 3 bits码本 3bits码本 3 bits码本 3 bits码本 3 bits码本 3 bits码本
    SQC无0 SQC有0 SQC无0 SQC有0 SQC无0 SQC有0
    ResNet-20 92.72 % 92.69 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-32 93.54 % 93.39 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-44 93.21 % 93.24 % 92.72 % 92.69 % 92.72 % 92.69 %
    ResNet-56 93.21 % 93.24 % 92.72 % 92.69 % 92.72 % 92.69 %
    下载: 导出CSV

    表  9  Deep compression与DQC的实验比较

    Table  9  Comparison of deep compression and DQC

    压缩方法 位宽 准确率
    Deep compression 5 99.20 %
    DQC 5 99.70 %
    下载: 导出CSV

    表  10  量化为5 bits时INQ和DQC在CIFAR-10上的准确率比较

    Table  10  Compare the accuracy of INQ and DQC on CIFAR-10 with 5 bits

    网络 INQ DQC码本无0 DQC码本有0
    ResNet-20 91.01 % 92.63 % 92.82 %
    ResNet-32 91.78 % 92.87 % 92.33 %
    ResNet-44 92.30 % 93.28 % 93.14 %
    ResNet-56 92.29 % 93.21 % 93.24 %
    下载: 导出CSV
  • [1] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks. In: Proceedings of International Conference on Neural Information Processing Systems. Vancouver, Canada: Curran Associates Inc, 2012. 1097-1105
    [2] Russakovsky O, Deng J, Su H, et al. ImageNet Large Scale Visual Recognition Challenge. International Journal of Computer Vision, 2015, 115(3):211-252 http://d.old.wanfangdata.com.cn/NSTLHY/NSTL_HYCC0214533907/
    [3] Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition. Computer Science, 2014 http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=10.1080/01431161.2018.1506593
    [4] Szegedy C, Liu W, Jia Y Q, et al. Going deeper with convolutions. In: Proceeding of the 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Boston, USA: IEEE, 2015. 1-9
    [5] He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition. IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, USA: IEEE, 2016. 770-778
    [6] He K, Zhang X, Ren S, et al. Identity Mappings in Deep Residual Networks. In: Proceeding of the European Conference on Computer Vision. Springer International Publishing, 2016. 630-645
    [7] Gong Y C, Liu L, Yang M, Bourdev L. Compressing deep concolutional net-works using vector quantization. arXiv preprint, arXiv: 1412.6115v1, 2014.
    [8] Chen W, Wilson J T, Tyree S, et al. Compressing Neural Networks with the Hashing Trick. Computer Science, 2015:2285-2294 http://arxiv.org/abs/1504.04788
    [9] Han S, Mao H, Dally W J. Deep compression:compressing deep neural networks with pruning, trained quantization and Huffman coding. Fiber, 2015, 56(4):3-7
    [10] Courbariaux M, Bengio Y, David J P. BinaryConnect: training deep neural networks with binary weights during propagations. arXiv preprint, arXiv: 1511.00363, 2015.
    [11] Courbariaux M, Hubara I, Soudry D, et al. Binarized neural networks: training deep neural networks with weights and activations constrained to +1 or -1. arXiv preprint, arXiv: 1602.02830, 2016.
    [12] Rastegari M, Ordonez V, Redmon J, et al. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks. In: Proceedings of the European Conference on Computer Vision. Springer, Cham, 2016. 525-542
    [13] Li Z, Ni B, Zhang W, Yang X, Gao W. Performance Guaranteed Network Acceleration via High-Order Residual Quantization. In: Proceedings of the 2017 IEEE International Conference on Computer Vision (ICCV), Venice, 2017. 2603-2611
    [14] Li F, Zhang B, Liu B. Ternary weight networks. arXiv preprint, arXiv: 1605.04711, 2016.
    [15] Zhu C Z, Han S, Mao H Z, Dally W J. Trained ternary quantization. arXiv preprint, arXiv: 1612.01064, 2016.
    [16] Cai Z, He X, Sun J, Vasconcelos N. Deep Learning with Low Precision by Half-Wave Gaussian Quantization. IEEE Conference on Computer Vision and Pattern Recognition (CVPR). arXiv preprint, arXiv: 1702.00953, 2017.
    [17] Zhou A J, Yao A B, Guo Y W, Xu L, Chen Y R. Incremental network quantization: towards lossless CNNs with low-precision weights. arXiv preprint, arXiv: 1702.03044, 2017.
    [18] Song Han, Jeff Pool, John Tran, William J. Dally. Learning Both Weights and Connections for Efficient Neural Networks. arXiv: 1506.02626, 2015.
    [19] Anwar S, Sung W Y. Coarse pruning of convolutional neural networks with random masks. In: Proceedings of the Int'l Conference on Learning and Representation (ICLR). IEEE, 2017. 134-145
    [20] Li H, Kadav A, Durdanovic I, Samet H, Graf H P. Pruning filters for efficient ConvNets. In: Proceedings of the Int'l Conference on Learning and Representation (ICLR). IEEE, 2017. 34-42
    [21] Luo J H, Wu J, Lin W. ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression. 2017: arXiv: 1707.06342
    [22] Hu H, Peng R, Tai Y W, Tang C K. Network trimming: a data-driven neuron pruning approach towards efficient deep architectures. In: Proceedings of the Int'l Conference on Learning and Representation (ICLR). IEEE, 2017. 214-222
    [23] Luo J, Wu J. An Entropy-based Pruning Method for CNN Compression. CoRR, 2017. abs/1706.05791
    [24] Yang T, Chen Y, Sze V. Designing Energy-Efficient Convolutional Neural Networks Using Energy-Aware Pruning. 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 6071-6079
    [25] Hinton G, Vinyals O, Dean J. Distilling the Knowledge in a Neural Network. Computer Science, 2015, 14(7):38-39
    [26] Romero A, Ballas N, Kahou SE, Chassang A, Gatta C, Bengio Y. Fitnets: Hints for thin deep nets. In: Proceedings of the Int'l Conference on Learning and Representation (ICLR). IEEE, 2017. 124-133
    [27] Zagoruyko S, Komodakis N.Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer. CoRR, 2016. abs/1612.03928
    [28] Zhang X, Zou J, He K, et al. Accelerating very deep convolutional networks for classification and detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2016, 38(10):1943-1955 doi: 10.1109/TPAMI.2015.2502579
    [29] Lebedev V, Ganin Y, Rakhuba M, et al. Speeding-up convolutional neural networks using fine-tuned CP-decomposition. Computer Science, 2015.
    [30] Iandola F N, Han S, Moskewicz M W, et al. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and < 0.5MB model size. 2016.
    [31] Howard A G, Zhu M, Chen B, et al. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. 2017. arXiv: 1704.04861
    [32] Zhang X, Zhou X, Lin M, et al. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices. 2017.
    [33] Bengio, Yoshua, Léonard, Nicholas, and Courville, Aaron. Estimating or propagating gradients through stochastic neurons for conditional computation. arXiv preprint arXiv: 1308.3432, 2013.
    [34] LeCun, Bottou, Bengio, Haffner. Gradient-based learning applied to document recognition. In: Proceedings of the IEEE, 1998. 86(11): 2278-2324
    [35] Krizhevsky A. Learning multiple layers of features from tiny images. Handbook of Systemic Autoimmune Diseases, 2009, 1(4).
  • 期刊类型引用(8)

    1. 胡永阳,李淼,孟凡开,张峰,孟艺薇,宋宇鲲. 基于Tiny-YOLOv3的网络结构化压缩与加速. 电子科技. 2023(08): 43-48+55 . 百度学术
    2. 王波,张迎晨,齐冬莲,马富齐,董旭柱. 数字化安全管控视角下的全息影像:定义、基本框架及关键技术. 高电压技术. 2023(08): 3335-3345 . 百度学术
    3. 刘奇,陈莹. 正则化机制下多粒度神经网络剪枝方法研究. 电子学报. 2023(08): 2202-2212 . 百度学术
    4. 覃伟荣,劳燕玲. 基于3D关联规则深度学习的异构遥感数据检测. 计算机仿真. 2023(09): 482-486 . 百度学术
    5. 郑宇祥,郝鹏翼,吴冬恩,白琮. 结合多层特征及空间信息蒸馏的医学影像分割. 北京航空航天大学学报. 2022(08): 1409-1417 . 百度学术
    6. 魏钰轩,陈莹. 基于自适应层信息熵的卷积神经网络压缩. 电子学报. 2022(10): 2398-2408 . 百度学术
    7. 马富齐,王波,董旭柱,王红霞,罗鹏,周胤宇. 电力视觉边缘智能:边缘计算驱动下的电力深度视觉加速技术. 电网技术. 2020(06): 2020-2029 . 百度学术
    8. 李泽嵩,董光宇. 基于动态映射的卷积神经网络量化重训练方法. 信息技术. 2020(07): 84-91 . 百度学术

    其他类型引用(19)

  • 加载中
  • 图(4) / 表(10)
    计量
    • 文章访问数:  1563
    • HTML全文浏览量:  479
    • PDF下载量:  152
    • 被引次数: 27
    出版历程
    • 收稿日期:  2018-08-17
    • 录用日期:  2019-01-02
    • 刊出日期:  2019-10-20

    目录

    /

    返回文章
    返回