APP下载

面向“边缘”应用的卷积神经网络量化与压缩方法

2018-10-16蔡瑞初钟椿荣陈炳丰

计算机应用 2018年9期
关键词:定点嵌入式边缘

蔡瑞初,钟椿荣,余 洋,陈炳丰,卢 冶,陈 瑶,3

(1.广东工业大学 计算机学院,广州 510006; 2.南开大学 计算机与控制工程学院,天津 300353;3.新加坡高等数字科学中心,新加坡 138602)

0 引言

近年,卷积神经网络(Convolution Neural Network, CNN)凭借其强大的特征提取能力而被广泛应用于自动控制、模式识别、计算机视觉、传感器信号处理等方面,但由于智能识别任务数据交互量大,云计算中心存在负担重和网络传输延迟时间较长等问题,使得卷积神经网络在嵌入式终端的部署受到限制。例如,无人驾驶汽车领域[1],其车载传感器和摄像头持续捕捉实时路况信息,如果所有的无人驾驶汽车的数据直接发送到云计算中心处理,响应延迟时间将会更长,以至于无法满足自动驾驶对实时性数据处理的需求。为了实现实时路况的及时响应,需在车载嵌入式等“边缘”设备上进行卷积神经网络的部署。

随着卷积神经网络模型堆叠的层数越来越多,网络模型的权重参数数量也随之增长。例如,LeCun等[2]提出的LeNet-5卷积神经网络模型需要训练600 000个参数;Krizhevsky等[3]设计的AlexNet权重参数数量是LeNet-5的近100倍。而之后的VGG-19[4]网络模型的权重参数数量达到了1×108;Coates等[5]甚至将卷积神经网络权重参数扩展到1×109。卷积神经网络的复杂度主要体现在两个部分:一是卷积层包含了网络90%以上的运算操作;二是全连接层产生了超过90%的网络参数。这导致卷积神经网络的“边缘”部署受到嵌入式设备的内存空间、计算量和计算速度等方面的影响。

通常情况下,如车载嵌入式设备计算资源非常有限且对功耗有严格的要求,其处理器处理能力较弱、存储及内存空间较小,使得嵌入式设备的计算能力与存储访问能力受到了极大的限制,卷积神经网络较高的运算及存储访问需求使其在嵌入式终端设备的实现成为难点。针对以上情况,神经网络应用在嵌入式设备的实现需在保障其网络模型不变的前提下解决其运算量大及存储需求高的问题。

本文的主要工作如下:

1) 针对原始网络的计算及存储访问需求过高的问题,采用动态网络权重裁剪方法去除网络中的冗余连接,在保障网络模型精度在可控变化范围内的前提下有效减少模型的非零权重数量;

2) 针对嵌入式硬件平台的硬件特性对模型数据进行以比特位为单位的动态数据量化,充分利用嵌入式平台所具有的位操作特性,进一步提升网络模型的执行性能;

3) 提出针对嵌入式平台的卷积神经网络处理框架,结合以上处理过程,并将处理结果进行实现。

1 相关工作

边缘计算应用主要针对当前有许多在“边缘”设备上使用神经网络模型的研究工作,并得到了不错的成果。由于神经网络模型含有大量的参数,而大量冗余的参数占用了很多计算资源和存储空间[6],因此,首要任务是减少网络参数从而降低计算与存储消耗,如LeCun等[7]和Hassibi等[8]率先提出OBD(Optimal Brain Damage)和OBS(Optimal Brain Surgeon)的参数裁剪方法。该方法利用二阶泰勒展开选择裁剪参数,使网络轻量化的同时促进了网络的泛化,但是需要额外的内存和计算资源来计算黑塞矩阵(Hessian Matrix)。Molchanov等[9]则用一阶泰勒展开方法对卷积神经网络中冗余的特征图进行裁剪,但该方法仅适用于在小型数据集上作迁移学习的网络模型。Han等[10]则在裁剪的基础上,对大型网络模型用k均值(k-means)和哈夫曼树的方法对网络权重进行量化压缩,有效地降低了网络中的冗余度。

