用于机器训练的方法和装置与流程

文档序号:16506391发布日期:2019-01-05 09:03阅读:423来源:国知局
用于机器训练的方法和装置与流程

本公开涉及一种用于机器训练的方法和装置。



背景技术:

现有的分布式机器训练平台,在每一轮训练中,都需要定时通过同步/异步通信的方式将本地计算得到的梯度数据进行合并,并根据合并后的梯度数据更新训练的机器的参数,然后进行下一轮的训练。而且越复杂的机器模型,其参数维度越多,相应的每一轮中得到的用于调整这些参数的梯度数据的维度也越大,这样会造成分布式集群内的通信成本代价更高,整体的计算通信效率比较低下。



技术实现要素:

本公开的一个方面提供了一种用于机器训练的方法。所述方法包括以下列操作进行每一轮的训练:获取分配至机器的训练数据,所述机器的各个维度的参数为当前参数集合中对应维度的元素;基于所述机器对所述训练数据的输出结果,获得表征对所述当前参数集合中的所述各个维度的元素进行调整的本地梯度数据集合;从所述本地梯度数据集合采样,获得样本梯度数据集合;将所述样本梯度数据集合发送给所述至少一个参数服务器,所述至少一个参数服务器用于对接收到的梯度数据按照所述各个维度对应合并以得到合并梯度数据集合,以及对所述当前参数集合按照所述合并梯度数据集合进行调整,获得新的参数集合;以及接收所述至少一个参数服务器发送的所述新的参数集合,以更新所述当前参数集合。

可选地,从所述本地梯度数据集合采样,获得样本梯度数据集合,包括使用马尔科夫链蒙特卡洛采样法对所述本地梯度数据集合采样,获得所述样本梯度数据集合。

可选地,所述样本梯度数据集合中的元素在所述各个维度的分布与所述本地梯度数据集合中的元素在所述各个维度的分布一致。可选地,所述样本梯度数据集合能够用于所述至少一个参数服务器通过数据插值来近似所述本地梯度数据集合。

可选地,所述样本梯度数据集合中的元素包括所述本地梯度数据集合中预定数量的全局最优值,其中所述全局最优值包括所述本地梯度数据集合中在所有维度的分布中绝对值最大的元素,所述预定数量为按照预定规则确定的所述样本梯度数据集合的数据个数。

可选地,获得表征对所述当前参数集合中的所述各个维度的元素进行调整的本地梯度数据集合,包括基于所述机器对所述训练数据的输出结果与预设的标准输出的偏差,获取本轮梯度数据集合,以及将前一轮训练中的剩余梯度数据集合与所述本轮梯度数据集合按照所述各个维度对应累积,获得所述本地梯度数据集合,其中,所述前一轮训练中的剩余梯度数据集合包括所述前一轮训练的本地梯度数据集合减去所述前一轮的样本梯度数据集合之后的梯度数据的集合。

本公开的另一方面提供了一种用于机器训练的装置。所述装置包括训练数据获取模块、本地梯度数据获取模块、样本梯度数据获取模块、新参数获取模块以及参数更新模块。训练数据获取模块用于对于所述分布式系统中的每一个机器,获取分配至机器的训练数据,所述机器的各个维度的参数为当前参数集合中对应维度的元素。本地梯度数据获取模块用于基于所述机器对所述训练数据的输出结果,获得表征对所述当前参数集合中的所述各个维度的元素进行调整的本地梯度数据集合。样本梯度数据获取模块用于从所述本地梯度数据集合采样,获得样本梯度数据集合。新参数获取模块用于将所述样本梯度数据集合发送给所述至少一个参数服务器,所述至少一个参数服务器用于对接收到的梯度数据按照所述各个维度对应合并以得到合并梯度数据集合,以及对所述当前参数集合按照所述合并梯度数据集合进行调整,获得新的参数集合。参数更新模块用于接收所述至少一个参数服务器发送的所述新的参数集合,以更新所述当前参数集合。

可选地,所述样本梯度数据集合中的元素在所述各个维度的分布与所述本地梯度数据集合中的元素在所述各个维度的分布一致。

