一种基于遗传算法的分布式参数服务器更新方法与流程

文档序号:15357722发布日期:2018-09-05 00:12阅读:815来源:国知局

本发明涉及人工智能领域,更具体地,涉及一种基于遗传算法的分布式参数服务器更新方法。



背景技术:

典型的包含参数服务器的深度学习系统结构包括一个或多个参数服务器节点,多个工作节点。参数服务器节点共同维护和更新全局共享参数,彼此可以互相通信,多个工作节点保存一部分输入的训练数据集,彼此之间没有通信,各自利用数据集进行前向传播和后向传播计算得到新的模型梯度,并及时发回参数服务器,跟参数服务器交换最近的模型参数,从而进行下一轮的训练。

在同步的数据并行模式中,随机梯度下降(sgd,stochasticgradientdescent)算法被普遍使用,它在每次梯度计算中,训练数据集分划分为包含多个样本的小批量数据子集,每个工作节点完成一个完整的迭代需要进行以下四个步骤:

工作节点从参数服务器pull拉取最新的参数副本。

工作节点从本地训练数据集中取出最新的一批数据进行计算,得到新的参数梯度。

工作节点将新的计算的参数梯度推送给参数服务器。

参数服务器汇总各个工作节点的梯度,并进行计算更新参数。

其中第一步和第三步的参数交换是阻塞式网络通信即同步通信,第二跟第四步是模型训练准确率提升的关键所在。从最开始alexsmola采用分布式的memcache缓存技术作为存放参数的存储,用于不同工作节点之间同步模型参数,到现在最新的李沐提出的第三代参数服务器架构,关注点一直放在如何缩短参数交换的时间,解决工作节点与参数服务器的通信瓶颈,而第四步参数更新的计算一直沿用先汇总所有工作节点的梯度,最新的参数等于当前参数减去汇总后的平均参数梯度与学习速率的乘积的办法,与本发明最相似的是在除考虑梯度的因素外,为了防止过拟合,使用正则化方法在目标函数中增加了参数范数惩罚项,使得参数更新时需要减去梯度和权重衰减两部分的影响。

目前,参数服务器的主要作用仍然是负责存储和更新参数,但是在同步的数据并行模式下,每个工作节点想要拉取最新的参数进行下一批数据的训练时需要等待参数服务器汇合所有工作节点的梯度并进行计算,在此之前一直处于阻塞状态,造成了时间的浪费。并且参数服务器的职责过于单一,利用梯度进行更新的办法计算简单,没有考虑不同工作节点产生的参数梯度对整体训练效果的影响,因此需要较多的迭代次数才能达到较高的准确率。



技术实现要素:

本发明提供一种较高的准确率的基于遗传算法的分布式参数服务器更新方法。

为了达到上述技术效果,本发明的技术方案如下:

一种基于遗传算法的分布式参数服务器更新方法,包括以下步骤:

s1:参数服务器接收到各工作节点发送的损失值loss;

s2:使用二进制编码方法对各工作节点的损失值loss进行编码;

s3:使用随机方法产生初始群体;

s4:对初始群体中的每一个个体进行适应度计算;

s5:采用轮盘赌选择方法对群体中的个体进行选择计算;

s6:使用单点交叉方法对已经选用的个体进行交叉运算;

s7:使用随机变异对进行过交叉运算后的个体进行变异运算;

s8:判断进行变异运算后的群体的适应度总和是否增加;若有增加,跳转到步骤s4,若没有增加就跳转到s9;

s9:取出适应度最高的个体基因作为最优解;

s10:参数服务器根据最优解对各个工作节点的参数进行取舍来更新参数。

进一步地,所述步骤s5的过程是:

s51:计算所有个体适应度的总和sum;

s52:计算出每个个体的适应度与sum的比值;

s53:每个概率值组成一个区域,全部概率值之和为1;

s54:在[0,1]区间产生一个均匀分布的伪随机数r;

s55:根据r的值出现在哪一个概率区选定此概率区的个体基因;

s56:重复步骤s54-s55,重复m次后选出m个个体。

进一步地,所述步骤s6的过程如下:

s61:首先对已选用的m个个体进行随机配对;

s62:随机设置交叉点位置;

s63:以交叉概率p1、使用单点交叉来相互交换配对个体之间的部分基因。

进一步地,所述步骤s7的过程如下:

s71:对于已选用的个体,随机产生变异点位置;

s72:按照p2概率将变异点的原有基因按照基本位变异的方法进行变异,即取反。

进一步地,所述交叉概率p1为0.3,所述变异概率p2为0.1。

