[go: up one dir, main page]

CN109816107A - 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法 - Google Patents

一种基于异构计算平台的bfgs拟牛顿神经网络训练算法 Download PDF

Info

Publication number
CN109816107A
CN109816107A CN201711158651.3A CN201711158651A CN109816107A CN 109816107 A CN109816107 A CN 109816107A CN 201711158651 A CN201711158651 A CN 201711158651A CN 109816107 A CN109816107 A CN 109816107A
Authority
CN
China
Prior art keywords
neural network
calculating
newton
task
work
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711158651.3A
Other languages
English (en)
Inventor
李佳峻
刘强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin University
Original Assignee
Tianjin University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin University filed Critical Tianjin University
Priority to CN201711158651.3A priority Critical patent/CN109816107A/zh
Publication of CN109816107A publication Critical patent/CN109816107A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Feedback Control In General (AREA)

Abstract

本发明公开了一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,包括以下步骤:(1)划分任务:(2)划分并行度,完成计算任务所需的work‑item的总数以及将work‑item组织成的work‑group的数量;求出神经网络训练误差;(3)计算搜索方向dir;(4)基于黄金分割法计算步长λ及更新权重w;(5)计算神经网络训练误差评估函数的梯度g;(6)计算海森矩阵H;(7)并行归约。本发明采用CPU和GPU异构计算平台作为神经网络训练计算设备,使用GPU对BFGS拟牛顿算法进行加速,与传统的基于CPU的实现相比运行速度得到巨大提升;与其他优化算法相比具有较高的收敛效率和全局搜索能力。

Description

