«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (5): 80-87  DOI: 10.19678/j.issn.1000-3428.0057842
0

引用本文  

张红梅, 严海兵, 张向利. 结合半波高斯量化与交替更新的神经网络压缩方法[J]. 计算机工程, 2021, 47(5), 80-87. DOI: 10.19678/j.issn.1000-3428.0057842.
ZHANG Hongmei, YAN Haibing, ZHANG Xiangli. Neural Network Compression Method Combining Half-Wave Gaussian Quantization and Alternate Update[J]. Computer Engineering, 2021, 47(5), 80-87. DOI: 10.19678/j.issn.1000-3428.0057842.

基金项目

国家自然科学基金(61461010);认知无线电与信息处理省部共建教育部重点实验室基金(CRKL170103,CRKL170104);广西密码学与信息安全重点实验室基金(GCIS201626)

作者简介

张红梅(1970-), 女, 教授、博士, 主研方向为网络信息安全、嵌入式系统、智能信息处理;
严海兵, 硕士研究生;
张向利, 教授、博士

文章历史

收稿日期:2020-03-24
修回日期:2020-04-26
结合半波高斯量化与交替更新的神经网络压缩方法
张红梅 , 严海兵 , 张向利     
桂林电子科技大学 广西高校云计算与复杂系统重点实验室, 广西 桂林 541004
摘要:为使神经网络模型能在实时性要求较高且内存容量受限的边缘设备上部署使用,提出一种基于半波高斯量化与交替更新的混合压缩方法。对神经网络模型输入部分进行2 bit均匀半波高斯量化,将量化值输入带有缩放因子的二值网络通过训练得到初始二值模型,利用交替更新方法对已训练的二值模型进行逐层微调以提高模型测试精度。在CIFAR-10和ImageNet数据集上的实验结果表明,该方法能有效降低参数和结构冗余所导致的内存和时间开销,在神经网络模型压缩比接近30的前提下,测试精度相比HWGQ-Net方法提高0.8和2.0个百分点且实现了10倍的训练加速。
关键词卷积神经网络    量化    模型压缩    半波高斯量化    交替更新    
Neural Network Compression Method Combining Half-Wave Gaussian Quantization and Alternate Update
ZHANG Hongmei , YAN Haibing , ZHANG Xiangli     
Guangxi Colleges and Universities Key Laboratory of Cloud Computing and Complex Systems, Guilin University of Electronic Technology, Guilin, Guangxi 541004, China
Abstract: To enable the deployment of neural network models on edge devices with a limited memory size and high real-time performance requirements, this paper proposes a hybrid compression method combining Half-Wave Gaussian Quantization(HWGQ) and alternate update.By performing the 2 bit uniform HWGQ on the input of the neural network model, the quantized value is input into a binary network with a scaling factor, which is trained to obtain the initial binary model.Then the trained binary model is fine-tuned layer by layer using the alternating update method to improve the accuracy of the model.Experimental results on the CIFAR-10 and ImageNet datasets show that the proposed method significantly reduces the memory consumption and time consumption caused by parameter redundancy and structural redundancy.When the model compression ratio is about 30, the accuracy of the model is increased by 0.8 and 2.0 percentage points compared with that of the HWGQ-Net method, and its training speed is increased by 10 times.
Key words: Convolutional Neural Network(CNN)    quantization    model compression    Half-Wave Gaussian Quantization(HWGQ)    alternate update    
0 概述

近年来,边缘计算技术发展迅速,而体积普遍庞大且计算复杂的卷积神经网络(Convolution Neural Network,CNN)模型仍难以在实时性要求较高但内存容量受限的边缘设备上部署使用,因此卷积神经网络模型压缩与加速成为了学术界和工业界均重点关注的研究领域。随着卷积神经网络模型压缩与加速研究的不断深入,其中的网络量化方法得到了广泛应用。网络量化的核心思想是使用较少的位(bit)代替原始浮点型(32 bit)参数,进而减少模型存储空间。文献[1]将全精度浮点型参数量化到16 bit固定长度表示,并在训练过程中使用随机约束技术,从而缩减网络存储和浮点计算次数,但压缩程度不高且浮点计算依旧复杂。文献[2]在模型训练过程中直接将全精度权值量化为+1或-1并用1 bit表示,理论上能把模型压缩至原有的1/32,同时将卷积计算中的乘加运算转换为加减运算,达到加速的目的,但因激活值为全精度,无法大幅度加速网络计算。文献[3]提出BNN网络,该网络通过把权值和激活值量化为+1和-1,将原始的卷积计算变成同或和位计数运算,大幅压缩和加速深度网络,但此类简单量化的方式导致了较严重的精度损失。为此,文献[4]提出XNOR-Net和BWN两个网络,对权值和激活值分别引入缩放因子,减少量化误差并提高训练精度,但在训练过程中会出现梯度不匹配问题,影响精度的进一步提升。针对该问题,文献[5]提出HWGQ-Net,有效地解决了训练过程中的梯度不匹配问题,但加速效果不明显。为减少BWN网络的量化误差,文献[6]提出TWN网络,将权值量化到三元网络,即$ -w\mathrm{、}0\mathrm{、}+w $,相比BWN网络具有更强的表达能力以及更高的训练精度,文献[7]在TWN网络基础上引入不同的缩放因子,相比TWN网络精度得到进一步提升。文献[6-7]通过引入量化值0,减少了精度损失,但模型压缩比仅为BWN网络的一半。文献[8]通过对梯度值进行量化,达到训练加速的目的,却导致训练精度的下降。文献[9]提出渐进式量化方法,减少了量化损失,但分组、量化和再训练方式导致了较高的计算复杂度。

本文设计一种结合半波高斯量化(Half-Wave Gaussian Quantization,HWGQ)和交替更新的神经网络模型压缩方法,改进2 bit均匀半波高斯量化器,使量化后的值分解为带有缩放因子的+1、0和-1的组合值,当与采用BWN量化的权值进行卷积运算时,可将浮点型卷积运算转化为仅有+1和-1参与的同或和位计数运算(数值0可看作没有参与运算)加速训练过程,并使用交替更新方法[10]对已训练的二值模型进行逐层微调进一步提高模型测试精度。

1 混合压缩方法

