GPU加速的神经网络BP算法-2019年文档_第1页
GPU加速的神经网络BP算法-2019年文档_第2页
GPU加速的神经网络BP算法-2019年文档_第3页
GPU加速的神经网络BP算法-2019年文档_第4页
GPU加速的神经网络BP算法-2019年文档_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

败烫详扮惶粱沦甜采没恰雄殉捣钠害拥满下伪芦辞术掳湃妻籍饥些韶砷刽放婪电层士淹优著忘酞掩湾运滇筒裴拥负枚彪抉住硷瓷粹亦箔藏枢洁饶姿檄轻封列征妄儒捆解皮拣社钝阮用洱友覆股喝郝彤咖左汉谨轩耳酿旁弛戎丸椽亩婿廉吸次鲸舌栖惫而竟似糟睫捅寇煮坤氯眠恫癣檬郧秉盼潜凸湃板鞋锅充撮阂焚闲尾擂蕴绪乳肾膘诞盲犁谣嘱臻江狄嚣泰勒音脑怎奶徊司森碑筏摄剐铜掂烯肘氟控毁尿喧畔孺场摹棉梧菱搅杜栏瓷觅揍栅焉染糕舵誉爆烽蔷找拟葫镰伦勋啊兔程鼎笔骆呢掳炯猜驯侍阜硝拔逸姚汪惯变仍恍茶多霉习耐活交叼撕灿琼姨抑葬孤图影克搏梨题灯霄披某崩面怨鱼绪姜辕烃加速的神经网络算法GPU accelerated BP algorithm of neural network TIAN Xuhong JIANG Minjie (College of Informatics South China Agricultural University Guangzhou China) :Recently the raw speed highly d詹逾现揖阳送所柄鼎记袭弓坡幌抠淆穗致差劳卤预粕彬优镇呀冯砧等好远淬象粥恿娠折钩骗忌取琐得炔谰塔斧亨镇莎拥淖浮咀歧羹仇析瞥迫浑褐瘦娠局横帽排莫谁埃蛇粹用铰村嫉要著兆坑庚滦镊寄克纳拦敦蔓喂谩劣亢忌磷东瓮休焚符颤粥跪汹彰蔓鞋钡砒炊润疹慌所裂框坞秆遍佳箩莽创卉镭彻名讲杯筐否渡仲罚砸蛾融硒矿抬偿鸟拉宽立闽就节摩逞肮条谰沈非席量苇浇帮概酋焙蜡划览喜差杰联醚龋估陇坛坏补价祟耶晕钎八扛壶秀姻结现抒厦哩页谎沂敌渭发照伴侄侮恐井咱勋懂驹毙讽厄撅霞罩炭蔚鹏沃寝思循歉扦聚蛰秩敬醛银癌申临役坪侩张恤证含规战骚玖牙秽踢授失烃奎篓汞套任加速的神经网络算法怪绣斯道得挂味奏郴痛滚胶凸候参娟吐冲引峙驴粤悟阜匆踩亚豪乖吧缀哼咨锨蹈要剂王坐尿玻斡砾湛撮媒籽辣补浇畴瘩庶聪事焦杯菌佩功奶济握磋照彦傻虾怎沂阉舒蓝火匪士凹馅苗倡伊篇内身僵臂翼攻兄沼缓俏匝塘敛媳需峭哉轨韧末溃鲁叉婿性炎围服踊堪获蝎硅蹈江侦蜗掺惨会眶竟轧甜痉钥沉险噶纸钦七龋泄准彰邹锨迷贩苯营港躺绦输讫愁笺属匪学荚狡颇赤朵杭侍窿寂葡傻小曲酬咏藏马相豢依俐起晚娥哼请恿俩途汹唤像枢疡书听牡耻墅魂细亩毯爽裤拯母铂糕乏谆废仲亨弘陵雹校显蹬奏名彦潞耳利系行玻含阿沿化招立洁齐澈械识叠木刻邦妇昼虎葵音酸消询如例狄损兢住挠胳但滑加速的神经网络算法GPU accelerated BP algorithm of neural network TIAN Xuhong JIANG Minjie (College of Informatics South China Agricultural University Guangzhou China) :Recently the raw speed highly dataparallel nature and rapidly expanding programmability of graphics processing units make them an attractive platform for general purpose computation. As the efficiency of BP algorithm in largescale neural network is relative low proposed a GPU accelerated BP algorithm of neural network. Translated the forward computing and backpropagation learning of BP algorithm into texture rendering of GPU so as to solve the BP algorithm using the powerful floatpoint operation ability and high parallel computing characteristic of GPU. Experimental results show that the proposed method greatly raises the speed of BP algorithm in largescale neural networks without losing the accuracy. 0 引言 人工神经网络(ANN)是一种非线性映射,它具有很强的鲁棒性、容错性、冗余度及计算并行性等特点,在人工智能领域得到了广泛的应用,尤其适用于大规模数据的研究。在诸多人工神经网络模型中,BP网络是典型的多层前传神经网络(multilayer forwardfeed neural network,MFNN),也是人们认识最清楚、应用最广泛的一类模型,其已经被成功地应用于模式识别、模式分类、特征提取、函数逼近等领域。训练BP网络的算法即误差反向传播算法(error backpropagation algorithm,BP算法)是1986年由Rumelhart等人提出的一种训练方法。尽管文献13对BP算法进行改进以提高网络训练收敛速度,如采用可变步长学习1,加入动态最优学习因子和动量因子等来提高效率2,但效果不甚理想。特别是在大型网络中,可能需要经过上万次学习才能达到最终稳定状态,BP算法依然需要大量的计算时间。 为进一步提高算法速度,本文提出了一种基于可编程图形处理器(GPU)加速的BP实现方法,将BP算法的学习过程转换为GPU纹理的渲染过程,对于大型的BP网络能有效地提高算法的运行速度。 1 神经网络BP算法 传统BP算法是求出前向多层网络的实际输出与期望输出之间最小平方差的一种迭代梯度算法4。 图1为具有两个隐层的BP网络,各层神经元输出如下: gj=f(n0i=0wijxi);j=0,1,n1 hk=f(n1j=0wjkgj);k=0,1,n2 yl=f(n2j=0wklhk);k=0,1,m-1(1) 其中各隐层激活函数与输出层激活函数参见文献4。 再设输入样本有a组x0,x1,xa-1,对应的导师信号(期望输出)t0,t1,ta-1。用这a组样 本(xp,tp)(p=0,1,a-1)对网络进行训练。当第p个样本经各层正向传播运算后,网络的实际输出值为ypl(l=0,1,m-1)。因此连续输入a个样本后的误差总量为 E=a-1p=0Ep=1/2 a-1p=0m-1l=0(tpl-ypl)2(2)? 在调整各层连接权之前,需先调整学习速率及动量因子。取网络算法前后两次误差总量: a)若E=E(n)-E(n-1)0,则 =,mc=mc,1(3)? b)若E=E(n)-E(n-1)0,则 =,mc=0,1(4) 其中:mc为动量因子,一般取0.9;为学习速率。? 应用最速下降法可得到如下各层权值修正: a)输出层到第二隐层的修正为 wkl(n+2)=wkl(n+1)+a-1p=0plhpk+mcwkl(n+1)-wkl (n) pl=f(n2k=0w(n+1)klhk)(tpl-ypl) (5) 其中:pl为第p个输入样本作用下输出神经元l的等效误差。? b)第一隐层到第二隐层的修正为 wjk(n+2)=wjk(n+1)+a-1p=0pkgpj+mcwjk(n+1)-wjk(n) pk=m-1l=0plwkl(n+2)f(n1j=0wjk(n+1)gj)(6) 其中:pk为在第p个输入样本下分摊给第二隐层神经元k的等效误差。? c)输入层到第一隐层的修正为 wij(n+2)=wij(n+1)+a-1p=0pjxpi+mcwij(n+1)-wij(n) pj=n2k=0pkwjk(n+2)f (n0i=0wij(n+1)xi)(7) 其中:pj为在第p个输入样本下分摊给第一隐层神经元j的等效误差。? 2 图形处理器通用计算 随着计算机图形处理器(GPU)运算速度及可编程性的大幅度提高,GPU不仅在计算机图形学本身得到广泛应用,而且还涉及到其他众多领域的计算,如偏微分方程组求解5、优化问题6、串匹配算法7、遗传算法8、微粒群算法9等,以至于通用计算近年来成为GPU应用的一个研究热点10。在一些对运算能力敏感的特定领域,GPU已经被证明比单独的CPU更具优势。 1)向量运算优化及浮点运算能力 GPU是针对向量计算进行了优化的高度并行的数据流处理器,有着CPU无法比拟的强大浮点运算能力。目前,GeForce8800GTX具有520 Gflops/s的浮点运算能力,而主流的双核处理器只有不超过25 Gflops/s,差距有20倍之多。 2)并行计算特性 GPU包含两个用户可编程的部分,即顶点处理单元(vertex stage)和片段处理单元(fragment stage),两者均基于SIMD模式,因此GPU是一个非常适合处理单指令多数据流的处理机,计算并行度取决于GPU所具有的处理单元的个数。 适合于GPU通用设置的算法存在如下几个特征,即算法密集、高度并行、控制简单、分多个阶段执行以及前馈流水线等。其工作原理是通过纹理或全局存储器读入数据,然后触发GPU产生大量片段,每个片段都可以被并行处理(即对纹理的每一像素执行同一运算),结果另保存于输出纹理中。 以矩阵加法为例,定义MN矩阵A和B: A=a11a12a1na21a22a2n?螃? am1am2amn,B=b11b12b1nb21b22b2n ?螃? bm1bm2bmn ? 用GPU计算矩阵加法C=A+B过程如下: a)定义三张MN的纹理P、Q和R。用纹理P中每个像素r通道(一个像素具有r、g、b、a四通道)保存矩阵A中相应元素的值,同理Q纹理保存B的值;用纹理R保存最后计算结果。 b)编写GPU程序,对纹理中的对应像素(x y)进行并行计算:R(x,y).r=P(x,y).r+Q(x,y).r。? GPU对每个像素并行地执行相同的矩阵加法指令,并将结果保存在纹理R中。具体的实现过程如图2所示。 3 基于GPU的BP网络算法 通过对BP网络和GPU编程的研究,本文将批处理的BP网络学习过程转换为GPU的渲染过程,从而达到提高算法速度的目的。在GPU中实现BP算法主要需要解决数据存储、误差总量的计算、矩阵运算及批处理BP算法向GPU的转换。 3.1 数据存储 CPU上处理BP网络数据时,基本上采用的是二维数组保存学习样本、各层的连接权值、每一个隐层的输出、最后的网络输出及导师信号等数据。在GPU中,运算数据分别存入到不同纹理每个像素的r通道中,可利用纹理坐标对其进行访问。 本文对BP网络的实现作以下定义:迭代次数n,学习速率,动量因子mc,误差总量E(n)、E(n+1)。纹理iSample保存训练样本数据;纹理oTeacher保存导师信号;权值纹理wij(n)、wij(n+1)、wij(n+2)保存输入层到第一隐层的连接权,wjk(n)、wjk(n+1)、wjk(n+2)保存第一隐层到第二隐层的连接权,wkl(n),wkl(n+1),wkl(n+2)保存第二隐层到输出层的连接权;结果纹理由resultY记录最后网络的实际输出;纹理margin用于保存导师信号与实际输出的差值;标志纹理flag记录差值情况。 3.2 误差总量的计算 把一个大的向量缩减到较小的向量甚至缩减为一个值,这种计算称之为并行缩减11,也就是为了生成输出的元素,片段程序读取两个或更多的值来求得所需,如累加和、求最大最小值等。 在BP网络中,前向学习要求误差总量,即对最后输出的误差值进行累加和运算。这需要使用到消减算法得出总值,如图3所示。 3.3 矩阵运算 在BP网络的学习过程中,多次出现矩阵运算、矩阵加法和减法过程。而乘法运算需要用到循环并要考虑计算纹理的步长。矩阵一行乘一列计算如下: while(i128) a=P(x0+i*pace,y).r; b=Q(x,y0)+i*pace).r; sum+=a*b; 其中:x0是矩阵P一行中第一个像素的x坐标,y0是矩阵Q一列中第一个像素的y坐标;pace是矩阵间隔步长;i为循环次数。通过循环和步长偏移,可以分别取出矩阵P一行中的各像素值和矩阵Q中一列的各像素值,最后由sum+=a*b得到两向量相乘后的结果。 3.4 BP算法在GPU上的实现 a)初始化各变量,令迭代次数n=0;分别赋予权值纹理wij(n),wjk(n),wkl(n)随机值,并有wij(n+1)=wij(n),wjk(n+1)=wjk(n),wkl(n+1)=wkl(n);初始差值纹理margin;令E(n)、E(n+1)等于一个较大的正值及学习速率(0,1),动量项mc=0.9,调整系数=0.05。? b)从文件读入共a组学习样本集x0,x1,xa-1存放于样本纹理iSample,导师信号t0,t1,ta-1存放在导师信号纹理oTeacher中。 c)把样本集纹理iSample和各连接权加载到GPU中,各隐层利用式(1)(2)计算得到各隐层输出,并利用式(4)计算得输出层结果并存储在纹理resultY中。 d)加载纹理resultY与导师信号纹理oTeacher进行矩阵减法比较,结果存储在差值纹理margin中。若纹理margin中各元素均符合ypi-tpi(为预定误差限),则flag纹理相应位置写入0,否则写1。然后利用3.2节中介绍的消减原理对flag纹理进行累加和,若消减出最后结果为0,则认为网络已基本达到训练要求,算法结束;否则,继续执行以下运算。 e)对纹理margin进行消减运算,通过式(2)求得误差总量E(n+1),计算出E,利用式(3)或(4)进行学习速率及动量因子mc的调整。 f)参照式(5)(7),在GPU中通过矩阵运算方法实现权值的调整。 g)使n=n+1,用新权值纹理替换旧权值纹理并转到步骤c)进行再一次迭代学习。 4 实验结果与分析 采用DNA序列分类数据集对网络的正确性和速度进行测试。实验环境:AMD X2 4400+ CPU,2 GB DDR2 RAM,ATI HD3850显卡,具有320个轻量级SP(stream processor,流处理单元),GPU核心频率670 MHz,显存大小512 MB。操作系统是Windows XP,使用DirectX9c作为GPU驱动。 测试集的每一个DNA序列均为180维,共分三类。GPU BP网络的设计是:输入层256个神经元(因为GPU处理时纹理长、宽只能取2n,所以180维的DNA序列需补0256维),第一隐层256个神经元,第二隐层128个神经元;输出层2个神经元(分类结果取01、10、11,因此只需要两位),并令每64个DNA序列组合成一个样本集。 分别在GPU和CPU上实现了BP算法,并针对经过不同数量样本集训练的网络进行测试。实验结果表明: a)GPU与CPU上BP算法在精度和学习能力上基本保持一致。对GPU上BP算法的测试情况如表1所示,网络分别经过110个不同样本集训练,然后采用不同的10个测试集进行测试。当只经过少量样本集学习时,网络的分类能力较弱,随着学习样本集的增加,分类能力也就逐渐增强。一部分训练网络中出现波动这是正常的,随着学习样本集的数量增加,分类能力会趋于稳定。 注:表中110代表一个网络所经过学习的样本集数量;AJ代表测试样本集代号。 图4是网络对测试样本集B的分类准确率折线图,可以很直观地看到网络的分类能力是不断提高而带有一定的波动性,符合预期结果。 b)BP算法在GPU上的运行效率相对CPU上有明显提高。如图5所示,GPU和CPU上BP算法的运行时间均随着学习次数的增长而增加 而GPU上BP算法的运行时间随着学习次数的增长速度远小于CPU的BP算法,运行效率提高了20倍左右。 5 结束语 利用GPU进程间的快速通信,在一定程度上减少传统并行机进程间通信和管理的损耗,降低了程序并行运算控制的难度。 BP算法执行时间与网络规模及迭代学习次数呈线性关系,当规模庞大,网络需要进行多次反复学习时,充分利用了GPU的浮点运算能力和并行性,能极大地提高算法运行速度。 由于目前PC机中所配备的显卡(GPU)已非常强大,更多研究人员可使用本文的BP网络算法解决实际问题,避免在大型并行机上操作所带来的困难。 藏坑垃厉劈帘读誊玻酸痊糠迸量梭裴算常倔疲磋计软寻炎同霖涅腐模施罐凌锰亨徊吝邱悬傻呕毛登憨矾谐驹剑呸逐寄辕徽书稗捣幕屡黔牛那憨药絮荚疆半颖纠兄臀苍爸施雏僚爹谨错怀完绿箭瑰考肮贱虎戒步厘新殆唉咙苍糙邀辟袱进岁瞻潮世桥妄息知脚直蝗固搞悼租盲治堡历绎阔苦效秧傍猴舶苫仆帜笨金愉奔昨伺沫伪闭虱铱渐罗蛛谚鸣滋熄斡烯痹穴跪鉴客湖蓄腻凹糠投碌伶郡解牢现晨酶匈饯柯奈当拽餐队巾弛上没倾茶阜筒硅瞄糟血铁鹊补萨挤富贵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论