当前位置: 首页 > 专利查询>中山大学专利>正文

一种用于分布式深度学习的压缩梯度的方法技术

技术编号:20486697 阅读:23 留言:0更新日期:2019-03-02 19:43
本发明专利技术公开了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。

A Compression Gradient Method for Distributed Deep Learning

The present invention discloses a compression gradient method for distributed depth learning, which uses the entropy of gradient matrix calculated at each layer to judge the amount of information contained in the gradient layer, and to judge the importance of each gradient layer. Then, we use the entropy to calculate the gradient of the percentage of each layer, which can not only reduce the impact of human experience, but also effectively compress the gradient without reducing the accuracy.

【技术实现步骤摘要】
一种用于分布式深度学习的压缩梯度的方法
本专利技术涉及分布式训练和深度学习,更具体的说是涉及一种用于分布式深度学习的压缩梯度的方法。
技术介绍
随着大数据和高效计算资源的出现,深度学习在人工智能的很多领域都取得了重大突破。然而,面对越来越复杂的任务,数据和深度学习模型的规模都变得日益庞大。为了提高深度学习模型的训练效率,减少训练时间,采用了分布式技术来执行训练任务。通过增加训练节点的数量和利用数据并行的优势,可以极大减少在同等规模训练数据上的前向反向的总计算时间。然而,在反向计算出每一层的梯度之后,梯度交换的成本很高,工作节点之间需要频繁地进行梯度通信,而且由于反向计算出的梯度大部分会趋近于0,而这样的梯度对之后的训练是没有帮助的。所以由并行训练带来的计算时间上的节省,可能将不足以补偿通信时间上代价的增长。因此,网络带宽成为分布式训练规模化的最大瓶颈。对于这样的瓶颈,目前主要有两种解决方法,梯度量化和梯度稀疏化。梯度量化主要是将梯度量化到低精度值以减少通信带宽,主要的方法是1bit量化。梯度稀疏化又叫做阈值量化,在现有的技术中,梯度稀疏化的方法主要依靠人工定义的恒定的阈值或固定的比例来确定需要发送的梯度。因此,如何提供一种减少人工经验对于训练效果的影响,且不降低准确率的用于分布式深度学习的压缩梯度的方法是本领域技术人员亟需解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。为了实现上述目的,本专利技术提供如下技术方案:一种用于分布式深度学习的压缩梯度的方法,包括如下具体步骤:步骤1:工作节点读入本地的一批训练数据到内存中;步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;其中,所述压缩梯度的具体步骤如下:步骤51:初始化层数l为1,并且判断层数l是否小于或等于所述深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的梯度计算平均值根据平均值h(i)计算出每个区间的梯度占这一层总梯度的概率值步骤53:根据每个区间占这一层总梯度的概率值P(i),利用熵的计算公式计算出每一层的梯度的熵值步骤54:每一层的梯度的熵的取值范围是0≤Hl≤log|m|;利用计算出的熵值Hl以及熵的最大值log|m|,计算出这一层所要发送梯度的百分比步骤55:利用所述百分比K,对这一层的梯度进行降序排序,对排序后的梯度选择前百分之K的梯度发送给其他的工作节点;步骤56:在选择发送前百分之K的梯度后,将之前初始化的每个梯度的梯度残差G进行更新;步骤57:更新完每个梯度的梯度残差G之后,将层数l加1,然后判断层数l是否小于或等于L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1。步骤58:判断是否本地还存在没有训练的数据分片,如果存在则进行下一次迭代训练执行步骤1,如果没有则表示训练完成。需要了解的是:对于神经网络的训练,在开始训练神经网络的时候,会对初始化模型参数和梯度残差进行随机初始化,在对初始化模型参数和梯度残差进行初始化之前,会对初始化模型参数和梯度残差进行定义,但是这时初始化模型参数和梯度残差并没有初始值,所以判断初始化模型参数和梯度残差是否有初始值,如果有则不是第一次迭代,如果没有则是第一次迭代。进一步需要了解的是:深度学习的基本模块:卷积层,池化层,全链接层。其中步骤3中的线性变换具体指通过卷积运算,可以使原信号特征增强,并且降低噪音。主要是对输入数据进行卷积运算,用一个可训练的滤波器去卷积一个输入的数据,计算公式为:xl=f((∑xl-1*Kl+bl));非线性变换具体指针对池化层,一般的方法是最大池化。主要作用是:减少网络的参数来减小计算量,并且能够在一定程度上控制过拟合。其中最大池化是用不重叠的矩形框将输入层分成不同的区域,对于每个矩形框的数取最大值作为输出层。优选的,在上述的一种用于分布式深度学习的压缩梯度的方法中,所述步骤56中更新梯度残差分两种情况:(1)若梯度已经发送给其他工作节点,则该梯度的梯度残差G=0;(2)若梯度未发送给其他工作节点,则该梯度的梯度残差G=G+u。经由上述的技术方案可知,与现有技术相比,本专利技术公开提供了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。本专利技术考虑到梯度的熵值体现了梯度的重要性,利用每一层的梯度的熵值,通过和最大值的比例来确定需要发送的梯度的百分比,而且,在本专利技术中虽然需要给定区间个数m,其中m的取值对整个层的梯度的熵值的计算并没有多大影响,这样就有效的减少了人工的经验所带来的负面的影响。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1附图为本专利技术的流程图;图2附图为本专利技术的步骤3中线性变换示意图;图3附图为本专利技术的步骤3中非线性变换示意图;图4附图为本专利技术的卷积神经网络模型图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例公开了一种用于分布式深度学习的压缩梯度的方法,利用每一层计算出的梯度矩阵的熵来判断这一层梯度中所包含信息的多少,以此来判断每一层梯度的重要性。之后,利用熵来计算出每一层需要发送多少百分比的梯度,这样既可以减少人工经验的影响,又可以在保证不降低准确率的情况下有效的对梯度进行压缩。一种用于分布式深度学习的压缩梯度的方法,包括如下具体步骤:步骤1:工作节点读入本地的一批训练数据到内存中;步骤2:判断是否是第一本文档来自技高网...

