首页 / 专利库 / 人工智能 / 人工神经网络 / 前馈神经网络 / 深度神经网络 / 一种基于分布式编码的随机梯度下降优化方法

一种基于分布式编码的随机梯度下降优化方法

阅读:869发布:2020-05-08

专利汇可以提供一种基于分布式编码的随机梯度下降优化方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于分布式编码的随机梯度下降优化方法,针对在大规模分布式集群上面临的计算 节点 异构和通讯负载 瓶颈 带来的梯度延迟和效率下降的问题,基于分布式编码提出一种适应节点负载均衡的异步随机梯度下降优化 算法 。主要通过在数据交换阶段针对参数更新时产生的数据通信进行编码优化,并使用一种基于负载均衡策略通过对节点计算能 力 进行实时估计,优化节点间的任务分配,改善梯度延迟问题。本算法可以缓解由于梯度延迟问题导致的 深度神经网络 的损失函数难以收敛的问题,能够对大规模神经网络上的训练性能带来较好的提升,从而保证了提高了分布式神经网络训练算法的性能。,下面是一种基于分布式编码的随机梯度下降优化方法专利的具体信息内容。

1.一种基于分布式编码的随机梯度下降优化方法,其特征在于,包括如下内容:
定义存在一个n个节点分布式集群为 在该集群上训练一个
有K层神经元的深度神经网络,定义前向第l层神经元为 训练的第j批次
的训练样本为Fj,且j∈{1,2,...X},X为整个待处理样本集总个数除以Fj的大小,当前训练任务的运行时间为t,每一个待处理样本为 的大小为 当t=0时,初始化步骤4至步骤10的运算过程均发生于给定的节点Nq、指定神经网络的层Ll、批次Fj、以及编号为i的样本块 上,使用四元组下标标识所述样本块为F(q,l,j,i);当某个对象的存在与某个下标对应的维度无关时,该维度被标记为任意符号 即与神经网络层编号无关的在节点Nq上、批次为Fj且全局编号为i的样本块表示为
步骤1:对n个节点进行排列组合,取任意r个节点组成一组子集合
将全部的可能的组合 组成集合 集合 有
个元素,
步骤2:将同一个批次的训练集Fj划分为 个样本块,在t时刻,以比例
划分批次样本Fj为 个样本块
同理,集合 也有 个元素;
步骤3:从集合 中取元素 从集合 中取元素 其中 是一个样本块, 是一组节点组成的集合;依次将 包含的样本发送到 表示的节点上,即每一个子集合 中的所有节点均接收到同样的样本块 重复上述过程直到每一个样本块 都被发送给了对应的中所有的节点上;此时,每一个节点上存在的待处理样本块个数一共为 每个样本被拷贝并发送到r个不同的节点上;
步骤4:在每一个节点上分别执行梯度下降计算,其过程为:在每个本地节点Nq上对接收到的所有样本块 执行完整的前向传播,即从输入层输出层一整套完整的神经网络计算过程,在输出层根据对应的损失函数计算损失;
步骤5:依反向传播算法次序在每一层 上执行如下内容:将损失函数对该层 所算出的梯度矩阵进行编码;对节点Nq拥有的μ个同批次样本块,即: 在层
计算所得的所有梯度矩阵结果,即: 中取任意r个元素进行组合,
将第s个组合结果记作 其中q表示节点下标,l表示层下标,j表示样本批次下标,( 代表可能的一
种排列组合结果),将所有的结果组成的结果集合记作 并存在数据库中留作下一步解码,所述( 共有 个元素, );
步骤6:将集合 中的元素 进行拆分,所述 为矩阵,其行数为
列数为 当 时,进行按行拆分,当 时,进行按列拆
分;
将拆分得到的子矩阵集合记作 其
中q表示节点下标,l表示层下标,j表示样本批次编号, 代表样本块编号,s表示集合的编号,k对应拆分的子矩阵下标;
步骤7:对步骤5中的每一个样本块 找到其在数据分发时对应的分发节点子集合 将 中的节点下标编号cq进行升序排序,获取
当前下标节点Nq在有序排列后的节点列表中的位置,记作α,将节点要发送的矩阵记作将要发送的目标节点集合记作
步骤8:执行以下两步操作:
其中Δ是求对称差集的操作符号;重复执行步骤6至8,直到处理完所有集合 中的所有拆分结果 执行步骤9;
步骤9:对应每个节点Nq,在层 上,使用批次样本Fj计算所得的梯度矩阵组合 生成一个待发送数据矩阵 和一个与之对应的发送目标节点列表 将每一个
逐一发送到对应的节点列表 中的节点上,且使用多播方式进行批量发送;
步骤10:在节点Nq上,将其从节点 上接收的在层 上,使用批次样本Fj计算所得的数据包记作 节点Nq上缺少的样本块为 由 计算
得出的梯度矩阵为 将这些矩阵 的拆分子矩阵记作
其中q表示节点下标,l表示层下标,j表示样本批次编号,iv代
表本节点Nq缺少的样本块编号,k对应子矩阵下标;将本节点Nq在步骤6中,由集合 中的元素 进行拆分得到的所有 集合起来,去除重复元素,所得集合为
其中q表示节点下标,l表示层下标,j表示样本批
次编号,iz代表本节点Nq已有的样本块编号,k对应拆分的子矩阵下标;如公式(2)所示,借助所述 计算缺失部分 其中x对应步骤8中打包的下标α:
当获取到所有的 后,用公式(3)拼接出矩阵M(q,l,j,i):
步骤11:通过M(q,l,j,i)还原完整的全局梯度 其计算公式如下:
使用 更新 层的权值,继续反向传播,重复步骤4,直到反向传播到输入层 执行步骤12;
步骤12:每个节点Nq独立记录从进入步骤4至进入步骤12的运行时间,记作Δtq,将当前时刻记作t,节点Nq的当前计算效率记作λq(t),节点Nq上每个拥有的样本块的大小记作 使用公式(5)进行计算:
节点将λq(t)上传至参数服务器
步骤13:在每个节点Nq上,从参数服务器下载获取所有的λq(t),q=0,1,…,n-1,使用公式(6)对λq(t)进行归一化:
定义a(t+1)和e(t)为如下形式:
e(t)=(e1(t),e2(t),…,en(t))
将分发矩阵记作 所述分发矩阵的行标代表节点下标,列标代表样本块
下标,元素aq,i=1代表节点q拥有样本块i,aq,i=0代表节点q不拥有样本块i,令A为系数矩阵, 为变量,e(t)为常数项,可得非齐次线性方程组(7)。
步骤14:上述方程组系数矩阵行数为n,列数为 r≥2且n>r,根据Pascal三形公式知 求解
2.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤6中,所述按行拆分包括如下内容:
取每个子矩阵的行数为 从上往下依次取 行,组成r个行数为 列
数为 的子矩阵,最后剩余的子矩阵行数不足 的话,则将剩余部分与第r个子矩阵合并,拆得r个子矩阵,记作
3.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤6中,所述按列拆分包括如下内容:
取每个子矩阵的列数为 从左向右依次取 列,组成r个行数为rowβ列数为的子矩阵,最后剩余的子矩阵规模不足 的,将剩余部分与第r个子矩阵合并,拆得r个子矩阵,记作
4.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤14中,当方程组的行数等于列数时, 方程组有唯一解
5.根据权利要求1所述的一种基于分布式编码的随机梯度下降优化方法,其特征在于,步骤14中,当方程组的行数大于列数时, 方程组无唯一解,变形为一个线性规划问题,解出一组可行解 使用
作为下一个时刻的分配方案,使用该分配方案依照比例
划分每一批次的训练集Fj,执行步骤2,如果当前损失或精度达到神经网络训练的目标要求,则停止训练,结束流程。