可选地,所述样本梯度数据集合中的元素包括所述本地梯度数据集合中预定数量的全局最优值,其中所述全局最优值包括所述本地梯度数据集合中在所有维度的分布中绝对值最大的元素,所述预定数量为按照预定规则确定的所述样本梯度数据集合的数据个数。

可选地,本地梯度数据获取模块,具体用于基于所述机器对所述训练数据的输出结果与预设的标准输出的偏差,获取本轮梯度数据集合,以及将前一轮训练中的剩余梯度数据集合与所述本轮梯度数据集合按照所述各个维度对应累积,获得所述本地梯度数据集合,其中,所述前一轮训练中的剩余梯度数据集合包括所述前一轮训练的本地梯度数据集合减去所述前一轮的样本梯度数据集合之后的梯度数据的集合。

本公开的另一方面提供了一种非易失性存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

本公开的另一方面提供了一种用于机器训练的系统,包括存储有可执行指令的一个或多个存储器,及一个或多个处理器。所述处理器执行所述指令以实现如上所述的方法。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开实施例的用于机器训练的方法和装置的应用场景;

图2示意性示出了根据本公开实施例的用于机器训练的方法的流程图;

图3示意性示出了根据本公开另一实施例的用于机器训练的方法中获得本地梯度数据集合的方法流程图;

图4示意性示出了根据本公开实施例的本地梯度数据集合中的数据在各个维度的分布的示例;

图5a和图5b示意性示出了根据本公开实施例的对图4示出的本地梯度数据集合进行两种不同方式采样得到的样本梯度数据集合中的数据的分布示例;

图6示意性示出了根据本公开实施例的用于机器训练的装置的框图;以及

图7示意性示出了根据本公开实施例的适用于机器训练的计算机系统的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。本领域技术人员还应理解,实质上任意表示两个或更多可选项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一方、或两个项目的可能性。例如,短语“a或b”应当被理解为包括“a”或“b”、或“a和b”的可能性。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

本公开的实施例提供了一种用于机器训练的方法和装置。该方法包括以下列操作进行每一轮的训练:获取分配至机器的训练数据,该机器的各个维度的参数为当前参数集合中对应维度的元素;基于该机器对该训练数据的输出结果,获得表征对该当前参数集合中的该各个维度的元素进行调整的本地梯度数据集合;从该本地梯度数据集合采样,获得样本梯度数据集合;将该样本梯度数据集合发送给该至少一个参数服务器,该至少一个参数服务器用于对接收到的梯度数据按照该各个维度对应合并以得到合并梯度数据集合,以及对该当前参数集合按照该合并梯度数据集合进行调整,获得新的参数集合;以及接收该至少一个参数服务器发送的该新的参数集合,以更新该当前参数集合。

根据本公开实施例的方法和装置,在进行机器训练的过程中,通过对本地梯度数据集合进行采样获得样本梯度数据集合,进而在该机器向该至少一个参数服务器发送梯度数据时可以仅发送样本梯度数据集合,极大地降低了该机器与该至少一个参数服务器之间传输的梯度数据的数据量,降低了训练过程中的通信成本,提高了整体的通信效率。

更进一步地,根据本公开实施例的方法和装置,从本地梯度数据中进行采样,将采样得到的样本梯度数据进行发送,可以较好地保留机器训练得到的原有梯度数据的统计特性。

图1示意性示出了根据本公开实施例的用于机器训练的方法和装置的应用场景100。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,该应用场景100为采用参数服务器(parameterserver)架构的分布式训练平台。该应用场景100包括训练数据trainningdata、至少一个参数服务器server(s)、以及多个工作节点worker1~workerm。该多个工作节点worker1~workerm与至少一个参数服务器server(s)之间通过push和pull通信。

在分布式训练平台中,训练数据trainningdata被分配给多个工作节点worker1~workerm,从而可以对该多个工作节点worker1~workerm并行训练,提高了训练效率。