一种基于异构计算平台的BFGS拟牛顿神经网络训练算法
技术领域
本发明涉及高性能计算与机器学习领域,具体涉及一种基于异构计算平台的BFGS拟牛顿神经网络训练算法。
背景技术
人工神经网络是一种信息处理系统,它可以通过一系列数据学习任何输入输出关系,并建立准确的模型。目前,人工神经网络面临的主要挑战之一就是训练。在训练之前,神经网络不携带任何信息;经过训练,神经网络的权重值得以确定,从而基于训练数据建立精确的模型。神经网络权重值的确定过程,实际上是一个优化过程,即神经网络通过各种优化算法,比如梯度下降法、拟牛顿算法(QN)、粒子群优化算法(PSO)以及共轭梯度算法(CG)等,经过反复迭代计算得出比较精确的拟合权重值。因此,神经网络训练包含了大量训练数据的多次迭代计算,是一个十分耗时的过程。
随着GPU技术的快速发展,当前GPU已经具备很强的并行计算能力和数据处理能力,但GPU的逻辑处理能力与CPU相比还有很大差距,因此,急需一种综合考虑速度提升、方法扩展性以及设计成本的算法。
发明内容
本发明的目的是为了克服现有技术中的不足,解决传统人工神经网络在训练过程中效率低的问题,提供一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,采用CPU和GPU异构计算平台作为神经网络训练计算设备,使用GPU对BFGS拟牛顿算法进行加速,获得一种可以较快完成神经网络训练并建立一个高精度模型的方法。
本发明的目的是通过以下技术方案实现的:
一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,包括以下步骤:
(1)划分任务:BFGS拟牛顿神经网络训练算法包括计算任务和控制任务,控制任务由CPU完成,计算任务由GPU来完成,计算任务分为五个内核函数(kernel);
(2)划分并行度,完成计算任务所需的work-item的总数以及将work-item组织成的work-group的数量;
(3)求出神经网络训练误差;
(4)计算搜索方向dir;
(5)基于黄金分割法计算步长λ及更新权重w;
(6)计算神经网络训练误差评估函数的梯度g;
(7)计算海森矩阵H;
(8)并行归约。
进一步的,步骤(1)中五个内核函数分别为:kernel1表示神经网络训练误差的计算,kernel2表示搜索方向的计算,kernel3表示搜索步长的计算及神经网络连接权重的更新,kernel4表示神经网络训练误差评估函数的梯度的计算,kernel5表示海森矩阵的计算。
进一步的,步骤(1)中控制任务包括初始数据由主机端到计算设备端的传输控制、计算结果由计算设备端到主机端的传输、是否达到迭代次数上限的条件判断、训练误差是否符合要求的判断以及计算任务是否终止的控制。
与现有技术相比,本发明的技术方案所带来的有益效果是:
1.本发明使用CPU与GPU异构计算平台作为计算设备,与传统的基于CPU的实现相比运行速度得到巨大提升;
2.本发明使用OpenCL作为编程语言实现,与使用CUDA语言的实现相比具有较高的可移植性,可以在不同厂家的GPU以及FPGA上使用;
3.本发明采用BFGS拟牛顿算法作为神经网络训练的优化算法,与其他优化算法相比具有较高的收敛效率和全局搜索能力。
附图说明
图1是神经网络结构示意图。
图2是CPU和GPU异构计算平台示意图。
图3是并行归约示意图。
图4是并行拟牛顿神经网络训练算法设计流程图。
图5是各个模块之间数据传输示意图。
图6是具体操作流程图。
图7是结果示意图
具体实施方式
下面结合附图对本发明作进一步的描述。
如图1所示,是神经网络结构示意图,包括:输入层、隐含层和输出层。相邻两次神经元全部连接在一起,每个连接对应一个权重。输入层神经元个数对应一组训练数据的输入个数,输出层神经元个数对应一组训练数据的输出个数,隐含层神经元个数根据需要设定,一般大于输入层神经元数量。
如图2所示,是CPU与GPU异构计算平台示意图。CPU与GPU通过PCIE总线进行通信。CPU所在的部分为host端,主管控制,GPU所在的部分为device端,主管计算,host端的存储空间为host memory,该存储空间可以与GPU端的global memory进行数据的读写。在进行操作时,只需将数据放入相应目录,软件便会自行读取。
如图4所示,是本发明算法的设计流程图,根据CPU以及GPU的特点对总体任务进行了划分。其中判断部分以及数据的初始化部分都由CPU完成,神经网络训练误差函数以及BFGS拟牛顿算法都在GPU上实现。各个模块并行度的划分,既考虑了算法自身的特点又考虑了GPU的结构特点。
具体如下:
1)任务划分:该算法总体包含两类任务,分别为计算任务和控制任务。控制任务由CPU来完成,包括初始数据由主机端到计算设备端的传输控制、计算结果由计算设备端到主机端的传输、是否达到迭代次数上限的条件判断、训练误差是否符合要求的判断以及计算任务是否终止的控制。计算任务由GPU来完成,为了便于任务调度及优化,计算任务被分为五个内核函数kernel实现,如图5所示,包括kernel1神经网络训练误差的计算,kernel2搜索方向的计算,kernel3搜索步长的计算及神经网络连接权重的更新,kernel4神经网络训练误差评估函数的梯度的计算,kernel5海森矩阵的计算。
2)并行度划分:对于1)中五个内核函数kernel,要在GPU上并行实现首先需要划分并行度,即完成这些计算任务所需要的work-item的总数以及将这些work-item组织成的work-group的数量。在五个内核函数kernel中kernel1和kernel4根据训练数据规模划分并行度,例如如果训练数据由1024组,那么这两个kernel需要1024个work-item参与计算,每个work-item进行一组训练数据的相关计算。kernel2、kernel3和kernel5根据神经网络权重数量划分并行度,如图1所示神经网络的连接权重数量为32个,那么这该神经网络结构下的这三个kernel所需的work-item数量为32。
3)神经网络训练误差评估函数:该函数对应图5中kernel1。该kernel从内存中读取训练数据及连接权重w进行计算,最后获得w对应的训练误差ET(w)。该函数中,第s个work-item的计算内容如公式(1)(2)(3)所示,其中输入神经元的值即为训练数据,用xi s表示,其表示与第i个输入神经元对应的第s组训练数据的值;隐藏神经元的值由公式(1)和(2)计算得到,其中hj表示第j个隐藏神经对应的输入神经元与权重的累和,f(hj)表示第j个隐藏神经元的值,wij表示第i个输入神经元到第j个隐藏神经元的权重,n表示输入神经元数量;输出神经元ym的值由公式(3)计算得到,其中m表示第m个输出神经元,N表示隐藏神经元的数量。最后,使用归约技术根据公式(4)求得神经网络训练误差ET。公式(4)中ST表示训练数据集的规模,Ny表示输出神经元个数,ym表示第m个输出神经元的计算结果,dkm表示第k组训练数据与第m个输出神经元对应的理想的输出结果。dmax,m表示给定训练数据中最大的理想输出值,而dmin,m表示给定的训练数据中最小的理想输出值。
4)计算搜索方向dir:该函数对应图5中kernel2,其计算过程需要用到海森矩阵H和梯度g,每一个work-item读取矩阵H的一行数据与梯度g进行乘累加运算产生搜索方向dir的一个元素。
5)基于黄金分割法计算步长λ及更新权重w:该函数对应图5中kernel3,其过程为首先初始化一个步长区间并计算该段区间的两个黄金分割点,再以这两个点为步长更新w,然后调用ET函数分别求两组w对应的值并比较大小,留下较小的那个步长并删除较大步长外侧的一段区间。如此反复,直到剩下的步长区间小于一个定值,停止迭代并确定步长。由于该kernel主要目的是更新权重w,因此函数内部并行度的划分基于w的维度进行的。即每个work-item计算权重w的一个元素。该函数要反复调用神经网络训练误差评估函数,即需要在一个kernel内部调用另一个kernel。该功能可以通过高于1.1版本的OpenCL实现。但由于两个kernel的并行度并不相同,因此虽然总体的work-item数量相同,但活跃的work-item并不相同。为了避免由此带来的work-item冲突,在每次调用训练误差函数之前,要对所有work-item强制进行同步操作。
6)计算神经网络训练误差评估函数的梯度g:该函数对应图5中kernel4,其过程主要为逐层计算每组权重w中各个元素的偏导数,然后使用并行归约的方法求各个元素偏导数的和,即可得到神经网络训练误差函数梯度。该函数中,每个work-item计算基于一组训练数据的权重w中所有元素的偏导数,最后对所有work-item进行归约求和
7)计算海森矩阵H:所有公式中下角标k表示第k次迭代,该函数对应图5中kernel5,由步骤5)和6)计算得到的权重w和梯度g通过公式(5)(6)计算得到s和z,再由这两个向量依照公式(7)计算得到x,其中s为权重的改变量,z为梯度的改变量,x为校正项。最后根据公式(8)计算海森矩阵。该部分中每个work-item计算得到海森矩阵H一列的元素。Hk为第k次迭代的海森矩阵H。
sk=wk+1-wk (5)
zk=gk+1-gk (6)
8)并行归约:在BFGS拟牛顿神经网络训练并行算法的kernel1和kernel4中需要用到并行归约的技术来处理一些向量求得向量中各元素累加之和。并行归约技术如图3所示,第一个work-item计算第一个变量与最后一个变量之和,第二个work-item计算第二个变量与倒数第二个变量之和,依此类推,最后结果由第一个work-item计算得到。
具体的,图5是各个模块之间数据传输示意图。每一个模块对应一个kernel。首先,kernel2使用初始的海森矩阵H和梯度g计算搜索方向d;然后,kernel3根据黄金分割算法确定步长,并由搜索方向d和步长λ更新权重w并传入kernel1计算训练误差error并进行评估,直到满足条件确定最终步长并确定w;kernel4根据kernel1中的一些中间变量计算ET(w)的偏导数并确定该函数梯度;最后,在kernel5中,使用之前的几个kernel产生的权重w和梯度g计算海森矩阵矩阵H。经过外部CPU上判断,若达到要求则输出结果,否则继续循环运行这五个kernel。
其具体操作如图6所示:
(1)神经网络参数设定
如图1所示,是神经网络的结构图;本实施例选择了单隐含层神经网络,输入层神经元数量根据所要拟合的模型的输入变量个数设置,输出层神经元数量根据所要拟合的模型的输出变量个数设置,隐含层神经元数量根据自身需要设置,一般大于输入层神经元数量。神经网络权重数量会根据前面所设神经元的数量按照公式w=(input+output)*hidden自行计算更改。
(2)GPU端参数设定
GPU端参数设置主要有work-item数量的设置和work-group规模的设置。work-item是GPU上运行的最小单位,其数量的设置可根据训练数据规模而定。比如训练数据规模为4096组,那么work-item数量可设为4096个。一定数量的work-item可组织为work-group,这样便于同组work-item之间数据传输以及管理。work-group内work-item数量可根据神经网络权重数量设置,如图1所示神经网络,其权重数量为(3+1)*8=32个,那么一个work-group中work-item的数量便设为32个。
(3)训练数据导入
软件只能读取csv格式的文件,所以需要将训练数据先存储于csv文件中,然后将其存入软件目录下,并将相应的文件名更改为training-data即可。
(4)终止条件设定
以上步骤完成后,还需要设定软件终止条件,一般包括迭代最大次数设置以及训练误差边界条件设置。设置完成后,软件达到最大迭代次数或者训练误差小于训练误差边界条件则会终止程序并输出结果。
(5)结果记录
输出结果如图7所示。结果包含四个信息,第一行为训练误差,表示神经网络拟合模型的精确度,如图所示为37.5297;第二行是迭代次数,表示程序从运行到终止的迭代次数,如图所示为20;第三行开始为获得的神经网络权重;最后一行为运行时间,单位是秒。
本发明并不限于上文描述的实施方式。以上对具体实施方式的描述旨在描述和说明本发明的技术方案,上述的具体实施方式仅仅是示意性的,并不是限制性的。在不脱离本发明宗旨和权利要求所保护的范围情况下,本领域的普通技术人员在本发明的启示下还可做出很多形式的具体变换,这些均属于本发明的保护范围之内。