说明书全文

一种基于分布式编码的随机梯度下降优化方法

技术领域

[0001] 本发明涉及分布式计算架构,尤其涉及一种基于分布式编码的分布式随机梯度下降优化方法。

背景技术

[0002] 基于梯度下降算法的神经网络训练方式近年来受到广泛关注,然而受制于单台机器所能达到的性能的上限,分布式集群可以提高深度神经网络训练的速度。目前较为广泛
使用的深度神经网络分布式计算方法是异步梯度下降方法,其相对于参数平均化方法能够
更好的保证训练的精度,但是异步随机梯度下降方法所需的信息通信总量相较于参数平均
化有大幅的增加。同时异步随机梯度下降方法在节点异构性较大的情况下有一个显著的缺
点,即梯度延迟问题(Delayed gradient),异步随机梯度下降算法在更新权值参数的时候,
每个计算节点独立更新偏移量,不会在批次结束前等待其他计算节点计算完成,因此节点
更新的频次与节点计算性能有较大关系,当一个计算节点尝试将其部分梯度值计算结果更
新到全局参数上之前,可能已经存在其他计算速度较快的节点已经将全局参数更新了多
次。因此异步随机梯度下降算法在节点性能存在差异的情况下无法获得和同步随机梯度下
降相同的训练精度。