嵌入式处理器,因处理器位宽及性能的限制,常规的计算需求在该环境下难以得到满足。面对这种情况,在保证网络模型精度的同时对网络中的权重数据进行量化已成为一种趋势。Vanhoucke等[11]采用8位整数定点表示的方法表示激活函数;Hwang等[12]则提出用三元权重结合3位激活函数的定点的网络优化方法消除冗余;Gong等[13]提出一种损失精度的方法,使用向量量化来压缩Convnet并且只降低了1%精确度;Chen等[14]的HashedNet是通过散列函数将连接权重随机分组到哈希桶中,同一个哈希桶中的所有连接共享一个参数值来减小模型大小的技术;Courbariaux等[15]使用了实值和二进制的两组权重,通过前向和后向传播计算的梯度来更新权重的实值,并将实数权重量化为+1和-1的二进制权重,有效减小网络模型所需的位宽。

本文基于上述研究,提出的基于阈值的权重数据裁剪和面向硬件平台的动态定点量化方法,实现卷积神经网络模型轻量化的效果,在减少网络权重的位宽表示和数量的同时,保证了精度的稳定,在三者之间权衡,寻求最优的平衡点。

2 理论分析

2.1 神经连接的冗余性分析

在网络结构确定的前提下,在未知最优网络规模时,大量的参数使网络模型具有强大的分类能力,同时也容易导致网络的过拟合;反之,网络参数过少会限制网络的学习能力。由于更多的参数意味着更多的存储需求和计算操作,增加了在移动平台上应用CNN的难度。

已有研究工作证实,在网络模型权重参数中,并不是每一个参数都具有同等的重要性[16],不同网络层权值的概率分布也有很大差异。以CaffeNet[17]最后一层全连接层(Fc8)的权重分布为例,如图1所示,其分布具有类似正态分布的特征;当分别对权重绝对值较小和权重绝对值较大的连接进行裁剪时,得到网络精度结果如图2所示。可见:不断增大对绝对值较小的连接的裁剪比率时,网络精确率基本保持稳定,当裁剪率高于80%时精确率才出现缓慢下降;与之相反,裁剪权重较大的连接对网络的精确率影响十分明显。已有研究工作也证明,网络模型中绝对值大的权重参数比绝对值小的权重对输出的影响更大[16]。

图1 CaffeNet中Fc8的权重分布

图2 Fc8层不同权重裁剪结果

同样,以CaffeNet为例,在保证精确率不变化的前提下,动态调整每一层的裁剪阈值并进行权重数据的裁剪,每次最大限度地实现单层的裁剪并逐层递进,最终通过fine-tune保持网络执行的精确率下降不超过1%,其结果如图3所示。网络模型中每一层都有相当数量的权重参数被裁剪而不影响网络输出结果的精确率。

图3 单层最大被裁剪率

2.2 权重及激活函数的离散性分析

(1)

以CaffeNet的Fc8层的权重为例。将32位的权重用9位定点表示,量化为一个离散的权重区间,可在满足网络输出精度不变的情况下采用定点表示其数据,如图4所示。

图4 定点量化后的权重分布

定点数据量化相比浮点数据获得了更高的网络精确率,明显地降低了网络计算的开销,提高了性能并且降低了功耗。

3 方法描述

在本章中,详细描述本文所采用的算法。

3.1 基于阈值的权重数据裁剪

通过对网络中各层权重的数据分布和数值特点进行分析,权重的绝对值越小对该连接所产生的全局影响越小。在保证精度的前提下,对重要性较低的网络连接进行权重数据裁剪,减少网络的非零参数数量,使网络数据量降低。

网络训练过程通过优化权重W,以最小化损失函数E(D|f,W|),其中D为训练集。在裁剪网络时,选择并优化参数子集Wp,其中Wp为相对重要的权重连接并且Wp⊂W,同时保证网络精确度E(D|f,Wp|)。因此,最小化裁剪导致的精确度的损失可表示为:

(2)

基于阈值的权重数据裁剪操作主要包括三个步骤:

1)为保证网络的重要连接得到充分的学习,采用浮点型数据将网络模型训练至收敛。统计该网络模型各层l的权重分布Fl(wl),取一个较小且无精确度损失的裁剪率p0,使得Fl(tl0)=P{0<|tl0|}=p0,即网络模型各层i的初始裁剪率为p0时,其初始阈值分别设为tl0。同时,将所有小于此阈值的权重连接重置为0。

2)再次训练网络,对重要的权重连接进行微调,恢复网络的精确率。其中,已重置为0的权重不被更新,采用以下方法:

(3)

(4)