本文提出的混合压缩框架如图 1所示,首先对模型输入部分进行2 bit均匀半波高斯量化,然后将值输入到带有缩放因子的二值网络中进行训练得到一个初始的二值模型,再使用交替更新方法对模型进行微调,最终得到优化后的二值模型。在图 1中,$ \boldsymbol{X} $是上一层经过卷积运算(卷积层)或者矩阵运算(全连接层)的输出,$ \tilde{\boldsymbol{X}} $$ \boldsymbol{X} $经过2 bit均匀半波高斯量化器的激活量化值,其中$ {q}_{1}\mathrm{、}{q}_{2}\mathrm{、}{q}_{3} $分别代表 3个量化值,且满足等式$ {q}_{2}-{q}_{1}={q}_{3}-{q}_{2} $$ {t}_{1}\mathrm{和}{t}_{2} $分别代表量化值$ {q}_{1}\mathrm{和}{q}_{2} $对应的量化间隔点,$ \boldsymbol{A} $$ \boldsymbol{B} $分别是缩放因子矩阵和二元权值矩阵,若$ \boldsymbol{W}\in {\mathbb{R}}^{({c}_{\mathrm{i}\mathrm{n}}\times w\times h)\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $是经过维度变换后的卷积核,则$ \boldsymbol{W}=\boldsymbol{B}\boldsymbol{A} $,其中,$ \boldsymbol{B}\in \{+1, $ $ {-1\}}^{({c}_{\mathrm{i}\mathrm{n}}\times w\times h)\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $$ \boldsymbol{A}\in {\mathbb{R}}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $是对角矩阵,且每个对角元素$ {\alpha }_{i} $$ {\boldsymbol{B}}_{i}\in {\mathbb{R}}^{{c}_{\mathrm{i}\mathrm{n}}\times w\times h} $一一对应,$ {\boldsymbol{B}}_{i} $$ \boldsymbol{B} $的列向量,$ i=\mathrm{1, 2}, \cdots , {c}_{\mathrm{o}\mathrm{u}\mathrm{t}} $

Download:
图 1 混合压缩框架 Fig. 1 Hybrid compression framework
1.1 半波高斯量化

在BNN和XNOR网络中,在前向传播阶段采用sign作为激活值量化函数,在反向传播阶段采用$ \widetilde{\overset{~}{\mathop{\text{sign}}}\, } $替代sign,以避免梯度全为0的情况发生,影响梯度下降算法的更新,其中,sign和$ \widetilde{\overset{~}{\mathop{\text{sign}}}\, } $函数定义如图 2所示。

Download:
图 2 $ \bf{s}\bf{i}\bf{g}\bf{n} $$ \widetilde{\bf{sign}} $的函数曲线图 Fig. 2 $ \bf{s}\bf{i}\bf{g}\bf{n} $ and $ \widetilde{\bf{sign}} $ function curve graph

$ \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n} $$ \widetilde{\overset{~}{\mathop{\text{sign}}}\, } $可分别看作前向传播阶段和反向传播阶段中非线性激活函数$ \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} $的近似,其中$ \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} $是双曲正切函数,但该近似并不能产生很好的效果,因为$ \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} $对非线性部分进行挤压,具有明显的饱和效应,容易产生梯度消失问题,进而影响其在反向传播中的有效性,而且$ \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n} $$ \widetilde{\overset{~}{\mathop{\text{sign}}}\, } $近似$ \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} $时差异较大,会导致前馈模型与使用梯度更新所得模型之间不匹配,即存在梯度不匹配问题[11]

为解决上述问题,本文在前向传播阶段采用近似ReLU[12]$ Q\left(x\right) $作为量化函数,在反向传播阶段为解决梯度全为0的问题,采用近似ReLU的$ \tilde{Q}\left(x\right) $作为$ Q\left(x\right) $的替代函数,其中ReLU也称为半波整流器,定义为:

$ h\left(x\right)=\mathrm{m}\mathrm{a}\mathrm{x}(0, x) $ (1)

其中:当自变量$ x $小于0时,$ h\left(x\right) $值等于0;当自变量$ x $大于等于0时,$ h\left(x\right) $值等于自变量$ x $

该方案相比$ \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n} $$ \widetilde{\overset{~}{\mathop{\text{sign}}}\, } $近似方案具有以下优势:1)ReLU函数是非饱和函数,有效解决了梯度消失问题,提高了反向传播效率;2)ReLU函数使一部分神经元输出为0,在一定程度上可缓解过拟合现象的发生;3)解决了梯度不匹配问题,能有效减少训练过程中的精度损失。

1.1.1 前向近似

考虑到ReLU的半波整流性,前向近似ReLU的量化函数$ Q\left(x\right) $定义如下:

$ Q\left(x\right)=\left\{\begin{array}{l}{q}_{i}, x\in ({t}_{i-1}, {t}_{i}]\\ 0, x\le 0\end{array}\right. $ (2)

其中,$ {q}_{i}\in {\mathbb{R}}^{+}, {t}_{i}\in {\mathbb{R}}^{+}, i=\mathrm{1, 2}, \cdots , m, {t}_{0}=0 $$ {t}_{m}=\mathrm{\infty } $。本文采用最小化均方误差的方法得到最优解$ {Q}^{\mathrm{*}}\left(x\right) $$ p\left(x\right) $$ x $的概率密度函数,假设$ x $的数学期望为$ E\left(x\right) $$ y=g\left(x\right) $,且$ {\int }_{-\mathrm{\infty }}^{+\mathrm{\infty }}g\left(x\right)p\left(x\right)\mathrm{d}x $绝对收敛,因此有$ E\left(y\right)=E\left(g\right(x\left)\right)={\int }_{-\mathrm{\infty }}^{+\mathrm{\infty }}g\left(x\right)p\left(x\right)\mathrm{d}x $,在$ (-\mathrm{\infty }, 0) $区间内$ Q\left(x\right) $$ h\left(x\right) $均为0,在$ (0, +\mathrm{\infty }) $区间内$ h\left(x\right)=x $,于是得到式(3):

$ \begin{array}{l}{Q}^{\mathrm{*}}\left(x\right)=\underset{Q}{\mathrm{a}\mathrm{r}\mathrm{g}\mathrm{m}\mathrm{i}\mathrm{n}}{E}_{x}\left[(Q{\left(x\right)-x)}^{2}\right]=\\ \mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\underset{Q}{\mathrm{a}\mathrm{r}\mathrm{g}\mathrm{m}\mathrm{i}\mathrm{n}}{\int }_{{t}_{0}}^{{t}_{m}}p\left(x\right)(Q{\left(x\right)-x)}^{2}\mathrm{d}x=\\ \mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\underset{Q}{\mathrm{a}\mathrm{r}\mathrm{g}\mathrm{m}\mathrm{i}\mathrm{n}}{\int }_{{t}_{0}}^{{t}_{m}}p\left(x\right)\left(Q\right(x)-h{\left(x\right))}^{2}\mathrm{d}x=\\ \mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\underset{Q}{\mathrm{a}\mathrm{r}\mathrm{g}\mathrm{m}\mathrm{i}\mathrm{n}}{E}_{x}\left[\left(Q\right(x)-h{\left(x\right))}^{2}\right]\end{array} $ (3)

本文采用文献[13]中提出的Lloyd算法对$ {Q}^{\mathrm{*}}\left(x\right) $进行求解。虽然Lloyd算法是一种迭代算法,但输入分布一般没有规律,导致概率密度函数$ p\left(x\right) $难以确定,并且不同层输入分布一般不同,会随着反向传播参数的迭代更新而不断改变。上述情况使得Lloyd算法很难得到最优解$ {Q}^{\mathrm{*}}\left(x\right) $。通过在量化器$ Q\left(x\right) $前加入批量标准化(Batch Normalization,BN)[14]操作解决上述问题,批量标准化使得每层输入变成均值为0、方差为1的标准高斯分布。此时,每层具有相同的输入分布,概率密度函数能唯一确定,并且只需要应用一次Lloyd算法,加入批量标准化操作的量化器$ Q\left(x\right) $称为半波高斯量化器。

1.1.2 反向近似

为解决$ Q\left(x\right) $在反向传播过程中的梯度消失问题,需要寻找一个近似ReLU的连续函数$ \tilde{Q}\left(x\right) $,考虑到量化函数$ Q\left(x\right) $前面加入批标准化后的输入分布变为标准高斯分布,输入越接近0出现的概率越高,假设大于$ {q}_{m} $$ x $值出现的概率很低,因此超出$ {q}_{m} $的部分$ x $值实际上是离群值。本文选择Clipped ReLU作为$ \tilde{Q}\left(x\right) $,定义如下:

$ \tilde{Q}\left(x\right)=\left\{\begin{array}{l}{q}_{m}, x>{q}_{m}\\ x, x\in (0, {q}_{m}]\\ 0, \mathrm{其}\mathrm{他}\end{array}\right. $ (4)

本文选择Clipped ReLU作为ReLU的反向近似,主要原因为:1)避免在尾部出现与$ Q\left(x\right) $不匹配的现象,减少了两者之间的误差;2)大部分输入值集中于小于$ {q}_{m} $的部分,因此截断的ReLU不仅能很好地近似ReLU,而且易于梯度计算;3)Clipped ReLU能够保证稳定优化,与文献[15]中裁剪的梯度能够增强深层网络的学习性能类似。

1.2 BWN方法

本文采用文献[4]中的BWN方法对网络权重部分进行量化。假设网络有$ L $层,第$ l $层的卷积核个数为$ {K}^{l} $,其中,$ 1\le l\le L,1\le k\le {K}^{l} $,令第$ l $层的输入$ \boldsymbol{X}\in {\mathbb{R}}^{{c}_{\mathrm{i}\mathrm{n}}\times {w}_{\mathrm{i}\mathrm{n}}\times {h}_{\mathrm{i}\mathrm{n}}} $,第$ l $层的第$ k $个卷积核$ \boldsymbol{W}\in {\mathbb{R}}^{{c}_{\mathrm{i}\mathrm{n}}\times w\times h} $$ {c}_{\mathrm{i}\mathrm{n}} $为输入通道数,$ {w}_{\mathrm{i}\mathrm{n}} $$ {h}_{\mathrm{i}\mathrm{n}} $均为输入特征图,$ w $为卷积核宽度,$ h $为卷积核高度,且$ w\le {w}_{\mathrm{i}\mathrm{n}}\mathrm{、}h\le {h}_{\mathrm{i}\mathrm{n}} $。第$ l $层的卷积运算如式(5)所示:

$ \boldsymbol{X}\mathrm{*}\boldsymbol{W}\stackrel{\mathrm{B}\mathrm{W}\mathrm{N}}{\approx }\boldsymbol{X}\mathrm{*}\left(\alpha \boldsymbol{B}\right)=\alpha \cdot (\boldsymbol{X}\oplus \boldsymbol{B}) $ (5)

其中,$ \alpha =\frac{1}{n}\cdot {‖\boldsymbol{W}‖}_{L1}=\frac{1}{n}\cdot \sum \limits_{i=1}^{n}\left|{W}_{i}\right|, n={c}_{\mathrm{i}\mathrm{n}}\times w\times h, \boldsymbol{B}=\mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\mathrm{ }\left(\boldsymbol{W}\right) $$ \oplus $表示只有加减的卷积运算。通过式(5)BWN理论上能将权值用1 bit表示,模型压缩至原有的1/32并通过大幅度移除卷积运算中的乘法操作达到加速目的。若$ \boldsymbol{W}=[{W}_{1}, {W}_{2}, \cdots , {W}_{n}] $$ \tilde{\boldsymbol{W}}=[\widetilde{{W}_{1}}, \widetilde{{W}_{2}}, \cdots , \widetilde{{W}_{n}}] $,则$ \widetilde{{W}_{i}}=\alpha \cdot \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{i}\right) $$ i\in \{\mathrm{1, 2}, \cdots , n\} $,其中,$ n={c}_{\mathrm{i}\mathrm{n}}\times w\times h $,于是有:

$ \begin{array}{l}\frac{\partial C}{\partial {W}_{i}}=\sum \limits_{j=1}^{n}\left(\frac{\partial C}{\partial \widetilde{{W}_{j}}}\mathrm{ }\cdot \frac{\partial \widetilde{{W}_{j}}}{\partial {W}_{i}}\right)=\sum \limits_{j=1}^{n}\left[\frac{\partial C}{\partial \widetilde{{W}_{j}}}\mathrm{ }\cdot \frac{\partial (\alpha \cdot \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}({W}_{j}\left)\right)}{\partial {W}_{i}}\right]=\\ \hspace{1em}\sum \limits_{j=1}^{n}\left[\frac{\partial C}{\partial \widetilde{{W}_{j}}}\mathrm{ }\cdot \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{j}\right)\mathrm{ }\cdot \frac{\partial \alpha }{\partial {W}_{i}}\right]+\frac{\partial C}{\partial \widetilde{{W}_{i}}}\mathrm{ }\cdot \frac{\partial \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{i}\right)}{\partial {W}_{i}}\cdot \alpha =\\ \hspace{1em}\frac{1}{n}\mathrm{ }\cdot \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{i}\right)\mathrm{ }\cdot \sum \limits_{j=1}^{n}\left[\frac{\partial C}{\partial \widetilde{{W}_{j}}}\mathrm{ }\cdot \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{j}\right)\right]+\\ \frac{\partial C}{\partial \widetilde{{W}_{i}}}\mathrm{ }\cdot \frac{\partial \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({W}_{i}\right)}{\partial {W}_{i}}\cdot \alpha \end{array} $ (6)
1.3 基于HWGQ+BWN的二值模型训练