Claims (3)

1.一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,其特征在于,包括以下步骤:
(1)划分任务:BFGS拟牛顿神经网络训练算法包括计算任务和控制任务,控制任务由CPU完成,计算任务由GPU来完成,计算任务分为五个内核函数kernel;
(2)划分并行度,完成计算任务所需的work-item的总数以及将work-item组织成的work-group的数量;
(3)求出神经网络训练误差;
(4)计算搜索方向dir;
(5)基于黄金分割法计算步长λ及更新权重w;
(6)计算神经网络训练误差评估函数的梯度g;
(7)计算海森矩阵H;
(8)并行归约。
2.根据权利要求1一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,其特征在于,步骤(1)中五个内核函数分别为:kernel1表示神经网络训练误差的计算,kernel2表示搜索方向的计算,kernel3表示搜索步长的计算及神经网络连接权重的更新,kernel4表示神经网络训练误差评估函数的梯度的计算,kernel5表示海森矩阵的计算。
3.根据权利要求1一种基于异构计算平台的BFGS拟牛顿神经网络训练算法,其特征在于,步骤(1)中控制任务包括初始数据由主机端到计算设备端的传输控制、计算结果由计算设备端到主机端的传输、是否达到迭代次数上限的条件判断、训练误差是否符合要求的判断以及计算任务是否终止的控制。
CN201711158651.3A 2017-11-20 2017-11-20 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法 Pending CN109816107A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711158651.3A CN109816107A (zh) 2017-11-20 2017-11-20 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711158651.3A CN109816107A (zh) 2017-11-20 2017-11-20 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法