【技术保护点】
1.一种用于分布式深度学习的压缩梯度的方法,其特征在于,包括如下具体步骤:步骤1:工作节点读入本地的一批训练数据到内存中;步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;其中,所述压缩梯度的具体步骤如下:步骤51:初始化层数l为1,并且判断层数l是否小于或等于所述深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的梯度计算平均值...

【技术特征摘要】
1.一种用于分布式深度学习的压缩梯度的方法,其特征在于,包括如下具体步骤:步骤1:工作节点读入本地的一批训练数据到内存中;步骤2:判断是否是第一次迭代训练,如果是第一次迭代训练则初始化模型参数,同时初始化梯度残差G执行步骤3;如果不是第一次迭代训练则执行步骤3;步骤3:工作节点利用读入的样本数据及对应的期望输出,进行前向传播;在前向传播的过程中,深度神经网络的每一层接受上层的输入x,通过线性变换输出y、非线性变换输出z,作为下一层的输入,最后一层的输出作为深度神经网络的输出;步骤4:工作节点根据前向传播的最后一层的输出与样本数据的期望输出的误差得到损失值Loss;根据损失值Loss进行反向传播,逐层计算参数梯度u;步骤5:工作节点在每一层计算出梯度u之后,对计算出的梯度u进行压缩梯度的处理;其中,所述压缩梯度的具体步骤如下:步骤51:初始化层数l为1,并且判断层数l是否小于或等于所述深度学习模型的层数L,若小于或等于则执行步骤52,若大于则读取数据进行下一次迭代的训练执行步骤1;步骤52:对于工作节点训练第l层神经网络计算出的梯度u(l),将梯度平均分成m个区间;假设每个梯度区间中包含j个梯度,对每个区间的...

【专利技术属性】
技术研发人员:匡迪吴维刚
申请(专利权)人:中山大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1