与现有技术相比,本发明技术方案的有益效果是:

本发明在工作节点前向传播计算出损失函数的损失值loss后,就将损失值发送给参数服务器,参数服务器此时就可以利用损失值进行遗传算法的选择,并等待各工作节点后向传播计算出各层参数的梯度,发送回来。即利用了同步等待的时间,来根据损失值对工作节点的参数进行评估,进行一定的筛选,并使用交叉变异增加随机性,使得参数更新时不再使用所有的梯度的加和,而是对于收敛性好的工作节点的参数会保留,对于收敛性差的工作节点的参数进行丢弃。每一次迭代时同样经历一代筛选,经过多代筛选后,得到最优的个体基因型,将其对应到工作节点的梯度选用上,从而运用到参数更新中,使得训练过程的整体误差能在有限时间内下降,准确率上升。

附图说明

图1为本发明方法流程图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

如图1所示,一种基于遗传算法的分布式参数服务器更新方法,包括以下步骤:

s1:参数服务器接收到各工作节点发送的损失值loss;

s2:使用二进制编码方法对各工作节点的损失值loss进行编码;

s3:使用随机方法产生初始群体;

s4:对初始群体中的每一个个体进行适应度计算;

s5:采用轮盘赌选择方法对群体中的个体进行选择计算;

s6:使用单点交叉方法对已经选用的个体进行交叉运算;

s7:使用随机变异对进行过交叉运算后的个体进行变异运算;

s8:判断进行变异运算后的群体的适应度总和是否增加;若有增加,跳转到步骤s4,若没有增加就跳转到s9;

s9:取出适应度最高的个体基因作为最优解;

s10:参数服务器根据最优解对各个工作节点的参数进行取舍来更新参数。

适应度函数选择:遗传算法中以个体适应度的大小来评定各个个体的优劣程度,从而决定遗传机会的大小,并且适应度函数与目标函数一般是正相关的。在此问题中,目标函数为非负值,并且是一个求得所有工作节点的损失值的最小值的函数。因此,将适应度函数设为此基因型带入后损失值之和的倒数。

把当前群体中适应度较高的个体按照某种规则遗传到下一代群体中,即适应度较高的个体,繁殖下一代的数目较多,而适应度较小的个体,繁殖下一代的数目较少,甚至被淘汰。

终止条件判断:

经过逐轮迭代,即对第五步得到的群体作为第一步的初始群体继续计算,进化,直到最优个体的适应度和群体适应度总和不再上升,算法收敛,我们将最优个体的解与工作节点参数的取舍对应,根据得到的最优个体的基因型(也就是一个m位的无符号二进制数),从第一位到第m位分别对应第一个工作节点的参数梯度到第m个工作节点的参数梯度,如果取0表示参数服务器不汇总此工作节点的梯度,如果取1则反之。最后参数服务器根据选取进行汇总的参数梯度的平均值更新参数得到新的参数值,并等待工作节点拉取新的参数。

步骤s5的过程是:

s51:计算所有个体适应度的总和sum;

s52:计算出每个个体的适应度与sum的比值;

s53:每个概率值组成一个区域,全部概率值之和为1;

s54:在[0,1]区间产生一个均匀分布的伪随机数r;

s55:根据r的值出现在哪一个概率区选定此概率区的个体基因;

s56:重复步骤s54-s55,重复m次后选出m个个体。

步骤s6的过程如下:

s61:首先对已选用的m个个体进行随机配对;

s62:随机设置交叉点位置;

s63:以交叉概率p1、使用单点交叉来相互交换配对个体之间的部分基因。

步骤s7的过程如下:

s71:对于已选用的个体,随机产生变异点位置;

s72:按照p2概率将变异点的原有基因按照基本位变异的方法进行变异,即取反。

交叉概率p1为0.3,所述变异概率p2为0.1。

本方法在工作节点前向传播计算出损失函数的损失值loss后,就将损失值发送给参数服务器,参数服务器此时就可以利用损失值进行遗传算法的选择,并等待各工作节点后向传播计算出各层参数的梯度,发送回来。即利用了同步等待的时间,来根据损失值对工作节点的参数进行评估,进行一定的筛选,并使用交叉变异增加随机性,使得参数更新时不再使用所有的梯度的加和,而是对于收敛性好的工作节点的参数会保留,对于收敛性差的工作节点的参数进行丢弃。每一次迭代时同样经历一代筛选,经过多代筛选后,得到最优的个体基因型,将其对应到工作节点的梯度选用上,从而运用到参数更新中,使得训练过程的整体误差能在有限时间内下降,准确率上升。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1