发明内容

[0003] 发明目的:本发明的目的是提供一种基于分布式编码和节点负载均衡策略的异步随机梯度下降优化方法,主要通过在数据交换阶段针对参数更新时产生的数据通信进行编
码优化,并使用一种基于负载均衡策略通过对节点计算能进行实时估计,以优化节点间
的任务分配,改善梯度延迟问题,解决目前大规模分布式集群上面临的计算节点异构和通
讯负载瓶颈带来的梯度延迟和效率下降的问题。
[0004] 技术方案:一种基于分布式编码的随机梯度下降优化方法,包括如下内容:
[0005] 假设存在一个n个节点分布式集群为 要在该集群上训练一个有K层神经元的深度神经网络(全连接多层感知机),假设前向第l层神经元为
训练的第j批次的训练样本为Fj,且j∈{1,2,...X},X为整个待处理样本
集总个数除以Fj的大小当前训练任务的运行时间为t,每一个待处理样本为 的大小
为 当t=0时,初始化
[0006] 步骤4至10所描述的运算过程均发生于给定的节点(节点编号为:q,节点为:Nq)、指定神经网络的层(层编号为:l,层为:Ll)、批次(批次编号为:j,批次为:Fj)、以及样本块
(样本块编号为:i,样本块为: )上,因此可以使用一个四元组下标标识一个符
号:例如在节点Na上、层Ll上、批次为Fj且全局编号为i的样本块为F(q,l,j,i)。当某个对象的存
在与某个下标对应的维度无关时,该维度被标记为任意符号 例如,与神经网络层编号无
关的在节点Nq上、批次为Fj且全局编号为i的样本块可以写为
[0007] 步骤1:对n个节点进行排列组合,取任意r个节点组成一组子集合将全部的可能的组合 组成集合 集合 有
个元素, 执行步骤2。
[0008] 步骤2:将同一个批次的训练集Fj划分为 个样本块,在t时刻,以比例划分批次样本Fj为 个样本块
类似,集合 也有 个元素。进入步骤3。
[0009] 步骤3:依照步骤1和2,得到了两个有 个元素的集合 和 每次从两个集合中取元素 和 其中 是一个样本块, 是一组节点组成的集合。依次将 包含的样本发送到
表示的节点上,即每一个子集合 中的所有节点均接收到同样的样本块 重复上述过
程直到每一个样本块 都被发送给了对应的 中所有的节点上。此时,每一个节点上存在
的待处理样本块个数一共为 每个样本被拷贝并发送到r个不同的节点上,进
入步骤4。
[0010] 步骤4:分配完样本块以后,需要在每一个节点上分别执行梯度下降计算,其过程为:在每个本地节点Nq上对接收到的所有样本块 执行完整的前向传播(即从输入层
输出层一整套完整的神经网络计算过程),在输出层根据对应的损失函数计算损失
(Loss),依反向传播算法次序在每一层 上执行步骤5。
[0011] 步骤5:将Loss函数对该层 所算出的梯度矩阵(梯度值是一个矩阵,其大小取决于神经网络结构)进行编码。对节点Nq拥有的所有μ个同批次样本块,即:
在层 计算所得的所有梯度矩阵结果,即:
中取任意r个元素进行组合,将第s个组合结果记作 其中q
表示节点下标,l表示层下标,j表示样本批次下标,
代表可能
的一种排列组合结果),将所有的结果组成的结果集合记作 并存在数据库中留作下
一步解码,进入步骤6。( 共有 个元素, )。
[0012] 步骤6:将集合 中的元素 进行拆分, 是一个矩阵,其行数为 列数为 当 时,按行进行拆分,进入情况1;当 时,
按列进行拆分,进入情况2。
[0013] 情况1:按行拆分
[0014] 取每个子矩阵的行数为 从上往下依次取 行,组成r个行数为列数为 的子矩阵,最后剩余的子矩阵行数不足 的话,则将剩余部分与
第r个子矩阵合并(即上一个合适大小的子矩阵),拆得r个子矩阵 ,记作
[0015] 情况2:按列拆分
[0016] 取每个子矩阵的列数为 从左向右依次取 列,组成r个行数为rowβ列数为 的子矩阵。最后剩余的子矩阵规模不足 的,将剩余部分与第r个子矩阵合并(即
上一个合适大小的子矩阵),拆得r个子矩阵,记作
[0017] 将拆分得到的子矩阵集合记作其中q表示节点下标,l表示层下标,j表示样本批次编号, 代表样本块编号,s表示集合
的编号,k对应拆分的子矩阵下标。执行步骤7。
[0018] 步骤7:对步骤5中的每一个样本块 找到其在数据分发时对应的分发节点子集合 将 中的节点下标编号cq进行升序排序,
获取当前下标节点Ng在有序排列后的节点列表中的位置,记作α,例如,在节点组合{N1,N2,
N3}中,节点N1对应的位置α=0,节点N3对应的位置α=2。将节点要发送的矩阵记作
将要发送的目标节点集合记作 执行步骤8。
[0019] 步骤8:执行以下两步操作:
[0020]
[0021] 其中Δ是求对称差集的操作符号(两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合)。重复执行步骤6至8,直到处理完所有集合
中的所有拆分结果 执行步骤9。
[0022] 步骤9:执行完上述步骤后,对应每个节点Nq,在层 上,使用批次样本Fj计算所得的梯度矩阵组合 部生成了一个待发送数据矩阵 和一个与之对应的发送目标
节点列表 将每一个 逐一发送到对应的节点列表 中的节点上,且使用
多播(Multicast)方式进行批量发送,然后进入执行步骤10。
[0023] 步骤10:编码时保证了每个节点获取的数据包中均可以通过已有信息解码获取所需信息。在节点Nq上,将其从节点 上接收的在层 上,使用批次样本Fj计算所得的数据包
记作 节点Nq上缺少的样本块为 由 计算得出
的梯度矩阵为 将这些矩阵 的拆分子矩阵记作
其中q表示节点下标,l表示层下标,j表示样本批次编号,iv代
表本节点Nq缺少的样本块编号,k对应子矩阵下标(子矩阵拆分参见步骤6)。将本节点Nq在步
骤6中,由集合 中的元素 进行拆分得到的所有 集合起来,去除重
复元素,所得集合为 其中q表示节点下标,l表示
层下标,j表示样本批次编号,iz代表本节点Nq已有的样本块编号,k对应拆分的子矩阵下标
(子矩阵拆分参见步骤6)。借助上述 计算缺失部分 如下公式(2)所示,其中x
对应步骤8中打包的下标α:
[0024]
[0025] 当获取到所有的 后,用公式(3)拼接出矩阵
[0026]
[0027] 并进一步执行步骤11。
[0028] 步骤11:通过 便可以还原完整的全局梯度 其计算公式如下:
[0029]
[0030] 使用 更新 层的权值,继续反向传播,重复步骤4,直到反向传播到输入层执行步骤12。
[0031] 步骤12:每个节点Nq独立记录从进入步骤4至进入步骤12的运行时间,记作Δtq,将当前时刻记作t,节点Nq的当前计算效率记作λq(t),节点Nq上每个拥有的样本块
的大小记作 使用公式(5)进行计算。
[0032]
[0033] 节点将λq(t)上传至参数服务器。执行步骤13。
[0034] 步骤13:在每个节点Nq上执行如下操作:从参数服务器下载获取所有的λq(t),q=0,1,...,n-1,使用公式(6)对λq(t)进行归一化。
[0035]
[0036] 定义a(t+1)和e(t)为如下形式:
[0037]
[0038] e(t)=(e1(t),e2(t),...,en(t))。
[0039] 将分发矩阵记作 (分发矩阵的行标代表节点下标,列标代表样本块下标,元素aq,i=1代表节点q拥有样本块i,aq,i=0代表节点q不拥有样本块i),令A为系数矩
阵, 为变量,e(t)为常数项,可得非齐次线性方程组(7)。
[0040]
[0041] 执行步骤14。
[0042] 步骤14:上述方程组系数矩阵行数为n,列数为 因为r≥2且n>r,所以根据Pascal三形公式可知 下面分为两种情况分别求解
[0043] 情况1:当行数等于列数时, 方程组有唯一解
[0044] 情况2:当方程组的行数大于列数时, 方程组无唯一解,可以变形为一个线性规划问题,解出一组可行解 使用
作为下一个时刻的分配方案,使用该分配方案依照比例
划分每一批次的训练集Fj,执行步骤2,如果当前损失或精度已经达到神经网络训练的目标
要求,则停止训练,结束流程。
[0045] 本发明提出的一种基于分布式编码的分布式随机梯度下降优化方法,与现有其他分布式随机梯度下降算法不同,主要体现在:第一,本方法使用了有序的样本数据分发方式
而不是随机样本分发;第二,本方法通过使用分布式编码的方式对中间结果数据进行了压
缩,并使用多播的方式有效降低了通讯负载;第三,本方法有机结合了分布式编码策略和基
于数据重分配的负载均衡策略。
[0046] 本发明具有如下显著优点:通过有效利用计算冗余换取额外的通信开销减免,能够有效消除通信瓶颈对分布式集群的影响。通过定制的数据交换策略能够为同步随机梯度
下降算法带来较大的计算效率提升。在实验结果中,随着冗余量的变化,记录各个算法到达
最小平均损失的时间。比较单一批次训练所需时间,上述改进方案相对于同步随机梯度下
降算法至少提升训练速度,比较收敛并稳定至指定损失函数值的时间,相较于异步随机梯
度下降算法的收敛速度提升。
附图说明
[0047] 图1为基于分布式编码的随机梯度下降优化算法流程示意图;
[0048] 图2为基于流程示意图。