Publications (1)

Publication Number Publication Date
CN109816107A true CN109816107A (zh) 2019-05-28

Family

ID=66598678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711158651.3A Pending CN109816107A (zh) 2017-11-20 2017-11-20 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法

Country Status (1)

Country Link
CN (1) CN109816107A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111476346A (zh) * 2020-02-28 2020-07-31 之江实验室 一种基于牛顿共轭梯度法的深度学习网络架构
CN113515822A (zh) * 2021-01-28 2021-10-19 长春工业大学 一种基于归零神经网络的张拉整体结构找形方法
WO2021208808A1 (en) * 2020-04-14 2021-10-21 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
US11222201B2 (en) 2020-04-14 2022-01-11 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999756A (zh) * 2012-11-09 2013-03-27 重庆邮电大学 基于gpu实现pso-svm对道路标志的识别方法
CN105303252A (zh) * 2015-10-12 2016-02-03 国家计算机网络与信息安全管理中心 基于遗传算法的多阶段神经网络模型训练方法
CN106503803A (zh) * 2016-10-31 2017-03-15 天津大学 一种基于拟牛顿方法的受限玻尔兹曼机迭代映射训练方法
CN106528357A (zh) * 2016-11-24 2017-03-22 天津大学 基于拟牛顿法在线训练神经网络的fpga系统及实现方法
CN106775905A (zh) * 2016-11-19 2017-05-31 天津大学 基于fpga的高级综合实现拟牛顿算法加速的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999756A (zh) * 2012-11-09 2013-03-27 重庆邮电大学 基于gpu实现pso-svm对道路标志的识别方法
CN105303252A (zh) * 2015-10-12 2016-02-03 国家计算机网络与信息安全管理中心 基于遗传算法的多阶段神经网络模型训练方法
CN106503803A (zh) * 2016-10-31 2017-03-15 天津大学 一种基于拟牛顿方法的受限玻尔兹曼机迭代映射训练方法
CN106775905A (zh) * 2016-11-19 2017-05-31 天津大学 基于fpga的高级综合实现拟牛顿算法加速的方法
CN106528357A (zh) * 2016-11-24 2017-03-22 天津大学 基于拟牛顿法在线训练神经网络的fpga系统及实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JIAJUN LI.ET AL: ""Neural Network Training Acceleration with PSO Algorithm on a GPU Using OpenCL"", 《PROCEEDING OF THE 8TH INTERNATIONAL SYMPOSIUM ON HIGHLY EFFICIENT ACCELERATORS AND RECONFIGURABLE TECHNOLOGIES》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111476346A (zh) * 2020-02-28 2020-07-31 之江实验室 一种基于牛顿共轭梯度法的深度学习网络架构
CN111476346B (zh) * 2020-02-28 2022-11-29 之江实验室 一种基于牛顿共轭梯度法的深度学习网络架构
WO2021208808A1 (en) * 2020-04-14 2021-10-21 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
US11222201B2 (en) 2020-04-14 2022-01-11 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks
GB2610098A (en) * 2020-04-14 2023-02-22 Ibm Cooperative neural networks with spatial containment constraints
US11734939B2 (en) 2020-04-14 2023-08-22 International Business Machines Corporation Vision-based cell structure recognition using hierarchical neural networks and cell boundaries to structure clustering
US11734576B2 (en) 2020-04-14 2023-08-22 International Business Machines Corporation Cooperative neural networks with spatial containment constraints
CN113515822A (zh) * 2021-01-28 2021-10-19 长春工业大学 一种基于归零神经网络的张拉整体结构找形方法