对于半波高斯量化器,本文令$ m=3 $$ {q}_{i+1} $ $ -{q}_{i}=\mathrm{\Delta } $。由于此时其量化值只能取$ 0\mathrm{、}\beta -\mathrm{\Delta }\mathrm{、}\beta \mathrm{、}\beta +\mathrm{\Delta } $这4个值并用2 bit进行表示,因此也可称为2 bit均匀半波高斯量化器。图 3为对输入部分和权重部分分别采用改进后的2 bit均匀半波高斯量化器和BWN方法量化后的卷积计算过程,其中,$ \mathrm{*} $表示卷积运算,$ ⊛ $表示只有同或和位计数操作的卷积运算。可以看出,经过HWGQ量化后的值被分解为两部分,每部分均是带有缩放因子-1、0和+1的组合,最终浮点型的卷积运算转化为仅有-1和+1参与的同或和位计数操作的卷积运算(数值0可看作没有参与运算),从而实现模型的训练加速。

Download:
图 3 具有加速作用的HWGQ+BWN卷积计算过程 Fig. 3 Accelerated HWGQ+BWN convolution calculation process

本文对第一层和最后一层保留全精度,只对中间层进行量化处理,在前向阶段和反向阶段使用量化的权值,在权值更新阶段使用全精度值。

算法1   基于HWGQ+BWN的二值模型训练算法

输入  批量输入$ \boldsymbol{X} $、目标输出$ \boldsymbol{Y} $、批量归一化参数$ \theta $和初始学习率$ {\eta }^{t} $

输出  二值模型、二值模型训练精度和更新后的学习率$ {\eta }^{t+1} $

1.构建网络时随机初始化$ {\mathrm{W}}^{1}{\mathrm{W}}^{2}\cdots {\mathrm{W}}^{\mathrm{L}} $

2.{第一层}

3.$ {\mathrm{Y}}^{1}=\mathrm{C}\mathrm{o}\mathrm{n}\mathrm{v}(\mathrm{X}, {\mathrm{W}}^{1}) $

4.{中间层}

5.for $ \mathrm{l}=2 $ to $ \mathrm{L}-1 $ do

6.$ {\mathrm{X}}^{\mathrm{l}}={\mathrm{Y}}^{\mathrm{l}-1} $

7.$ {\mathrm{X}}^{\mathrm{l}}=\mathrm{B}\mathrm{a}\mathrm{t}\mathrm{c}\mathrm{h}\mathrm{N}\mathrm{o}\mathrm{r}\mathrm{m}({\mathrm{X}}^{\mathrm{l}}, {\mathrm{\theta }}^{\mathrm{l}}) $

8.$ {\widetilde{\mathrm{X}}}^{\mathrm{l}}=\mathrm{Q}\left({\mathrm{X}}^{\mathrm{l}}\right) $

9.for $ \mathrm{k} $ filter in $ \mathrm{l} $ layer do

10.$ {\widetilde{\mathrm{W}}}_{\mathrm{k}}^{\mathrm{l}}={\mathrm{\alpha }}_{\mathrm{l}\mathrm{k}}{\mathrm{B}}_{\mathrm{l}\mathrm{k}}=\left(\frac{1}{\mathrm{n}}\times {‖{\mathrm{W}}_{\mathrm{k}}^{\mathrm{l}}‖}_{\mathrm{L}1}\right)\times \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({\mathrm{W}}_{\mathrm{k}}^{\mathrm{l}}\right) $

11.$ {\mathrm{Y}}^{\mathrm{l}}=\mathrm{B}\mathrm{i}\mathrm{n}\mathrm{C}\mathrm{o}\mathrm{n}\mathrm{v}({\widetilde{\mathrm{X}}}^{1}, {\widetilde{\mathrm{W}}}^{\mathrm{l}}) $

12.{最后一层}

13.$ {\mathrm{X}}^{\mathrm{L}}={\mathrm{Y}}^{\mathrm{L}-1} $

14.$ {\mathrm{Y}}^{\mathrm{L}}=\mathrm{C}\mathrm{o}\mathrm{n}\mathrm{v}({\mathrm{X}}^{\mathrm{L}}, {\mathrm{W}}^{\mathrm{L}}) $

15.$ \mathrm{C}=\mathrm{L}\mathrm{o}\mathrm{s}\mathrm{s}(\mathrm{Y}, {\mathrm{Y}}^{\left(\mathrm{L}\right)}) $

16.$ \frac{\partial \mathrm{C}}{\partial \mathrm{W}}\leftarrow \frac{\partial \mathrm{C}}{\partial \widetilde{\mathrm{W}}} $

17.$ \mathrm{W}\leftarrow \mathrm{W}-{\mathrm{\eta }}^{\mathrm{t}}\frac{\partial \mathrm{C}}{\partial \mathrm{W}} $

18.$ {\mathrm{\eta }}^{\mathrm{t}+1}=\mathrm{U}\mathrm{p}\mathrm{d}\mathrm{a}\mathrm{t}\mathrm{e}\mathrm{L}\mathrm{e}\mathrm{a}\mathrm{r}\mathrm{n}\mathrm{i}\mathrm{n}\mathrm{g}\mathrm{r}\mathrm{a}\mathrm{t}\mathrm{e}({\mathrm{\eta }}^{\mathrm{t}}, \mathrm{t}) $

1.4 二值模型微调

针对输入部分和权重部分同时量化而导致精度损失较大的问题,本文采用文献[10]中的交替更新方法对二值模型进行微调。交替更新方法主要是对已经训练好的模型进行微调,并且考虑了对输入部分和权重部分同时进行量化的情况,而文献[10]仅考虑了对权重部分的量化。

1.4.1 维度变换