(5)

(6)

3.2 动态定点量化

卷积神经网络中,网络各层数值动态范围存在差异。例如在普遍采用ReLu[21]为激活函数的网络模型中,当该神经元输出大于0时,该值等于上层的输出与权重的点积,其输出数据范围远大于当前层权重。定点表示的数值范围有限,因此采用动态定点(Dynamic fixed point)[20,22]来表示网络的权重和激活函数,即每个数值表示如下:

(7)

其中:bw表示位宽,s是符号位,fl为小数的长度,m表示尾数位。网络中的各个值都可以在较小影响下,根据bw动态分配相应的fl。

对权重与激活函数的动态定点量化按以下4个步骤进行:

1)将经过预训练的网络模型的精确率作为网络模型量化的基线Ab,同时设置正阈值σ。在动态定点量化过程中,允许其量化后的精确率Aq相对于基线的降低范围在阈值σ之内,Ab-Aq<σ。

2)分析权重和激活函数各自的动态范围,寻找与其相对应整数部il所需的位宽,计算小数部分的位宽长度fl=bw-il-1。采用最邻近舍入法从浮点转化为定点数据。

测试量化后网络精确率Aq,当精确率的损失在σ范围内,采用折半查找法,多次迭代量化分别寻找激活函数、卷积层与全连接层权重的最优位宽。否则,将bw和fl部分设为上一次循环所得位宽长度。因为网络模型三个部分的位宽相对独立,因此每次只将卷积层或全连接层的权重或各层激活函数三部分的其中之一作动态定点量化,其余保持浮点型数据。

3)找到当前层动态定点量化的位数与精确率之间的最优平衡点,对量化后的网络进行微调。为了使动态定点量化不降低网络的精确率,采取全精度的影子权重(full precision shadow weight)[15],对计算过程中的梯度进行反向传播。权重的梯度为Δw由全精度权重w计算得到,而离散的权重wq由w动态定点量化而得,对权重进行随机舍入(stochastic rounding)[23]获得,即:

(8)

(9)

(10)

(11)

其中:fl为神经网络的激活函数,Q为动态量化函数。为了得到更精准的权重梯度,在微调阶段将不对激活函数fl的量化结果进行调整。

4 验证与分析

为了验证与分析上述方法,本文在Caffe 1.0版本[17]深度学习开发框架中,加入以上权重裁剪及量化功能,采用CaffeNet、VGG-19、SqueezeNet[24]、ResNet[25]等广泛使用的典型卷积神经网络模型作为实验对象,将2012年ImageNet大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)的验证集作为实验的测试数据集。

4.1 网络模型的权重数据裁剪

CaffeNet网络模型各层权重数量、裁剪阈值及其裁剪率结果如表1所示。整体来看,经阈值法裁剪后,CaffeNet网络权重数目从61×106减少为10.1×106,裁剪率为83.4%,并且,网络模型精确率保持在55.2%。另外,网络中不同的层所设置阈值的大小及裁剪率并不相同。相比权重共享的卷积层,全连接层的裁剪率都在63.72%以上,最高的裁剪率可到达88.1%;因此,全连接层比卷积层权重的冗余性更高。在卷积神经网络中,阈值的大小与层的类型及当前层在网络中所处位置相关[16]。同时,在网络模型中,上下层之间相互影响,单层阈值设置过大,会影响后面层的特征提取。表2中所示为上述四个卷积神经网络的裁剪结果。由表2可以看出,基于阈值的裁剪方法对CaffeNet、VGG-19等大型网络均可达到80%以上的裁剪率。此外,不含全连接层的参数密集的网络模型ResNet和SqueezeNet也能通过阈值法裁剪减少30%的参数数量。因此,基于阈值的裁剪方法能有效降低卷积神经网络中的非零权重数量。

相比当前的Dropout方法,阈值法裁剪则将权重连接永久删除,而Dropout在训练时使每个神经元都有一定的概率不参与训练但在网络推理时参与回归,因此Dropout并不降低非零权重数量。随着网络连接的删除,网络模型将选择最重要的连接进行表达,因此可以极大地降低神经网络本身所存在的冗余性[16]。

表1 基于阈值裁剪后CaffeNet各层权重变化

表2 不同网络模型裁剪后结果对比

4.2 网络模型的动态定点量化

