1、第14卷第33期2014年11月167l一1815(2014)33一024005科学技术与工程Science Technology and EngineeringV0114 No33 Nov20142014 SciTechEngrg计算机技术一种简洁高效的加速卷积神经网络的方法刘进锋(宁夏大学数学计算机学院,银川750021)摘要卷积神经网络是机器学习领域一种广泛应用的方法,在深度学习中发挥着重要的作用。由于卷积神经网络一般需要多个层,而且训练数据通常都很大,所以网络训练可能需要几小时甚至很多天。目前虽然有一些利用GPU加速卷积神经网络训练的研究成果,但基本上都是实现方式复杂,需要技巧很高,而
2、且容易出错。提出了一种简洁、高效的加速卷积神经网络训练的方法,其主要过程是将卷积层展开,这样卷积层和全连接层的主要训练步骤都可以用矩阵乘法表示;再利用BLAS库高效计算矩阵乘法。这种方法不需要过多考虑并行处理的细节和处理器的内核特点,在CPU和GPU上都能加速。实验证明,GPU上使用该方法比传统的CPU上的实现快了100多倍。关键词卷积神经网络 卷积展开 矩阵乘法 CUDA BLAS中图法分类号TPl83; 文献标志码A卷积神经网络(convolutional neural networks,CNN)是人工神经网络的一种,由多层感知器(MLP)优化后衍生而来,可用于手写字识别,人脸、眼睛、车牌
3、检测拉1和非视觉应用,例如语义分析。CNN最大的缺点,除实现上复杂以外,网络训练所花费的时间也很长。CNN训练在计算和数据上是非常密集的,大数据集训练可能需要几天甚至几星期才能完成。事实上,由于神经网络在应用上理论指导相对欠缺,效果好的CNN,其参数(网络结构、初始值的范围、学习方法、学习率等)一般需要通过不断的测试、评估、修改来完善,减少网络的训练时间常常意味着能取得更好的效果,所以非常重要。CNN每趟训练大量的浮点运算和相对少的数据传送,使得其非常合适利用GPGPU(GPU通用计算)来完成。GPU相对于CPU的主要优点是通过其巨型并行结构,能做到以相对低的代价实现高计算量。CUDA是NVI
4、DIA开发的、比较方便的利用GPU进行通用计算的工具,是高性能计算比较热门的方法,目前已有大量的基于CUDA的GPU加速实例。在CNN的GPU加速实现方面,已有的实现方式口_51几乎都是采用生硬编码的方式来满足GPU的硬件限制(寄存器数量、共享内存大小、数据的合并访问等),编程技巧很高,难以理解,容易出错;并2014年7月18日收到 宁夏自然科学基金(NZl2163)资助作者简介:刘进锋(197l一),男,博士,副教授。研究方向:GPU通用计算,图形学,图像处理。Email:ljfsjtuorg。且通用性差,GPU的类型和输入数据的大小对性能影响很大。一些开源软件M列结构比较复杂,并不能满足个
5、性化CNN实现的要求。实用的CNN结构一般包括多个层(5层以上),其中重要的层有卷积层和全连接层,在进行网络训练时,可以采用误差传递的后向传播(BP)算法。全连接层的BP算法的主要过程可以通过矩阵、向量运算简洁地表示;而卷积层的这些过程不能直接使用矩阵运算来实现。提出了一种加速CNN的简单、高效的方法,通过将卷积层展开,以类似于全连接层的方式,通过矩阵操作实现CNN训练过程,矩阵操作可以利用BLAS库来加速。由于BLAS库的效率很高,而且为用户提供透明的并发机制,既有CPU上的版本(比如Intel MKL),也有基于CUDA的GPU上的版本(比如cuBLAS),因此,实现过程高效简洁,并且通用
6、性强。实验表明,使用本文提出的方法对CNN训练的加速非常明显。网络规模越大,输人数据越大,加速越显著。相对于传统的CPU实现,GPU上加速可达100多倍。1卷积神经网络卷积神经网络已成为当前图像识别和语音分析领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建万方数据33期 刘进锋:一种简洁高效的加速卷积神经网络的方法 241过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者其他
7、形式的变形具有高度不变性。卷积神经网络是由日本学者Fukushima在1980年首次提出的,1998年由Yann LeOun等进一步完善提高,在2003年Sven Behnke进行了泛化,同一年Patrice Simard等又进行了简化1;2011,2012年Dan Ciresan等进一步优化,使得卷积神经网络在多个图像数据库MNIST,NORB,HWDBl0,CIFARl0识别中创造了当时的最佳成绩归川。卷积神经网络由三种不同类型的层构成:卷积层、子采样层(可选)、全连接层。卷积层负责特征提取(边缘、角、终点或者其他信号中的非视觉特性),使用了两个关键的概念:接收域及共享权重。卷积层后面的子
8、采样层执行局部平均和子采样,减少了特征对偏移和畸变的敏感性;因为特征的精确位置是次要的,而相对于其他特性的相对位置更重要。全连接层做的工作就像传统的MLP网络一样,执行正常分类。11卷积层卷积层是所有CNN的核心。卷积层由一些称为特征图的二维神经元面组成,一个特征图上的每个神经元与前一层神经元的一个小子集(称为接收域)连接,二维空间上的局部接受域使得卷积神经网络可以从输人中提取初级的视觉特征。一个特征图中的神经元共享一个或多个权值矩阵(也称卷积核)。权值共享不仅大幅减少了需要训练的权值数目,大大减少了需要的训练数据量,且降低了卷积神经网络的复杂性,减轻了过拟合的问题。12子采样层为了降低初级特
9、征准确位置对识别的影响,使用子采样降低特征图的分辨率,子采样针对特征图中无重叠的同一大小的所有子区域。降低特征图的分辨率,使得卷积神经网络对二维输入的形变具有一定的不变性。子采样主要有平均特征组合和最大特征组合两种方式。一般情况下,CNN结构中,卷积层与子采样层组合出现。但文献8的研究表明,卷积层和平均子采样层可以通过在卷积层实施卷积间隔步长大于等于1的方式将子采样层去除,相当于只用一个卷积层完成了原先两层的功能而不影响CNN的性能,所以子采样层是个可选层。为了简单起见,本文研究的卷积网络也没有子采样层。13全连接层CNN网络在卷积层和子采样层后,会是一个或多个全连接层。这些层的每个神经元都会
10、与下一层的每个神经元相连。该层在CNN中总会使用,作用类似于在标准MPL中。经过卷积层和子采样层后网络获取了高阶的不变性的特征,这些特征反馈到全连接层,由全连接层对这些特征进行分类。经过全连接隐藏层和输出层信息变换和计算处理,就完成了一次学习的正向传播处理过程,最终结果由输出层向外界输出。巷眦: #:生苷二图1卷积神经网络结构Fig1 A structure of CNN妙4 L5I输d图1是本文实验用的一个不包含子采样层的5层卷积神经网络结构。L1有8个特征图,使用55卷积核,卷积间隔为11。L2有16个特征图,使用55卷积核,卷积间隔为l1,L3有32个特征图,使用6x6卷积核,卷积间隔为
11、l1。L4为全连接层,共有100个神经元,L5是全连接输出层,有5个神经元。2卷积神经网络展开21卷积运算展开卷积层的权重是共享的,因此,虽然卷积层权重所占总体比例不大,但由于卷积运算很耗时,所以占全部网络计算时间的比例较高。卷积层的计算复杂度主要来自三个方面:卷积操作;卷积核小;卷积操作时内存访问方式不适宜缓存。直接计算卷积时,操作不能直接用矩阵乘法实现。为了优化实现,可以使用卷积展开技术。图2所示是一个简单的卷积操作展开的例子。简单起见,例中输入特征图是一个通过三个卷积核做卷积,得到三个输出特征图。如果输人特征图是m个,输出特征图是n个,则需要的卷积核为m儿个(每个输出特征图需要m个卷积核
12、)。卷积展开的核心思想是将卷积输入特征和卷积核分别展开到两个矩阵中,通过矩阵乘法实现卷积操作。输入特征展开是将计算每个输出特性所需要的块状输人数据构成矩阵的一列。如图2所示,虚线圈出的0212和2021在矩阵中展开成列,大多数元素会在该矩阵中重复复制多次。卷积核同样需要在另一个矩阵中展开,=:昏;1:!黻瓣嫌毯=一;一2铺u一一觚万方数据242 科学技术与工程 14卷该矩阵的一行由计算输出特性所需要的卷积核构成。卷积展开可以通过预先计算好特征图与展开矩阵相应数据的对应关系而方便的实现。传统卷秘J方法 、勰1季+ 卷移J展开输入矩阵 厅丽 5 5 5 66 5 7 8输出矩阵图2卷积展开例子Fi
13、g2 An example of convolution unrolling卷积展开后不仅网络的前向传播可以用矩阵乘法实现,一个非常好的副产品是卷积层的后向传播也可以用另一个矩阵乘法实现了,这不仅使得运算容易优化,而且实现起来非常简单。不管输出特征有多少个,输入数据的复制工作只需要做一次。这意味着如果有50个输出特征,复制所花的代价相比于计算可忽略不计。22卷积层展开后BP算法计算过程卷积层在卷积展开后,BP算法的计算过程可表示如下:前向传播:Y=八teTX);后向传播:V X=WV驴(Y);权重更新:W=W+叩X V l,1。式中,w是权重矩阵,也就是图2中所描述的展开后的卷积核矩阵,大小为
14、km,最后的偏向(bias)行在后向传播时可以方便的忽略;x是图2中所描述的展开后的输入层矩阵,大小为kIt;Y是输出矩阵,大小为m几,Y的每一行对应于一个输出特征图;VX是展开的输入层误差(累加前);V Y是输出层误差;m是特征图数量;n是每个特征图的输出特征数;后等于卷积核的大小加1(加的1是偏向);7是学习率。误差矩阵VX需要再回卷,就是将后向传播过来的展开的误差再累加为该卷积层原本的大小,过程类似于卷积展开的逆过程,回卷后的误差可以传递到上一层。回卷可以通过预先计算好展开矩阵与原本特征图相应数据的对应关系而方便的实现。回卷操作相对于矩阵乘法来说,所花代价很小1。全相连层的前向传播,后向
15、传播与权重更新也可以通过矩阵运算直接进行,其形式与上述相同,只是输入、输出矩阵及权重矩阵直接就是网络结构现成数据,比卷积层更简单。实现过程中,基于CUDA的GPU上实现上述过程的一些细节可参考文献12。BP算法中,如果每输入一个样本,都要回传误差并调整权值,称为单样本训练。另一种方法是在所有样本输入后,计算网络的总误差,然后根据总误差计算各层的误差信号并调整权值,这种累积误差的批处理方式称为批(Batch)训练或周期训练。介于这两种方法之间的称为小批量(MiniBatch)训练,即将一部分样本输入后,计算误差,并根据误差信号调整权值。在后面的算法讨论中只讨论单样本训练和小批量训练两种方式。本文
16、提出的算法小批量训练相比于单样本训练时,矩阵乘法只是矩阵规模增大,或向量变成矩阵,更适合采用BLAS计算时发挥效能,因此,本文提出的算法在小批量训练时性能更高,小批量训练包含的模式越多,性能越高。3使用BLAS优化矩阵运算BLAS(basic linear algebra subprograms)是进行向量和矩阵等基本线性代数操作的事实上的标准。BLAS库在高性能计算中被广泛应用,衍生出了大量优化版本,如CPU上的Intel的Intel MKL,AMD的ACML以及Goto BLAS和ATLAs等,还有基于CUDA的GPU上实现的cuBLAS。cuBLAS是在NVIDIA CUDA驱动程序基础
17、上实现BLAS的函数库,它能够利用NVIDIA GPU的计算资源。该库在API层是自包含的,即不必与CUDA直接交互。应用程序使用cuBLAS库的基本途径是在GPU内存空间中创建矩阵和矢量对象,并填充上数据,然后按一定顺序调用cuBLAS函数,最后把得到的结果从GPU内存传到主机。BLAS库分为三类:BLASl支持向量一向量操作;BLAS2支持矩阵向量相关的操作;BLAS3支持矩阵矩阵相关的操作。BLAS3在O(-92)时间复杂度实现O(t3)量级的浮点运算,能充分发挥现代处理器的性能,并且能为用户提供透明的并发机制。而BLAS2则性能一般,因为受限于数据在存储器间的转移。BLAS库中最基础的
18、是BLAS2中的普通矩阵与向量乘函数GEMV和BLAS3中的矩阵相乘函数GEMM。GEMV用来计算C卜aop(A)z+励,GEMM用来计算Caop(A)op(曰)+口C。式中A、曰和c都是矩阵,工和y是向量,a够是标量,op(X)代表x,x1,x“。万方数据33期 刘进锋:一种简洁高效的加速卷积神经网络的方法 243BIAS库的效率很高,比如在实现1 0241 024大小的矩阵乘法时,Intel MKL实现比普通实现方式快了约200倍,cuBLAS实现比Intel MKL实现又快了约6倍。4实验及结果为了比较本文提出的卷积神经网络算法的性能,使用了三种实现方式。第一种称为CPU”,是CPU传统
19、的直接实现方式,没有进行任何手工优化。第二种称为CPU。呲,利用了本文的卷积展开方法,并使用了Intel的MKL及IPP进行了优化。第三种是称为GPU,利用了本文的卷积展开方法,并利用了基于CUDA的cuBLAS库加速。实验用的卷积神经网络是图1所示的网络,比较了三种实现方式CPU。CPU。叭,GPU,实现是在NORB小版数据集上进行的。该数据集有24 300个双目灰度训练图像及同样数量的测试图像。该数据集致力于从外形进行3D对象识别的试验,其中包含50个玩具图像,分属于5种类型,分别是四肢动物、人像、飞机、卡车和汽车。选这个数据集的原因是输人图像的分辨率高,计算量大,能够比较明显的体现加速效
20、果。测试使用的计算机CPU是Intel Core i7 4700,其主频为34 GHz,配的GPU为GeForce GTX 750,具有512个CUDA处理核。单精度测试迭代l 000次,一次迭代包括一次前向传播,一次后向传播及权重更新。GPU方式包括了把训练模式从CPU拷贝到GPU,及把结果拷贝回CPU主存的过程。训练选择单样本、批样本数为10、批样本数为30、批样本数为60四种情况。图3显示了小批训练模式时,批模式数量分别为l、10、30、60时GPU相对于CPU。,及CPUopt相对于CPU。的加速比,其中图3(a)是输人图像大小为9696的结果,图3(b)是将原数据集图像放大后,输入大
21、小为384384的结果。从实验结果可以看出:(1)在合适的批模式数量时,GPU加速可达上百倍,CPU优化也比普通方法加速达到近20倍。(2)输入图像越大,加速比越高。(3)批模式数量越大,加速比越高。(4)GPU加速比明显高于CPU优化方式。上述结果可以看出,复杂的卷积神经网络在实现时,加速的余地很大,既可GPU加速,也可CPU优化加速。输入图像越大,批模式数量越大,在算法实现时矩阵规模就越大,这样更能充分发挥本算法的优势,因而加速比越高。批模式数量a)输入图像大小为96 t96批模式数量b)输入图像大小为384-384图3两种输入图像大小,四种批模式数量,GPU和CPUopt相对于CPUtr
22、的加速比Fig3 Speed up of GPU and CPUopt versus CPUtr fortwo input image size and four patch pattern number5结论及未来的工作展示了一种简洁高效的实现卷积神经网络的方法。该方法将卷积层和全连接层的BP算法通过矩阵实现,并使用BLAS库加速。该方法对基于CUDA的GPU没有特别的细节要求,编程相对容易,而且GPU加速和CPU优化加速的主要过程类似,因此该方法的可移植性强。未来的工作中,计划在更多样化的深度卷积网络上研究GPU加速的方法,希望做到方法简洁、应用广泛、加速比令人满意的结果。参考文献1 Le
23、cun Y,Bottou L,Bengio Y,et a1Gradient-based learning appliedto document recognitionProceedings of IEEE,1998;86(1 1):2278_23242 Chen Y,Han C,Wang C,et a1The application of a convolution neural network on face and license plate detectionIn:Proceedings of the18th International Conference on Pattern Rec
24、ognitionHongkong:IEEE Computer Society,2006:5525553 Uetz R,Behnke SLarge-scale object recognition with CUDA-accelerated hierarchical neural networksIn:IEEE Intemational Conferenceon Intelligent Computing and Intelligent Systems(ICIS),20094 Scherer D,Schulz H,Behnke SAccelerating large-scale convolut
25、ional万方数据科学技术与工程 14卷neural networks with parallel graphics multiprocessors20th International Conference on Artificial Neural Networks(ICANN),Thessaloniki,Greece,September 20105 Strigl D,Kofler K,Podlipnig SPerformance and scalability of GPUbased eonvolutional neural networksIn:18th Euromicro Confere
26、nceon Parallel,Distributed,and NetworkBased Processing,20106 Krizhevsky ACudaconvneL http:codegooglecompcudacony-net2013一107 Jia YangqingCaffehttp:caffeberkeleyvisionorg 2013108 Simard P Y,Steinkraus D,Platt J CBest practice for convolutionalneural networks applied to visual document analysisIn:ICDA
27、R,IEEE,Los Alamitos,2003:958-9629 Cires D C,Meier U,Masci J,et a1Flexible,high performance COHVolutional neural networks for image classificationProceedings of theTwenty-Second international joint conference on Artificial Intelligence-Volume Volume Two,2011:1237-124210 Cires D C,Meier U,Schmidhuber,
28、et a1Multi-column deep neuralnetworks for image classification2012 IEEE Conference on Compurer Vision and Pattern Recognition, New York,2012:364236491 1 Chellapilla K,Puri S,Simard P YHifgh performance convolutionalneural networks for document processingIn:Proc of the 10th IntWorkshop on Frontiers i
29、n Handwriting Recognition,La Baule,France,Univemit6 de Rennes 200612 Canto X S,Ramirez F M,Victor U,et aParallel training of abackpropagation neural network using CUDAIn:Proceedings ofthe 2010 Ninth International Conference on Machine Learning andApplications,2010:30731213刘进锋,郭雷GPU与CPU上几种矩阵乘法的比较与分析计
30、算机工程与应用,201l;47(19):911Liu Jinfeng,Guo LeiComparison and analysis of matrix muhiplications on GPU and CPUComputer Engineering and Application,2011;47(19):911A Concise and Efficient Method for AcceleratingConvolution Neural NetworksLIU Jinfeng(School of Mathematics and Computer,Ningxia University,Yin
31、chuan 750021,PRChina)f Abstract Convolutional neural networks(CNN)is a good methods in machine learning,it plays an importantrole in deep learningAs CNN usually have several layers and large training data,network training can take severalhours or eveil several daysAt present,although some research o
32、f GPU accelerated CNN training have been published,but their implementations are basically complex,with great skill,and prone to errorA concise and efficientmethod for accelerating CNN training is proposedThe main process is convolutional layer unrolling,this make thetraining process of convolutiona
33、l layer and fully connected layer can be represented by matrix multiplication,andaecelerated using BLAS librariesThis method does not require much consideration of the details of the processorand parallel processing,and can be accelerated on CPU and GPUExperiments show that this method on the GPUper
34、forms 100 more times faster than traditional CPU implementationKey words convolutional neural networks convolution unrolling Matrix multiplication CUDARTAS万方数据一种简洁高效的加速卷积神经网络的方法作者: 刘进锋, LIU Jin-feng作者单位: 宁夏大学数学计算机学院,银川,750021刊名: 科学技术与工程英文刊名: Science Technology and Engineering年,卷(期): 2014,14(33)参考文献(
35、13条)1.Lecun Y;Bottou L;Bengio Y Gradient-based learning applied to document recognition 1998(11)2.Chen Y;Han C;Wang C The application of a convolution neural network on face and license plate detection 20063.Uetz R;Behnke S Large-scale object recognition with CUDA-accelerated hierarchical neural net
36、works 20094.Scherer D;Schulz H;Behnke S Accelerating large-scale convolutional neural networks with parallel graphicsmultiprocessors 20105.Strigl D;Kofler K;Podlipnig S Performance and scalability of GPU-based convolutional neural networks 20106.Krizhevsky A Cuda-convnet 20137.Jia Yangqing Caffe 201
37、38.Simard P Y;Steinkraus D;Platt J C Best practice for convolutional neural networks applied to visual documentanalysis 20039.Cires D C;Meier U;Masci J Flexible,high performance convolutional neural networks for image classification 201110.Cires D C;Meier U,Schmidhuber Multi-column deep neural netwo
38、rks for image classification 201211.Chellapilla K;Puri S;Simard P Y High performance convolutional neural networks for document processing 200612.Canto X S;Ramirez F M;Victor U Parallel training of a back-propagation neural network using CUDA 201013.刘进锋,郭雷 CPU与GPU上几种矩阵乘法的比较与分析期刊论文-计算机工程与应用 2011(19)引用本文格式:刘进锋.LIU Jin-feng 一种简洁高效的加速卷积神经网络的方法期刊论文-科学技术与工程 2014(33)