本发明涉及图像识别以及神经网络,具体涉及一种基于多路npu的模块化神经网络训练平台。
背景技术:
1、随着海量数据的出现,人工智能技术迅速发展。机器学习等是人工智能发展到一定阶段的必然产物,其致力于通过计算的手段,从大量数据中挖掘有价值的潜在信息。
2、在现有技术中,图像识别已经被广泛使用,如构建图像识别神经网络进行零件分类、缺陷识别以及人像识别等等,在使用这些神经网络进行图像识别之前,往往需要对神经网络进行训练。神经网络训练指对人工神经网络训练。向神经网络输人足够多的样本,通过一定算法调整网络的结构(主要是调节权值),使网络的输出与预期值相符,这样的过程就是神经网络训练。而现有图像识别神经网络的训练过程主要通过多次对神经网络进行梯度下降训练,以获取训练好的神经网络,但是此过程存在耗时较久,且训练效果不佳的问题,从而导致图像识别效果不佳。
技术实现思路
1、本发明的目的在于提供一种基于多路npu的模块化神经网络训练平台,解决了现有技术中存在的问题。
2、本发明通过下述技术方案实现:
3、一种基于多路npu的模块化神经网络训练平台,包括训练数据及npu数据获取模块、划分模块、第一核心初始化模块、第一更新模块、第二核心初始化模块、第二更新模块、循环模块以及输出模块;
4、所述训练数据及npu数据获取模块用于,获取待训练神经网络模型,并确定多路npu中空闲的核心,得到多个目标核心;
5、所述划分模块用于,将多个所述目标核心划分为两部分,得到第一核心组以及第二核心组,所述第一核心组用于进行第一并行训练,所述第二核心组用于进行第二并行训练;
6、所述第一核心初始化模块用于,在第一核心组中每个第一核心上部署多个待训练神经网络模型,得到第一待训练神经网络模型,并分别为多个第一待训练神经网络模型生成初始的网络参数值,得到第一待训练神经网络模型对应的第一网络参数向量,完成第一核心的初始化;
7、所述第一更新模块用于,采用并行运行的方式同时运行所有第一核心,且针对第一核心中每个第一待训练神经网络模型,采用全局最优网络参数引导算法以及并行数据优化算法对每个第一待训练神经网络模型的第一网络参数向量进行第一更新,直至第一更新的次数到达上限,根据第一网络参数向量确定每个第一核心中的局部最优网络参数向量;
8、所述第二核心初始化模块用于,在第二核心组中第二核心上部署多个待训练神经网络模型,得到第二待训练神经网络模型,根据第一核心中的局部最优网络参数向量,采用归约法确定全局最优网络参数向量,并将该全局最优网络参数向量作为第二核心上第二待训练神经网络模型初始的网络参数,得到第二待训练神经网络模型对应的第二网络参数向量,完成第二核心的初始化;
9、所述第二更新模块用于,采用并行运行的方式同时运行所有第二核心,且针对第二核心中每个第二待训练神经网络模型,采用并行权重优化算法对每个第二待训练神经网络模型的第二网络参数向量进行第二更新,直至第二更新的次数到达上限或者满足迭代结束要求,结束第二更新;
10、所述循环模块用于,当第二更新的次数到达上限时,将第二核心中的第二网络参数向量作为全局最优网络参数向量,并返回第一更新步骤;
11、所述输出模块用于,当满足迭代结束要求时,将第二核心中的第二网络参数向量作为待训练神经网络的最终网络参数,完成待训练神经网络模型的训练。
12、在一种可能的实施方式中,为多个第一待训练神经网络模型生成初始的网络参数值,包括:采用在网络参数上限与网络参数下限之间随机生成网络参数的方法生成第一待训练神经网络模型的网络参数值,或者采用混略序列策略生成第一待训练神经网络模型的网络参数值。
13、在一种可能的实施方式中,采用全局最优网络参数引导算法以及并行数据优化算法对每个第一待训练神经网络模型的第一网络参数向量进行第一更新,直至第一更新的次数到达上限,根据第一网络参数向量确定每个第一核心中的局部最优网络参数向量,包括:
14、a1、并行获取第一待训练神经网络模型的第一网络参数向量所对应的第一适应度;
15、a2、根据第一适应度确定每个第一网络参数向量的第一历史最优值,得到第一历史最优值以及第一历史最优值对应的第一适应度;
16、a3、根据第一网络参数向量对应的第一历史最优值所对应的第一适应度,采用归约法确定第一核心中的局部最优网络参数向量;
17、a4、判断是否到达第一最大更新次数阈值,若是,则输出第一核心中的局部最优网络参数向量,否则采用全局最优网络参数引导算法对第一网络参数向量进行更新,并返回步骤a1。
18、在一种可能的实施方式中,根据第一网络参数向量对应的第一历史最优值所对应的第一适应度,采用归约法确定第一核心中的局部最优网络参数向量,包括:
19、根据第一网络参数向量对应的第一历史最优值所对应的第一适应度,得到n个第一适应度;
20、将第i个第一适应度与第n-i个第一适应度进行比较,选取较大的第一适应度进入下一轮比较,直至选取的第一适应度的数量仅为一个,得到第一核心中的局部最优网络参数向量;其中,当n为奇数时,中间的数直接进入下一轮比较。
21、在一种可能的实施方式中,采用全局最优网络参数引导算法对第一网络参数向量进行更新包括:
22、对第i个第一网络参数向量执行第一引导更新为:
23、
24、其中,f(t)表示第t次局部训练时产生的[0,1]之间的随机数,且所有f(t)均匀分布,xi(t)表示第t次局部训练时第i个第一网络参数向量,i=1,2,…,l,l表示第一网络参数向量的总数,xi(t+1)表示更新后的xi(t);xi,best(t)表示在前t次局部训练过程第i个第一网络参数向量对应的适应度最大的状态,即第i个第一网络参数向量的历史最优值;表示所有第一网络参数向量的历史最优值对应的平均值;xbest表示全局最优值,当第一次循环过程中,此时各第一核心独立运行,并不知道全局最优值,因此将第一核心中的局部最优网络参数向量作为全局最优值;ω(t)表示第t次局部训练时的惯性权重;
25、将所有第一网络参数向量分割为两部分,一部分为k个较优网络参数向量,另一部分为k个较劣网络参数向量;所述k个较优网络参数向量为适应度最大的一半第一网络参数向量,当第一网络参数向量为奇数时,适应度最大的第一网络参数向量不参与分割;
26、根据k个较优网络参数向量,获取网络参数中心向量为:
27、
28、其中,c(t)表示网络参数中心向量,xk(t)表示第k个较优网络参数,f(xk(t)表示第k个较优网络参数的适应度;
29、根据网络参数中心向量c(t),对较劣网络参数向量执行第二引导更新为:
30、xk'(t+1)=xk'(t)+rand*(c(t)-xk'(t))
31、其中,xk'(t)表示第k'个较劣网络参数向量,xk'(t+1)表示更新后的xk'(t),rand表示(0,1)之间的随机数;
32、判断较劣网络参数向量在第二引导更新后的适应度是否大于第二引导更新前的适应度,若是,则接受较劣网络参数向量xk'(t)的第二引导更新,完成对第一网络参数向量的更新,否则拒绝较劣网络参数向量xk'(t)的第二引导更新,完成对第一网络参数向量的更新。
33、在一种可能的实施方式中,所述惯性权重为:
34、
35、其中,ωmax表示惯性权重最大值,ωmin表示惯性权重最小值,iter表示对第一网络参数向量进行更新的最大次数,t表示对第一网络参数向量进行更新的当前次数。
36、在一种可能的实施方式中,采用并行权重优化算法对每个第二待训练神经网络模型的第二网络参数向量进行第二更新,直至第二更新的次数到达上限或者满足迭代结束要求,包括:
37、b1、为第二核心上每个第二待训练神经网络模型构建一个任务节点,构建一个主任务节点,并为每个任务节点划分私有内存以及划分一个公共内存;
38、b2、初始化迭代计数器t'=1,初始化尺度矩阵bt'=i;
39、b3、针对所有第二待训练神经网络模型,获取第二待训练神经网络模型对应的误差函数值e(wt'),并将该误差函数值e(wt')放入公共内存中,以供各个任务节点调用;其中,误差函数值e(wt')通过任意任务节点上的第二待训练神经网络模型获取,wt'表示第t'训练时第二待训练神经网络应用的第二网络参数向量;
40、b4、获取第二待训练神经网络模型的梯度矩阵并将尺度矩阵bt'以及梯度矩阵gt'放入公共内存中,以供各个任务节点调用;其中,梯度矩阵gt'中的每列为第二待训练神经网络模型中一个网络参数的梯度;
41、其中,i表示单位尺度矩阵,表示梯度算子,e(wt')表示误差函数,wt'表示第二待训练神经网络模型对应的权重向量,bt'为m阶方阵,m表示第二待训练神经网络模型的权重维数;
42、b5、各个任务节点并行运行,且为各个任务节点从公共内存中调用尺度矩阵bt'以及梯度矩阵gt',确定第m个任务节点上第二待训练神经网络的搜索方向dm为尺度矩阵bt'中第m行数据与梯度矩阵gt'中第m列数据的乘累加数据;其中,m=1,2,…,m,搜索方向dm存储于第m个任务节点对应的私有内存中;
43、b6、各个任务节点并行运行,且为各个任务节点从其私有内存中调取搜索方向dm,根据搜索方向dm并采用黄金分割法确定该任务节点上第二待训练神经网络模型中第m个网络参数对应的更新步长λm,并将更新步长λm存储于第m个任务节点对应的私有内存中;
44、b7、各个任务节点并行运行,且为各个任务节点从其私有内存中调取更新步长λm,并根据更新步长λm对任务节点上第二待训练神经网络模型中第m个网络参数进行更新;根据第m个任务节点上第二待训练神经网络模型的第m个更新过的网络参数,获取第m个梯度分量;
45、b9、各个任务节点并行运行,根据第m个梯度分量,重新确定第m个任务节点对应的梯度矩阵gm,并根据该梯度矩阵gm对第m个任务节点对应的尺度矩阵bt'进行更新;
46、b10、通过各个任务节点输出尺度矩阵bt'中第m列元素以及第二待训练神经网络模型对应的第m个网络参数至主任务节点;
47、b11、通过主任务节点将m个网络参数构成更新后的第二网络参数向量,并判断更新后的第二网络参数向量对应的适应度是否大于设定的阈值,若是,则满足迭代结束要求,并结束第二更新的流程,否则进入步骤b12;
48、b12、判断迭代计数器t'的计数值是否大于上限,若是,则确定第二更新的次数到达上限,并结束第二更新的流程,否则令迭代计数器t'的计数值加一,将各个任务节点输出尺度矩阵bm中第m列元素组成尺度矩阵bt',将更新后的第二网络参数向量作为所有任务节点上第二待训练神经网络模型的网络参数,并返回步骤b3。
49、在一种可能的实施方式中,获取第二待训练神经网络模型对应的误差函数值e(wt')为:
50、
51、其中,s=1,2,…,s,s表示训练样本总数,n=1,2,…,n,n表示第二待训练神经网络模型对应的输出神经元总数;yn(xs,wt')表示当第二待训练神经网络模型以训练样本xs为输入,以wt'为网络参数时,第二待训练神经网络模型第n个输出神经元的实际输出;dsn表示yn(xs,wt')对应的期望输出;dmax,n表示所有训练样本对应的第n个期望输出中的最大值,每个训练样本对应一个期望输出向量;dmin,n表示所有训练样本对应的第n个期望输出中的最小值。
52、在一种可能的实施方式中,根据搜索方向dm并采用黄金分割法确定该任务节点上第二待训练神经网络模型中第m个网络参数对应的更新步长λm,包括:
53、采用搜索方向dm构建一个只有一行的搜索矩阵d,该搜索矩阵中第m个元素为搜索方向dm,其他元素为0,搜索矩阵的元素总数与第二待训练神经网络模型的网络参数总数相同;
54、构建一个只有一列的步长矩阵λ',该步长矩阵中第m个元素为待确定的更新步长λm,其他元素为0,步长矩阵的元素总数与第二待训练神经网络模型的网络参数总数相同
55、根据搜索矩阵d以及搜索矩阵d构建求解条件并对该求解条件进行求解,确定更新步长λm;
56、根据更新步长λm对任务节点上第二待训练神经网络模型中第m个网络参数进行更新为:
57、wm'=wm+λmdm
58、其中,wm表示第二待训练神经网络模型中第m个网络参数,wm'表示更新后的wm。
59、在一种可能的实施方式中,根据第m个梯度分量,重新确定第m个任务节点对应的梯度矩阵gm,并根据该梯度矩阵gm对第m个任务节点对应的尺度矩阵bt'进行更新,包括:
60、以梯度矩阵gt'为基础,采用第m个梯度分量更新梯度矩阵gt'中第m个元素,得到第m个任务节点对应的梯度矩阵gm;
61、根据所述第m个任务节点对应的梯度矩阵gm,对第m个任务节点对应的尺度矩阵bt'进行更新为:
62、
63、其中,bt''表示更新后的bt',w表示权重差量矩阵,w=wt''-wt',wt''表示根据更新步长λm更新过后的第二待训练神经网络模型的权重向量,wt'表示更新前的第二待训练神经网络模型的权重向量,t表示转置,z=gm-gt',z表示梯度差量矩阵。
64、本发明提供的一种基于多路npu的模块化神经网络训练平台,基于多路npu,并采用全局最优网络参数引导算法、并行数据优化算法以及并行权重优化算法对待训练的神经网络模型进行训练,不仅提高了神经网络模型的训练效果,还有效地减少了神经网络的训练时间,提高了神经网络的训练效果,从而提高了图像识别的准确率。