该多个工作节点worker1~workerm中的每一个对应于一个要训练的机器。此处机器的意思为machine,即要训练的模型,例如可以是各种神经网络、svm支持向量机或者回归分析模型等。该多个工作节点worker1~workerm分别根据被分配到本地的训练数据、以及对应的机器的当前参数w1~wm,对应计算得到本地梯度数据g1~gm,然后分别将本地梯度数据g1~gm通过push发送给至少一个参数服务器server(s)。梯度数据g1~gm中的每一个梯度数据都可以是具有多个维度的数据集合,表示的是机器的参数的变化方向以及变化速度。例如,梯度数据g1的维度与要训练的机器的参数的维度一致,梯度数据g1在不同维度上的取值的绝对值表示机器的当前参数中对应维度的值的变化速度,正负可以表示变化方向。

至少一个参数服务器server(s)具体用于将获得的梯度数据g1~gm进行合并,得到合并梯度数据g1+...+gm。然后根据该合并梯度数据g1+...+gm更新机器的当前参数,得到新的参数w。然后,至少一个参数服务器server(s)通过pull将该新的参数w发送给该多个工作节点worker1~workerm中的每一个,以使该多个工作节点worker1~workerm中的每一个更新其对应的机器的当前参数。

该多个工作节点worker1~workerm与至少一个参数服务器server(s)之间可以通过同步或者异步通信。

图1所示的分布式训练平台中,每一轮的训练流程大致如下:

第1步,该多工作节点worker1~workerm对应的机器的当前参数分别是w1~wm。在该前提下,该多工作节点worker1~workerm分别根据分配到本地的训练数据对对应的机器进行训练,并对应计算得到本地梯度数据g1~gm。

第2步,该多工作节点worker1~workerm将各自计算得到的本地梯度数据g1~gm通过push发送给至少一个参数服务器server(s)。

第3步,该至少一个参数服务器server(s)将获得的梯度数据g1~gm进行合并,得到合并梯度数据g1+...+gm,然后根据合并梯度数据g1+...+gm更新机器的参数,得到新的参数w。

第4步,该至少一个参数服务器server(s)将该新的参数w通过pull发送给该多工作节点worker1~workerm,以更新该多工作节点worker1~workerm中的每一个工作节点对应的机器的参数。

基于该分布式训练平台的工作流程可以看出,在机器训练过程中分布式集群内部需要大量的数据通信。可想而知,越复杂的机器模型,其参数维度越多,相应的每一轮训练中需要传输梯度数据的维度也越大,数据量也会越大。

在现有技术中为了解决梯度数据的数据量大的问题,有一些解决策略是将原始梯度数据压缩后再进行发送。然而将原始梯度数据压缩后再解压可能会导致在参数服务器端解压后的数据与原始梯度数据不同,丢失统计特性。例如,压缩时是抽取梯度数据的部分统计特性参数(例如平均值、方差和/或个数等)来压缩,以表征原始梯度数据的分布特性。但是往往原始梯度数据是多维度的,其分布可能是无法准确获取的、甚至难以解析的。这样解压缩后得到的梯度数据可能与原始梯度数据相差较大。

根据本公开实施例的方法和装置,在进行机器训练的过程中,通过对本地梯度数据进行采样,并将采样数据发送给该至少一个参数服务器,不仅能够有效地降低分布式集群内部的数据通信成本,可以在一定程度上较好地保留在本地得到的原有梯度数据的统计特性。

根据本公开实施例的用于机器训练的方法,可以应用于该多工作节点worker1~workerm中的任意一个或多个中。相应的,根据本公开实施例的用于机器训练的方法,可以设置于该多工作节点worker1~workerm中的任意一个或多个中。

可以理解,本公开中多处使用集合的概念(例如,本地梯度数据集合、样本梯度数据集合、当前参数集合以及新的参数集合)是为了便于理解和说明这些数据是包括了多个维度的数据的集合,这不应构成对本公开的限定。在实际应用中,也常见将本地梯度数据与本地梯度数据集合等同的情形,类似情形不一而足,不再赘述。

图2示意性示出了根据本公开实施例的用于机器训练的方法的流程图。

如图2所示,根据本公开实施例,该用于机器训练的方法可以应用于图1中示例的分布式系统。该方法中每一轮的训练包括操作s201~s205。

在操作s201,获取分配至机器的训练数据,该机器的各个维度的参数为当前参数集合中对应维度的元素。