若要运用交替更新方法,则需对卷积层的输入和输出以及卷积核作维度变换。从文献[16]得到启发,假定卷积层输入$ \boldsymbol{X}\in {\mathbb{R}}^{{c}_{\mathrm{i}\mathrm{n}}\times {w}_{\mathrm{i}\mathrm{n}}\times {h}_{\mathrm{i}\mathrm{n}}} $,卷积核$ \boldsymbol{W}\in $ $ {\mathbb{R}}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {c}_{\mathrm{i}\mathrm{n}}\times w\times h} $,那么卷积层输出$ \boldsymbol{Y}\in {\mathbb{R}}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $,若对卷积层的输入$ \boldsymbol{X} $、卷积核$ \boldsymbol{W} $和输出$ \boldsymbol{Y} $进行维度变换转换为二维矩阵$ {\boldsymbol{X}}_{\boldsymbol{r}}\in {\mathbb{R}}^{({c}_{\mathrm{i}\mathrm{n}}\times w\times h)\times ({w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}})} $$ {\boldsymbol{W}}_{\boldsymbol{r}}\in {\mathbb{R}}^{({c}_{\mathrm{i}\mathrm{n}}\times w\times h)\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $$ {\boldsymbol{Y}}_{\boldsymbol{r}}\in {\mathbb{R}}^{({w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}})\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $,其中下标r表示张量经过维度变换后由多维变成二维,其中$ {w}_{\mathrm{o}\mathrm{u}\mathrm{t}}=({w}_{\mathrm{i}\mathrm{n}}+2\times p-w)/s+1, {h}_{\mathrm{o}\mathrm{u}\mathrm{t}}=({h}_{\mathrm{i}\mathrm{n}}+2\times p-h)/s+1 $$ p $$ s $分别表示填充值(padding)和步长(stride),此时可将卷积运算转变为矩阵运算$ {\boldsymbol{Y}}_{\boldsymbol{r}}=({\boldsymbol{X}}_{\boldsymbol{r}}{)}^{\mathrm{T}}{\boldsymbol{W}}_{\boldsymbol{r}} $,具体过程如图 4所示。

Download:
图 4 卷积层上的卷积运算转变为矩阵运算的过程 Fig. 4 The process of transforming convolution operation into matrix operation on convolution layer
1.4.2 逐层微调

由于对输入部分和权重部分同时进行量化会产生一定的误差,该误差会逐层进行积累,因此本文采用交替更新方法对二值模型进行逐层微调解决以上问题。受文献[17]启发,假设一个CNN网络有$ L $层,记未对输入部分和权重部分进行量化和训练的模型为全精度模型,若由维度变换得到的第$ l(1\le l\le L) $层全精度模型和二值模型的输入分别为$ {\boldsymbol{X}}^{l} $$ {\tilde{\boldsymbol{X}}}^{l} $,为使得量化误差最小,需要优化的目标函数为:

$ \begin{array}{l}\mathrm{m}\mathrm{i}\mathrm{n}L(\boldsymbol{A}, \boldsymbol{B})={‖({\boldsymbol{X}}^{l}{)}^{\mathrm{T}}{\boldsymbol{W}}^{l}-({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\tilde{\boldsymbol{W}}}^{l}‖}_{\mathrm{F}}^{2}=\\ \mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }\mathrm{ }{‖{\boldsymbol{S}}^{l}-({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}^{l}{\boldsymbol{A}}^{l}‖}_{\mathrm{F}}^{2}\end{array} $ (7)

对式(7)进一步展开,目标函数变为:

$ \mathrm{m}\mathrm{i}\mathrm{n}L({\alpha }_{i}^{l}, {\boldsymbol{B}}_{i}^{l})=\sum \limits_{i=1}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}}{‖{\boldsymbol{S}}_{i}^{l}-{\alpha }_{i}^{l}({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l}‖}_{\mathrm{F}}^{2} $ (8)

其中,$ {\boldsymbol{S}}_{i}^{l}\in {\mathbb{R}}^{{w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $$ {\boldsymbol{B}}^{l}\in {\{+1, -1\}}^{({c}_{\mathrm{i}\mathrm{n}}\times w\times h)\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $$ {\boldsymbol{B}}_{i}^{l} $$ {\boldsymbol{B}}^{\boldsymbol{l}} $的列向量,$ {\boldsymbol{A}}^{\boldsymbol{l}}\in {\mathbb{R}}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {c}_{\mathrm{o}\mathrm{u}\mathrm{t}}} $是对角矩阵,$ {\alpha }_{i}^{l}={A}_{ii}^{l} $是对应于$ {\boldsymbol{B}}_{i}^{l} $的缩放因子,F表示Frobenius范数,简称F-范数。

式(8)的求解过程具体如下:

1) 初始化$ {\alpha }_{i}^{l} $$ {\boldsymbol{B}}_{i}^{l} $,记二值模型权重为$ \{{\tilde{\boldsymbol{W}}}^{l}{\}}_{l=1}^{L} $,得到$ {\boldsymbol{B}}_{i}^{l}=\mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({\tilde{\boldsymbol{W}}}_{i}^{l}\right) $$ {\alpha }_{i}^{l}=\frac{1}{T}\cdot {‖{\tilde{\boldsymbol{W}}}_{i}^{l}‖}_{L1}=\frac{1}{T}\cdot \sum \limits_{j=1}^{{c}_{\mathrm{o}\mathrm{u}\mathrm{t}}}{w}_{ij}^{l} $,其中$ {\tilde{\boldsymbol{W}}}_{i}^{l} $$ {\tilde{\boldsymbol{W}}}^{l} $的列向量,$ T={c}_{\mathrm{i}\mathrm{n}}\times w\times h $

2) 保持$ {B}_{i}^{l} $不变,更新$ {\alpha }_{i}^{l} $值。对式(8)进行展开得到$ \mathrm{m}\mathrm{i}\mathrm{n}{L}_{i}\left({\alpha }_{i}^{l}\right)=\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{s}\mathrm{t}+{\alpha }_{i}^{l}{‖({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}‖}_{\mathrm{F}}^{2}-2{\alpha }_{i}^{l}\left({\boldsymbol{S}}_{i}^{l}{)}^{\mathrm{T}}\right({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l} $,其中$ \mathrm{c}\mathrm{o}\mathrm{n}\mathrm{s}\mathrm{t}=({\boldsymbol{S}}_{i}^{l}{)}^{\mathrm{T}}{\boldsymbol{S}}_{i}^{l} $,然后求$ {\alpha }_{i}^{l} $的导数并令导数为0,得到:

$ {\alpha }_{i}^{l}=\frac{\left({\boldsymbol{S}}_{i}^{l}{)}^{\mathrm{T}}\right({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l}}{{‖({\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l}‖}_{\mathrm{F}}^{2}} $ (9)

3) 保持$ {\alpha }_{i}^{l} $不变,更新$ {\boldsymbol{B}}_{i}^{l} $值。对式(8)进行展开得到$ \mathrm{m}\mathrm{i}\mathrm{n}{L}_{i}\left({\boldsymbol{B}}_{i}^{l}\right)=\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{s}\mathrm{t}+{‖({\alpha }_{i}^{l}{\tilde{\boldsymbol{X}}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l}‖}_{\mathrm{F}}^{2}-2({\alpha }_{i}^{l}{\tilde{\boldsymbol{X}}}^{l}{\boldsymbol{S}}_{i}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l} $,令$ {\boldsymbol{Z}}^{l}={\alpha }_{i}^{l}{\tilde{\boldsymbol{X}}}^{l}\mathrm{、}{\boldsymbol{q}}^{l}={\alpha }_{i}^{l}{\tilde{\boldsymbol{X}}}^{l}{\boldsymbol{S}}_{i}^{l} $,得到:

$ \mathrm{m}\mathrm{i}\mathrm{n}{L}_{i}\left({\boldsymbol{B}}_{i}^{l}\right)=\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{s}\mathrm{t}+{‖({\boldsymbol{Z}}^{l}{)}^{\mathrm{T}}{\boldsymbol{B}}_{i}^{l}‖}_{\mathrm{F}}^{2}-2\mathrm{t}\mathrm{r}\left[\right({\boldsymbol{B}}_{i}^{l}{)}^{\mathrm{T}}{\boldsymbol{q}}^{l}] $ (10)

其中:$ \mathrm{t}\mathrm{r}\left(\mathrm{ }\right) $表示迹范数;令$ b $$ {\boldsymbol{B}}_{i}^{l} $的第$ j $个元素,$ ({\boldsymbol{B}}_{i}^{l}{)}^{\text{'}} $$ {\boldsymbol{B}}_{i}^{l} $中除去元素$ b $的列向量;$ {q}_{j}^{l} $$ {\boldsymbol{q}}^{l} $中的第$ j $个元素,$ ({\boldsymbol{q}}^{l}{)}^{\text{'}} $$ {\boldsymbol{q}}^{l} $中除去元素$ {q}_{j}^{l} $的列向量;$ ({\boldsymbol{v}}_{j}^{l}{)}^{\mathrm{T}} $$ {\boldsymbol{Z}}^{\boldsymbol{l}} $的第$ j $个行向量,$ ({\boldsymbol{Z}}^{l}{)}^{\text{'}} $$ {\boldsymbol{Z}}^{l} $中除去行向量$ ({\boldsymbol{v}}_{j}^{l}{)}^{\mathrm{T}} $的二维张量。

通过文献[18]中提出的离散循环坐标下降法,式(10)可优化为$ \mathrm{m}\mathrm{i}\mathrm{n}\mathrm{ }\left[\right(\left({\boldsymbol{B}}_{i}^{l}{)}^{\text{'}}{)}^{\mathrm{T}}\right({\boldsymbol{Z}}^{l}{)}^{\text{'}}{\boldsymbol{v}}_{j}^{l}-{q}_{j}^{l}]b, \mathrm{ }\mathrm{ }\mathrm{s}.\mathrm{t}.b\in $ $ \{+1, -1\} $,得到:

$ b=\mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\mathrm{ }[{q}_{j}^{l}-(\left({\boldsymbol{B}}_{i}^{l}{)}^{\text{'}}{)}^{\mathrm{T}}\right({\boldsymbol{Z}}^{l}{)}^{\mathrm{\text{'}}}{\boldsymbol{v}}_{j}^{l}] $ (11)

利用式(11)可迭代求出$ {\boldsymbol{B}}_{i}^{l} $中其他元素的值,最终求出$ {\boldsymbol{B}}_{i}^{l} $的值。

1.4.3 整体微调

算法2   基于交替更新方法的二值模型微调算法

输入  预训练模型$ {\left\{{\boldsymbol{W}}^{l}\right\}}_{l=1}^{L} $、二值模型$ {\left\{\widetilde{\boldsymbol{W}}^{l}\right\}}_{l=1}^{L} $和最大迭代次数$ \mathrm{M}\mathrm{a}\mathrm{x}\_\mathrm{I}\mathrm{t}\mathrm{e}\mathrm{r} $

输出  微调后的二值模型$ {\left\{\widetilde{\boldsymbol{W}}^{l}\right\}}_{l=1}^{L} $

1.for $ \mathrm{l}=2;\mathrm{l}\le \mathrm{L}-1 $ do

2.从数据集中抽样得到小批量数据集

3.前向传播得到$ {\mathrm{X}}^{\mathrm{l}} $$ {\mathrm{X}}^{\mathrm{l}} $通过HWGQ量化得到$ {\widetilde{\mathrm{X}}}^{\mathrm{l}} $

4.计算$ {\mathrm{S}}^{\mathrm{l}} $$ {\mathrm{S}}^{\mathrm{l}}=({\mathrm{X}}^{\mathrm{l}}{)}^{\mathrm{T}}{\mathrm{W}}^{\mathrm{l}} $

5.for $ \mathrm{i}=1;\mathrm{i}\le {\mathrm{c}}_{\mathrm{o}\mathrm{u}\mathrm{t}} $ do

6.$ {\mathrm{B}}_{\mathrm{i}}^{\mathrm{l}} $初始化为$ \mathrm{s}\mathrm{i}\mathrm{g}\mathrm{n}\left({\widetilde{\mathrm{W}}}_{\mathrm{i}}^{\mathrm{l}}\right) $

7.$ {\mathrm{\alpha }}_{\mathrm{i}}^{\mathrm{l}} $初始化为$ {\widetilde{\mathrm{W}}}_{\mathrm{i}}^{\mathrm{l}} $的L1范数的平均值

8.while $ \mathrm{i}\mathrm{t}\mathrm{e}\mathrm{r}\le \mathrm{M}\mathrm{a}\mathrm{x}\_\mathrm{I}\mathrm{t}\mathrm{e}\mathrm{r} $ do

9.使用式(9)更新$ {\mathrm{\alpha }}_{\mathrm{i}}^{\mathrm{l}} $

10.for $ \mathrm{j}=1;\mathrm{j}\le {\mathrm{c}}_{\mathrm{i}\mathrm{n}}\times \mathrm{w}\times \mathrm{h} $ do

11.使用式(11)更新$ {\mathrm{B}}_{\mathrm{i}}^{\mathrm{l}} $

12.end

13.end

14.end

15.end

16.得到微调后的二值模型$ {\left\{{\widetilde{\mathrm{W}}}^{\mathrm{l}}={\mathrm{\alpha }}_{\mathrm{i}}^{\mathrm{l}}{\mathrm{B}}_{\mathrm{i}}^{\mathrm{l}}\right\}}_{\mathrm{l}=1}^{\mathrm{L}} $

2 实验与结果分析

本文使用CIFAR-10和ImageNet[19]这两种经典数据集验证混合压缩方法的有效性。CIFAR-10数据集对应的网络结构为VGG14,共有10个类的60 000张RGB三通道图片,其中,训练集有50 000张,测试集有10 000张。ImageNet对应的网络结构为AlexNet[20],共有1 000个类的1.25×106张GRB三通道图片,其中,训练集有1.2×106张,验证集有5×104张。

VGG14的网络结构为(2×64C3)-MP2-(2×128C3)-MP2-(3×256C3)-MP2-(3×256C3)-MP2-(3×512C3)-MP2-10FC-Softmax,其中:“64C3”代表 64个大小为3×3的卷积核,步长和填充值都为1;“MP2”代表采样核为2×2,步长为2的最大池化层。AlexNet包括5个卷积层和3个全连接层。VGG14和AlexNet的网络结构如图 5和如图 6所示,其中:C3=3×3 filter,s=p=1,C代表卷积(Convolution)操作,filter代表卷积核(滤波器);MP3=2×2,s=2,MP代表最大池化(Max Pooling);FC代表全卷积(Fully Convolution)。

Download:
图 5 VGG14网络结构 Fig. 5 VGG14 network structure
Download:
图 6 AlexNet网络结构 Fig. 6 AlexNet network structure

本文实验硬件环境为8核Intel® XeonTM CPU E5-2620 V4@2.10 GHz,磁盘容量为3.7 TB,总内存为31 GB,可用内存为22 GB;GPU型号为GeForce GTX 1080Ti的工作站1个,专用GPU内存为11 GB,共享GPU内存为16 GB。软件环境为64位的Ubuntu 16.04 LTS,CUDA10.0,Pytorch0.3.1,Python 3.5和gcc 5.4。

2.1 数据预处理 2.1.1 半波高斯量化器参数设置

本文利用Lloyd算法[13]可以得到半波高斯量化器的参数值,2 bit均匀半波高斯量化器参数设置如表 1所示。

下载CSV 表 1 2 bit均匀半波高斯量化器参数设置 Table 1 Parameters setting of 2 bit uniform half-wave Gaussian quantizer
2.1.2 ImageNet数据集预处理

针对ImageNet数据集大、分辨率高和训练占用内存大的特点,为提高训练速度和方便实验调试,本文对原始的ImageNet数据集进行预处理。在对训练集进行Resize、随机裁剪和随机翻转后,数据规模由原来的167 GB变成13.5 GB;在对验证集进行Resize和中心裁剪之后,数据规模由原来的6.7 GB变成543.8 MB。预处理后每张图片分辨率为227像素×227像素。表 2为ImageNet数据集预处理前后数据规模对比结果,可以看出预处理前后的数据规模压缩比约为12.5,通过预处理加快了训练和测试的速度。

下载CSV 表 2 ImageNet数据集预处理前后的数据规模对比 Table 2 Comparison of data scale before and after ImageNet dataset preprocessing
2.2 压缩比分析

本文使用HWGQ+BWN方法的压缩效果较明显,表 3为压缩前和压缩后的模型规模对比结果,可以看出,本文提出的混合压缩方法在VGG14和AlexNet网络结构上的压缩比分别为29.5和30.8,接近理论值32。

下载CSV 表 3 网络压缩前后模型规模对比 Table 3 Comparison of model scale before and after network compression
2.3 测试精度分析

对于小型数据集CIFAR-10以及对应的网络结构VGG14,超参数设置具体如下:L2正则化的权重衰减系数为$ 1\times {10}^{-5} $,迭代次数(epoch)为300,初始学习率为0.1,epoch从150开始,每隔50个epoch学习率降低10倍,batch-size为128,使用带有momentum的SGD作为参数优化器,其中momentum值为0.9,采用L2正则化防止训练时产生过拟合现象,提高网络泛化能力,选择交叉熵作为损失函数。

对于VGG14网络结构,HWGQ+BWN方法得到的二值模型测试精度为91.3%,如图 7所示,其中Full-Precision表示未使用量化方法的原始网络。在此基础上,对二值模型进行微调(HWGQ+BWN+Fine-tune),微调结果如图 8所示。可以看出,当最大迭代次数为10时,测试精度约稳定于92.1%。

Download:
图 7 3种压缩方法在VGG14上的测试精度 Fig. 7 Test accuracy of three compression methods on VGG14
Download:
图 8 HWGQ+BWN方法的二值模型在VGG14上的微调结果 Fig. 8 Fine-tune results of binary model of HWGQ+BWN method on VGG14

基于CIFAR-10数据集的4种压缩方法在VGG14中的测试精度对比结果如表 4所示,可以看出本文所提的HWGQ+BWN+Fine-tune方法相比HWGQ-Net方法在压缩模型规模保持不变的前提下,测试精度提高了0.8个百分点。

下载CSV 表 4 CIFAR-10数据集在VGG14中的测试精度对比 Table 4 Comparison of test accuracy of CIFAR-10 dataset in VGG14

对于大型数据集ImageNet以及对应的网络结构AlexNet,超参数设置具体如下:L2正则化的权重衰减系数为$ 1\times {10}^{-5} $,epoch为20,初始学习率为0.001,每隔5个epoch学习率降低10倍,batch-size为512,使用Adam[21]作为参数优化器,选择交叉熵作为损失函数。对于AlexNet网络结构,HWGQ+BWN最终训练得到的二值模型Top-1测试精度和Top-5测试精度为50.7%和74.8%,如图 9所示。在此基础上,对二值模型进行微调(HWGQ+BWN+Fine-tune),微调结果如图 10图 11所示,可以看出在最大迭代次数约为20时,Top-1测试精度和Top-5测试精度约稳定于52.7%和76.8%。基于ImageNet数据集的4种压缩方法在AlexNet中的测试精度对比结果如表 5所示,可以看出对于ImageNet数据集,本文所提的HWGQ+BWN+Fine-tune方法与相比HWGQ-Net方法在压缩模型规模保持不变的前提下,Top-1测试精度和Top-5测试精度分别提高了2.0和1.6个百分点。

Download:
图 9 3种压缩方法在AlexNet上的测试精度 Fig. 9 Test accuracy of three compression methods on AlexNet
Download:
图 10 HWGQ+BWN方法的二值模型在AlexNet上的Top-1微调结果 Fig. 10 Top-1 fine-tune results of binary model of HWGQ+BWN method on AlexNet
Download:
图 11 HWGQ+BWN方法的二值模型在AlexNet上的Top-5微调结果 Fig. 11 Top-5 fine-tune results of binary model of HWGQ+BWN method on AlexNet
下载CSV 表 5 ImageNet数据集在AlexNet中的测试精度对比 Table 5 Comparison of test accuracy of ImageNet dataset in AlexNet
2.4 加速效果分析

本文设计了一个具有加速作用的2 bit均匀量化半波高斯量化器,能将浮点型卷积运算转化为简单的位运算和同或运算。如表 6所示,本文所提的HWGQ+BWN方法通过对半波高斯量化器的改进,相比HWGQ-Net方法实现了10倍的训练加速,相比Full-Precision方法实现了30倍的训练加速。

下载CSV 表 6 3种压缩方法在训练过程中的加速比对比 Table 6 Comparison of speedup ratio of three compression methods in the training process
3 结束语

本文提出一种神经网络压缩方法,采用近似ReLU的半波高斯量化器对输入部分进行量化,在反向传播阶段利用ReLU函数解决梯度不匹配问题。在此基础上,通过改进的2 bit均匀半波高斯量化器加速训练过程,并采用交替更新方法对已训练的二值模型进行缩放因子和二元权值微调,进一步提高神经网络模型测试精度。实验结果表明,在神经网络模型规模保持不变的情况下,该方法能明显提高模型测试精度并加快训练速度。下一步将研究不同稀疏度的半波高斯量化器对神经网络模型测试精度和加速效果的影响,并在满足模型压缩规模的条件下,将该半波高斯量化器与三值模型相结合进一步提高测试精度。

参考文献
[1]
GUPTA S, AGRAWAL A, GOPALAKRISHNAN K, et al. Deep learning with limited numerical precision[C]//Proceedings of International Conference on Machine Learning. New York, USA: ACM Press, 2015: 1737-1746.
[2]
COURBARIAUX M, BENGIO Y, DAVID J P. BinaryConnect: training deep neural networks with binary weights during propagation[C]//Proceedings of International Conference on Neural Information Processing Systems. Cambridge, USA: MIT Press, 2015: 3123-3131.
[3]
COURBARIAUX M, HUBARA I, SOUDRY D, et al. Binarized neural networks: training deep neural networks with weights and activations constrained to +1 or -1[EB/OL]. [2020-02-10]. https://arxiv.org/abs/1602.02830.
[4]
RASTEGARI M, ORDONEZ V, REDMON J, et al. XNOR-Net: ImageNet classification using binary convolutional neural networks[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 525-542.
[5]
CAI Zhaowei, HE Xiaodong, SUN Jian, et al. Deep learning with low precision by half-wave Gaussian quantization[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D.C., USA: IEEE Press, 2017: 5918-5926.
[6]
LI Fengfu, ZHANG Bo, LIU Bin. Ternary weight networks[EB/OL]. [2020-02-10]. https://arxiv.org/abs/1605.04711.
[7]
ZHU Chenzhuo, HAN Song, MAO Huizi, et al. Trained ternary quantization[EB/OL]. [2020-02-10]. https://arxiv.org/pdf/1612.01064.pdf.
[8]
ZHOU Shuchang, WU Yuxin, NI Zekun, et al. Dorefa-Net: training low bitwidth convolutional neural networks with low bitwidth gradients[EB/OL]. [2020-02-10]. https://arxiv.org/pdf/1606.06160.pdf.
[9]
ZHOU Aojun, YAO Anbang, GUO Yiwen, et al. Incremental network quantization: towards lossless CNNs with low-precision weights[EB/OL]. [2020-02-10]. https://arxiv.org/pdf/1702.03044.pdf.
[10]
HU Qinghao, WANG Peisong, CHENG Jian. From hashing to CNNs: training binary weight networks via hashing[C]//Proceedings of the 32nd AAAI Conference on Artificial Intelligence. Palo Alto, USA: AAAI Press, 2018: 3247-3254.
[11]
LIN D D, TALATHI S S. Overcoming challenges in fixed point training of deep convolutional networks[EB/OL]. [2020-02-10]. https://arxiv.org/abs/1607.02241.
[12]
GLOROT X, BORDES A, BENGIO Y. Deep sparse rectifier neural networks[C]//Proceedings of the 14th International Conference on Artificial Intelligences and Statistics. Washington D.C., USA: IEEE Press, 2011: 315-323.
[13]
LLOYD S. Least squares quantization in PCM[J]. IEEE Transactions on Information Theory, 1982, 28(2): 129-137.
[14]
IOFFE S, SZEGEDY C. Batch normalization: accelerating deep network training by reducing internal covariate shift[EB/OL]. [2020-02-10]. https://arxiv.org/pdf/1502.03167.pdf.
[15]
PASCANU R, MIKOLOV T, BENGIO Y. On the difficulty of training recurrent neural networks[C]//Proceedings of International Conference on Machine Learning. Washington D.C., USA: IEEE Press, 2013: 1310-1318.
[16]
LI Zefan, NI Bingbing. Performance guaranteed network acceleration via high-order residual quantization[EB/OL]. [2020-02-10]. https://arxiv.org/abs/1708.08687.
[17]
WU Jiaxiang, LENG Cong, WANG Yuhang, et al. Quantized convolutional neural networks for mobile devices[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D.C., USA: IEEE Press, 2016: 4820-4828.
[18]
SHEN Fumin, SHEN Chunhua, LIU Wei, et al. Supervised discrete hashing[C]//Proceedings of IEEE Computer Vision and Pattern Recognition. Washington D.C., USA: IEEE Press, 2015: 37-45.
[19]
RUSSAKOVSKY O, DENG J, SU H, et al. ImageNet large scale visual recognition challenge[J]. International Journal of Computer Vision, 2015, 115(3): 211-252. DOI:10.1007/s11263-015-0816-y
[20]
KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[J]. Communications of the ACM, 2017, 60(6): 84-90. DOI:10.1145/3065386
[21]
KINGMA D P, BA J. Adam: a method for stochastic optimization[EB/OL]. [2020-02-10]. https://arxiv.org/pdf/1412.6980.pdf.