Similar Documents

Publication Publication Date Title
CN110689115B (zh) 神经网络模型处理方法、装置、计算机设备及存储介质
US11568258B2 (en) Operation method
JP6348561B2 (ja) マルチコア最適化リカレントニューラルネットワーク用のシステムおよび方法
US10872290B2 (en) Neural network processor with direct memory access and hardware acceleration circuits
CN108090565A (zh) 一种卷积神经网络并行化训练加速方法
US12014130B2 (en) System and method for ESL modeling of machine learning
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
CN104346629A (zh) 一种模型参数训练方法、装置及系统
US12406175B2 (en) Method and apparatus with model optimization, and accelerator system
CN109816107A (zh) 一种基于异构计算平台的bfgs拟牛顿神经网络训练算法
CN105488565A (zh) 加速深度神经网络算法的加速芯片的运算装置及方法
CN111429974B (zh) 超级计算机平台上的分子动力学模拟短程力并行优化方法
Chrétien et al. GPU robot motion planning using semi-infinite nonlinear programming
CN110580519A (zh) 一种卷积运算结构及其方法
CN110516316A (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
Andri et al. Going further with winograd convolutions: Tap-wise quantization for efficient inference on 4x4 tiles
CN114816067A (zh) 一种基于向量指令集实现类脑计算的方法及装置
CN109816103A (zh) 一种pso-bfgs神经网络训练算法
CN102662322B (zh) 一种fpga处理器及pid膜优化神经网络控制器
CN107527071A (zh) 一种基于花朵授粉算法优化模糊k近邻的分类方法及装置
CN109359542A (zh) 基于神经网络的车辆损伤级别的确定方法及终端设备
JP2022502724A (ja) データを処理するための方法、装置、および関連製品
CN110309918A (zh) 神经网络在线模型的验证方法、装置和计算机设备
WO2021013117A1 (en) Systems and methods for providing block-wise sparsity in a neural network
US20250251973A1 (en) Task manager, processing device, and method for checking task dependencies thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190528

RJ01 Rejection of invention patent application after publication