在操作s202,基于该机器对该训练数据的输出结果,获得表征对该当前参数集合中的该各个维度的元素进行调整的本地梯度数据集合。根据本公开的实施例,本地梯度数据集合可能是多维度稀疏的,而且其分布可能是不确定的。

在操作s203,从该本地梯度数据集合采样,获得样本梯度数据集合。在采样过程中,例如可以预先设置一定的采样比例(例如按照总数据量的10%进行采样),或者例如可以预先设置采样的数据量(例如,从2万数据中总共采样200个数据)。具体地采样方法可以是多种多样,在实际应用中可以根据需要进行选取。根据本公开的实施例,操作s203中例如可以使用马尔科夫链蒙特卡洛(markovchainmontecarlo)采样法对该本地梯度数据集合采样,获得该样本梯度数据集合。

然后,在操作s204,将该样本梯度数据集合发送给该至少一个参数服务器。该至少一个参数服务器用于对接收到的梯度数据按照该各个维度对应合并以得到合并梯度数据集合,以及对该当前参数集合按照该合并梯度数据集合进行调整,获得新的参数集合。

之后,在操作s205,接收该至少一个参数服务器发送的该新的参数集合,以更新该当前参数集合。

根据本公开实施例,在进行机器训练的过程中,通过对本地梯度数据集合进行采样获得样本梯度数据集合,进而在该机器向该至少一个参数服务器发送数据时可以仅发送样本梯度数据集合,极大地降低了该机器与该至少一个参数服务器之间传输的梯度数据的数据量,降低了训练过程中的通信成本,提高了训练过程中的通信效率。

更进一步地,根据本公开实施例的方法和装置,从本地梯度数据中进行采样,将采样得到的样本梯度数据进行发送,可以较好地保留在本地得到的原有梯度数据的统计特性。

根据本公开的实施例,操作s203中使用马尔科夫链蒙特卡洛采样法对该本地梯度数据集合进行采样是无偏的,可以最优地保证原有梯度数据的统计特性。

马尔可夫链蒙特卡洛采样方法是在贝叶斯理论框架下,通过计算机进行模拟的蒙特卡洛方法。在马尔可夫链蒙特卡洛采样方法中马尔科夫链转移核的构造至关重要。具体采样时,可以从本地梯度数据集合中的任意一个采样数据出发,根据马尔科夫链转移核获得下一个被接受的采样数据,接着从该被接受的采样数据出发,再根据马尔科夫链转移核获得接下来的下一个被接受的采样数据。以此方式不断迭代,当迭代次数足够多时,采样会收敛于该本地梯度数据集合中的特定数据,而与初始选择的采样数据无关。

在马尔可夫链蒙特卡洛采样方法中,不同的转移核构造方法,将产生不同的马尔可夫链蒙特卡洛采样方法。例如,通过metropolis-hastings算法,可以使得采样得到的样本梯度数据集合与本地梯度数据集合的分布基本一致。又例如,通过模拟退火simulatedannealing算法,可以使得采样得到的样本梯度数据集合中的元素为该本地梯度数据集合中全局最优值。

根据本公开的实施例,在操作s203中采样获得的样本梯度数据集合中各元素在各个维度的分布与本地梯度数据集合中的元素在该各个维度的分布基本一致。如前所述,这样的样本梯度数据集合,例如可以采用通过metropolis-hastings算法构造马尔科夫链转移核的马尔可夫链蒙特卡洛采样方法进行采样获得。在这种情况下,样本梯度数据集合最大限度地保留了采样前的本地梯度数据集合的分布特性。

更进一步地,根据本公开的一些实施例,在操作s204将该样本梯度数据集合发送至该至少一个参数服务器之后,该至少一个参数服务器可以对该样本梯度数据集合中的数据通过数据插值来近似该本地梯度数据集合。其中,数据插值的方法可以是样条插值、lagrange插值、newton插值或者hermite插值等任意一种。通过这种方式,根据本公开实施例的方法,一方面降低了该机器与该至少一个参数服务器之间传输的梯度数据的数据量,另一方面在该至少一个参数服务器中通过插值近似还原原有的本地梯度数据,在一定程度上保证了该至少一个参数服务器在生成新的参数时的信息完整性。在另一些实施例中,该至少一个参数服务器也可以对该样本梯度数据集合中的数据通过数据拟合来近似该本地梯度数据集合。