具体实施方式

[0049] 下面结合说明书附图对本发明的具体实施方式进行说明。
[0050] 如图1-2所示,本发明设计了一种分布式编码的随机梯度下降优化算法,包括以下步骤:
[0051] 如果要在一个拥有四个计算节点的分布式集群上进行MNIST手写数字识别神经网络训练,神经网络为全连接多层感知机,共6层。使用r=2的冗余设置,样本数目为60000,批
次大小为360。
[0052] 步骤1:对节点N1,N2,N3,N4进行排列组合,总共有 种组合方案,记作D1,D2,...,D6。D1={N1,N2},D2={N1,N3},...,D6={N3,N4}。组合结果记作
[0053] 步骤2:将上述60000个样本依照每份360个样本的大小均等划分为166个样本批次,多余部分样本舍弃。取其中第一个要计算的样本批次Fj,初始化样本块大小
依照比例 划分为 个样本
块,每块包含360/6=60个样本,组成集合
[0054] 步骤3:按照对应一一发送样本块到目标节点上。第一块样本 发送到集合D1={N1,N2}表示的节点N1,N2上,第二块样本 发送到集合D2={N1,N3}表示的节点N1,N3上,以此
类推。此时,每个节点上的待处理样本块数目为 块。
[0055] 步骤4:在每个节点Nq上根据自己获得的样本 执行梯度下降计算,其中q表示节点下标,l表示层下标,j表示样本批次编号,iz代表本节点Nq已有的样本块编号。
[0056]
[0057] 步骤5:以当前节点为节点N1为例,其拥有样本块F(1,l,j,1),F(1,l,j,2),F(1,l,j,3),首先反向传播算法执行到层 由这些样本块计算得梯度矩阵G(1,6,j,1),G(1,6,j,2),G(1,6,j,3),取其中r=2个梯度矩阵进行组合,得三种组合结果在其他节点N2,N3,N4
上依次执行类似操作。
[0058] 步骤6:可以对节点N1上得到的 中的子集合中的矩阵进行拆分,每个矩阵拆分为r=2份。{{G(1,6,j,1),G(1,6,j,2)},{G(1,6,j,1),G(1,6,j,3)},{G(1,6,j,2),G(1,6,j,3)}}中的一个结果{G(1,6,j,1),G(1,6,j,2)}的拆分结果集合记作 那么结果为
依次将 中的所有组合结果矩阵进行拆分,
得:
[0059]
[0060] 在其他节点N2,N3,N4上依次执行类似操作。
[0061] 步骤7:上述梯度矩阵G(1,6,j,1),G(1,6,j,2),G(1,6,j,3)在步骤3中对应的分发节点集合为D1={N1,N2},D2={N1,N3},D3={N1,N4},以第一个要发送的数据组合为例,初始化要发送的目标数据H0=0,
要发送的目标节点
[0062] 步骤8:累加以获取要发送的数据包,对应其中一个拆分结果梯度矩阵G(1,6,j,1)由F(1,6,j,1)计算所得,其对应的分
发节点集合为D1={N1,N2},节点N1在其中的位置下标α=0,梯度矩阵G(1,6,j,2)由F(1,6,j,2)计算所得,其对应的分发节点集合为D2={N1,N3},节点N1在其中的位置下标α=0,因此应当发
送梯度矩阵G(1,6,j,1)的上半部分和梯度矩阵G(1,6,j,2)的上半部分。即
发送的目标节点集合T0计算如下:
[0063]
[0064] 步骤9:遍历 中的所有组合结果,执行步骤8,将得到的所有要发送的数据多播到要发送的节点上。
[0065] 步骤10:对于节点N2,其拥有样本块 计算所得的梯度矩阵{G(2,6,j,1),G(2,6,j,4),G(2,6,j,5)},当其接收到节点N1发送的数据 时,可以使用已有的 解出其缺失的部分 计算过程为: 其他数
据包按照以上方法依次解出,本算法保证每个节点的每个组合在其发送到目标上后均可以
完整解出。对于其他节点N1,N3,N4执行类似操作解出其缺失数据。
[0066] 步骤11:借助解出的数据内容,使用批次大小执行权值归一化,计算公式如下:
[0067]
[0068] 继续执行梯度下降过程:
[0069]
[0070]
[0071] 步骤12:每个节点Nq独立记录从步骤4至步骤11之前的运行时间并上传数据至参数服务器。以节点N1为例,将其从进入步骤4至进入步骤12的运行时间记作Δt1,将当前时刻
记作t,节点N1的当前计算效率记作λ1(t),每个样本块 的大小记作 算得计算
效率:
[0072]
[0073] 节点N1将λ1(t)上传至参数服务器。
[0074] 步骤13:在每个节点Nq上执行如下操作:从参数服务器下载获取所有的λq(t),q=1,2,3,4对λq(t)进行归一化,得
[0075]
[0076] 定义 和e(t)为如下形式:e(t)=(e1(t),e2(t),e3(t),e4(t))。可得非齐次线性方程组:
[0077]
[0078] 其中:
[0079]
[0080] 步骤14:因为系数矩阵A不可逆,方程组无唯一解,可以将其转换为线性规划问题,求解得一组可行解向量 向量 中的每一个元素
对应一个样本块占总样本数目的比例,那么向
量 对应的一组值即可作为一组分配方案。使用该分配方案依照比例划分每一批次
的训练集Fj,执行步骤2,如果当前损失或精度已经达到神经网络训练的目标要求,则停止
训练,结束流程。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