在本节中,使用动态定点量化方法对上述4个网络模型的权重与激活函数进行处理,本节实验将各个网络的原始精确率作为基线,并使得量化后的精确率不低于基线的3%。

表3所示为CaffeNet、VGG-19、ResNet和SqueezeNet动态定点量化后网络各个部分的位宽、初始基线和量化后的精确率及变化。表4为各个卷积神经网络模型量化前后大小对比。表4中,最后一列数据所示为便于在嵌入式微处理器平台进行硬件加速,采用8(1 B)的倍数位定点量化网络所得结果。实验结果显示,将CaffeNet的卷积层和全连接层的权重及激活函数32位的位宽分别最大量化为8位、7位和12位时,可不产生分类精确率损失;同时,其网络大小从232.6 MB缩减为51.2 MB,网络模型大小减少了78%。此外,对于前处理器平台,CaffeNet也能被量化为58.1 MB。与CaffeNet类似,网络层数更多的卷积神经网络ResNet经过动态定点量化后,各层数据均可采用较低位宽数据表示,网络存储所占空间可缩减到25.2 MB和45.0 MB。对于参数密集型网络SqueezeNet,虽然网络本身具有较高的权重共享能力,其模型大小也由4.7 MB缩减至1.2 MB。由此可知,网络权重的量化,对于大规模神经网络在“边缘”及低性能终端设备的部署具有显著意义。

同时,相比裁剪与量化方法,网络精确率严格处于阈值所限定范围内。

表3 动态定点量化对不同网络处理的效果

表4 定点量化后各个网络的大小

4.3 裁剪与量化的结合

实际应用中,网络裁剪和网络权重的量化均可单独作为网络模型压缩的方法,为了对网络模型进行进一步压缩,本节实验将在4.1节及4.2节实验结果的基础上,提出将网络裁剪及网络权重量化相结合的方法,并对其进行嵌套迭代实现。其中,精确率阈值与基线的设置与以上章节相同。

表5中给出了网络裁剪、量化及将其结合后对CaffeNet模型各层大小的影响。相比原始CaffeNet网络的大小,将裁剪与量化结合后网络规模有了明显的降低,从232.6 MB压缩为仅9.02 MB的大小,CaffeNet网络模型减小了96.12%,极大地减少了网络存储空间。单独的裁剪和量化则分别减少为41.13 MB和44.2 MB,只减少了81.5%。而网络的精确率稍有降低,但仍处于前文所述阈值范围内。网络裁剪与量化相结合后,对CaffeNet网络的卷积层和全连接层的大小都能有效地进行压缩,说明方法结合后能更进一步地对卷积神经网络进行压缩。

表5 CaffeNet网络裁剪及量化后各层大小 MB

与此同时,网络精确率严格处于阈值所在范围内。如表6所示,本实验所采用的网络模型都可以通过网络裁剪和量化或其结合的方法,对网络模型数据大小进行压缩。VGG-19从初始大小548 MB压缩为25.2 MB而精确率仅降低0.3个百分点,压缩了95.4%;同时,层数更多的卷积神经网络的ResNet和SqueezeNet也能压缩为原始大小的18.7%以下。在精确率变化方面,在多个模型上的测试结果几何平均后精度下降为1.46个百分点,可见裁剪和量化对实现模型在嵌入式设备上的“边缘”部署有非常大的优势。

表6 不同网络裁剪及量化后结果对比

5 结语

本文针对卷积神经网络对存储空间及计算资源需求过大从而限制了其在嵌入式“边缘”设备上部署的问题,提出了结合网络权重裁剪及面向嵌入式硬件平台数据类型的数据量化的卷积神经网络压缩方法,降低网络模型的冗余度和数据位宽需求。实验结果表明,该方法在保证网络精确率的前提下能有效地对卷积神经网络进行压缩。未来工作中,还将对上述方法进一步优化,更深入研究网络模型中权重连接之间的联系;在定点量化方面,将用更少的位宽量化网络的不同部分,从而在更大程度上降低网络大小及其计算消耗。

猜你喜欢

定点嵌入式边缘
例谈圆锥曲线中的定点定值问题
定点帮扶让村民过上美好生活
解析几何中定点问题的处理策略
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
直线过定点的5种特优解法
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式PLC的设计与研究
嵌入式单片机在电机控制系统中的应用探讨
一张图看懂边缘计算
在边缘寻找自我