根据本公开的另一些实施例,在操作s203中采样获得的样本梯度数据集合中各个元素为本地梯度数据集合中预定数量的全局最优值。其中该全局最优值例如可以是该本地梯度数据集合中在所有维度的分布中绝对值最大的元素。该预定数量为按照预定规则确定的该样本梯度数据集合的数据个数(例如,预先确定的采样比例,或者预先确定的采样个数)。如前所述,这样的样本梯度数据集合,例如可以采用通过模拟退火simulatedannealing算法构造马尔科夫链转移核的马尔可夫链蒙特卡洛采样方法采样获得。由于梯度数据在不同维度上的取值的绝对值表示当前参数集合中对应维度的值的变化速度,因此,绝对值越大的梯度数据表征对应维度的参数变化速度就越快,因而这些梯度数据就越重要。根据本公开的实施例,样本梯度数据集合中的元素为本地梯度数据集合中预定数量的全局最优值,这样在该机器与该至少一个参数服务器之间传输的梯度数据时,是指上是将影响最为显著的部分梯度数据进行传输,有效的降低了该机器与该至少一个参数服务器之间的通信成本。

更进一步地,根据本公开的一些实施例,对于采样后本地剩余的剩余梯度数据(即,本地梯度数据集合中除去样本梯度数据集合后剩余的梯度数据),可以留存本地进行下一轮运算的累积。尤其是对于样本梯度数据集合中的元素为该本地梯度数据集合中预定数量的全局最优值的情形,这时因为在这种情形下,样本梯度数据集合中的元素并不能完整反映本地梯度数据集合中的数据分布特性,因此该至少一个参数服务器难以通过该样本梯度数据集合来近似该本地梯度数据。在这种情况下,为避免丢弃梯度数据而导致训练次数的增加,可以将这些本地剩余的梯度数据留存本地,在下一轮训练中与下一轮训练得到的梯度数据进行对应维度的累积。

相应地,本轮训练中得到的本地梯度数据也是由根据本轮训练计算得到的本轮梯度数据集合与上一轮留存的剩余梯度数据集合按照对应维度累积获得的,具体可以参照图3的方法流程示意。

图3示意性示出了根据本公开另一实施例的用于机器训练的方法中操作s202获得本地梯度数据集合的方法流程图。

如图3所示,根据本公开的实施例,操作s202可以包括操作s212和操作s222。

在操作s212,基于该机器对该训练数据的输出结果与预设的标准输出的偏差,获取本轮梯度数据集合。

在操作s222,将前一轮训练中的剩余梯度数据集合与该本轮梯度数据集合按照该各个维度对应累积,获得该本地梯度数据集合,其中,该前一轮训练中的剩余梯度数据集合包括该前一轮训练的本地梯度数据集合减去该前一轮的样本梯度数据集合之后的梯度数据的集合。

以此方式,该本地梯度数据集合包括了本轮计算输出的梯度数据,也包括了前一轮采样后剩余的梯度数据,能够在降低数据通信成本的同时,使得训练过程中的梯度数据得到充分利用。

以下结合图4示出的本地梯度数据分布、以及图5a和图5b中示意的两种不同采样方式获得的样本梯度数据分布,对本公开实施例的方法进行进一步更直观更形象地说明。

图4示意性示出了根据本公开实施例的本地梯度数据集合中的数据在各个维度的分布的示例。可以理解的是,本地梯度数据集合中是大量的离散数据。在图4中示意成连续的曲线是为了表现出数据的分布形态。并且,在实际中,往往本地梯度数据集合中的数据量非常大(例如上百万个),并且可能具有很高的维度。因此,在实际中,本地梯度数据集合中的数据分布形态往往是不确定的、不可知的。

在图4的示例中,该本地梯度数据集合中包括大量的数据(每一个交叉点示例为一个数据点)。该本地梯度数据集合中的数据分布被示例为在空间中一个大丘陵周围四个山头的形状,垂直于水平面的竖直坐标的大小可以表示每个数据点的大小。

图5a和图5b示意性示出了根据本公开实施例的对图4示出的本地梯度数据集合进行两种不同方式采样得到的样本梯度数据集合中的数据分布示例。

图5a和图5b中黑色的圆点代表样本梯度数据集合中的数据。为了表现出样本梯度数据集合与本地梯度数据集合之间的关系,图5a和图5b是在图4的数据分布基础上示意出了样本梯度数据集合中的数据的位置。

在图5a的示意中,在操作s203获得的样本梯度数据集合中的元素在该各个维度形成的分布形态与该本地梯度数据集合中的元素在该各个维度的分布形态一致。具体地,如前所述,该样本数据集合可以是,采用通过metropolis-hastings算法构造马尔可夫链蒙特卡洛转移核的马尔可夫链蒙特卡洛采样方法获得的。

结合图1和图5a,根据本公开实施例的用于机器训练的方法的具体实现运算代码示例如下:

workers

1.pullparameters,samplenumbersnorratessetburn-initeratesm

2.initializex(0)andsett=0

3.forb=0tom

-func_quantization()

4.fori=0ton-1

-func_quantization(i)%%采样以近似模拟本地梯度数据分布

5.sendingnsamplestoparameterserver

parameter-server

1.initializeallparameters

2.fori=0tonworkers

-gt(w)=func_interpolation(gt(w))%%插值法近似原梯度数据

func_quantization()-metropolis-hastingalgorithm

1.generateaproposalstatex*fromq(x|x(i-1))

2.calculatetheproposalcorrectionfactor

3.calculatetheacceptanceprobability

4.drawarandomnumberμfromunif(0,1)

◆ifμ≤αaccepttheproposalstatex*andsetx(i)=x*

◆elsesetx(i)=x(i-1)

上述代码中metropolis-hastings算法采样的4个步骤示例性说明如下:

1.设置初始迭代值以及初始随机样本;

2.在当前已得到的随机样本的条件下,从建议分布proposaldistributionq(x)中抽取出一个新的提案样本c;

3.结合目标分布,计算提案样本c的接受率概率;

4.根据前第3步的接受率概率确定新的提案样本,然后进行下一轮迭代。

根据公开的实施例,样本梯度数据集合中的元素在各个维度的分布与该本地梯度数据集合中的元素在该各个维度的分布一致。该本地梯度数据集合中的数据分布可能是未知的或者并没有确定的解析方法,而且可能是高维度稀疏的。采用马尔可夫链蒙特卡洛法采样是无偏的。这样,该样本梯度数据集合在一定程度上能够最优的保证原有梯度数据局的统计特性。而且此种采样法会花费大部分时间在分布高稠密区进行采样,如果该本地梯度数据集合是稀疏的,则极大的减少了待发送的梯度数目。

在图5b的示意中,该样本梯度数据集合中的元素包括该本地梯度数据集合中预定数量的全局最优值。在图5b中为了清晰示意起见,画出一条虚线来示意性说明采样得到的数据点的值在全局范围内均大于该虚线对应的值。

具体地,如前所述,图5b中示意的样本梯度数据集合,可以是采用通过模拟退火simulatedannealing算法构造马尔可夫链蒙特卡洛转移核的马尔可夫链蒙特卡洛采样方法获得的。

结合图1和图5b,根据本公开实施例的用于机器训练的方法的具体实现运算代码示例如下:

workers

1.pullparameters

1.setsparsityrateorsparsitysamplenumbersn,burn-initeratesm

2.initializex(0)andsett=0

3.forb=0tom

-func_sparsity()

4.fori=0ton-1

-func_sparsity(i)%%采样意图抽取全局最优值

5.-sendingnsamplestoparameterserver,therestgraidentsareaccumulatedlocally%%发送样本梯度数据集合,剩余的梯度数据集合留存本地累积

parameter-server

1.initializeallparameters

2fori=0tonworkers

func_sparsity()-simulatedannealingalgorithm

上述代码中,模拟退火simulatedannealing算法的4个步骤示例性说明如下:

1.设置初始迭代值以及初始随机样本;

2.在当前已得到的随机样本的条件下,从建议proposaldistributionq(x)中抽取出一个新的提案样本;

3.结合目标分布,计算前一步得到的提案样本的接收率概率;

4.根据前一步的接收率概率确定新的提案样本,然后进行下一轮迭代。

根据本公开的实施例,由于本地梯度数据集合中的数据分布是未知的或者并没有确定的解析方法,而且可能是高维度稀疏的,采用马尔可夫链蒙特卡洛法采样是无偏的,而且在一定程度上能够最优的保证了原有数据的统计特性,并且此种采样法会花费大部分时间去寻找全局最大值,极大地增强了本地梯度数据集合的稀疏化。

图6示意性示出了根据本公开实施例的用于机器训练的装置600的框图。

如图6所示,装置600包括训练数据获取模块610、本地梯度数据获取模块620、样本梯度数据获取模块630、新参数获取模块640以及参数更新模块650。该装置600可以执行上面参考图2~图5b描述的方法,以实现每一轮的机器训练。

具体地,训练数据获取模块610例如可以执行操作s201,用于对于该分布式系统中的每一个机器,获取分配至机器的训练数据,该机器的各个维度的参数为当前参数集合中对应维度的元素。

本地梯度数据获取模块620例如可以执行操作s202,用于基于该机器对该训练数据的输出结果,获得表征对该当前参数集合中的该各个维度的元素进行调整的本地梯度数据集合。

样本梯度数据获取模块630例如可以执行操作s203,用于从该本地梯度数据集合采样,获得样本梯度数据集合。

新参数获取模块640例如可以执行操作s204,用于将该样本梯度数据集合发送给该至少一个参数服务器。该至少一个参数服务器用于对接收到的梯度数据按照该各个维度对应合并以得到合并梯度数据集合,以及对该当前参数集合按照该合并梯度数据集合进行调整,获得新的参数集合。

参数更新模块650例如可以执行操作s205,用于接收该至少一个参数服务器发送的该新的参数集合,以更新该当前参数集合。

根据本公开的实施例,该样本梯度数据集合中的元素在该各个维度的分布与该本地梯度数据集合中的元素在该各个维度的分布一致。

根据本公开的实施例,该样本梯度数据集合中的元素包括该本地梯度数据集合中预定数量的全局最优值,其中该全局最优值包括该本地梯度数据集合中在所有维度的分布中绝对值最大的元素,该预定数量为按照预定规则确定的该样本梯度数据集合的数据个数。

根据本公开的实施例,本地梯度数据获取模块620例具体用于基于该机器对该训练数据的输出结果与预设的标准输出的偏差,获取本轮梯度数据集合(操作s212),以及将前一轮训练中的剩余梯度数据集合与该本轮梯度数据集合按照该各个维度对应累积,获得该本地梯度数据集合(操作s222)。其中,该前一轮训练中的剩余梯度数据集合包括该前一轮训练的本地梯度数据集合减去该前一轮的样本梯度数据集合之后的梯度数据的集合。

根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,训练数据获取模块610、本地梯度数据获取模块620、样本梯度数据获取模块630、新参数获取模块640以及参数更新模块650中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,训练数据获取模块610、本地梯度数据获取模块620、样本梯度数据获取模块630、新参数获取模块640以及参数更新模块650中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,训练数据获取模块610、本地梯度数据获取模块620、样本梯度数据获取模块630、新参数获取模块640以及参数更新模块650中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图7示意性示出了根据本公开实施例的适用于机器训练的计算机系统700的框图。图7示出的计算机系统700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括处理器710、和计算机可读存储介质720。该计算机系统700可以执行根据本公开实施例的方法。

具体地,处理器710例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器710还可以包括用于缓存用途的板载存储器。处理器710可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质720,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质720可以包括计算机程序721,该计算机程序721可以包括代码/计算机可执行指令,其在由处理器710执行时使得处理器710执行根据本公开实施例的方法或其任何变形。

计算机程序721可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序721中的代码可以包括一个或多个程序模块,例如包括721a、模块721b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器710执行时,使得处理器710可以执行根据本公开实施例的方法或其任何变形。

根据本发明的实施例,训练数据获取模块610、本地梯度数据获取模块620、样本梯度数据获取模块630、新参数获取模块640以及参数更新模块650中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理器710执行时,可以实现上面描述的相应操作。

本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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