分布式随机梯度下降的自适应学习率调度的制作方法

文档序号:18871446发布日期:2019-10-14 19:39阅读:183来源:国知局
分布式随机梯度下降的自适应学习率调度的制作方法

本发明涉及分布式随机梯度下降(sgd),更具体地说,涉及分布式sgd中的自适应学习率调度。



背景技术:

随机梯度下降(sgd)是一种用于最小化目标函数的方法。可以在机器学习中使用sgd以迭代目标函数,以便将错误最小化并从而增加所构建的模型中的正确性。传统上,使用对训练数据串行工作的单个处理器来执行sgd。但是,由于训练数据量很大,等待单个处理器的速度可能会非常慢。



技术实现要素:

一种用于执行机器学习的方法包括使用中央参数服务器向第一模型学习器(learner)分配第一处理作业。第一处理作业包括基于第一状态的参数集求解第一梯度。使用中央参数服务器向第二模型学习器分配第二处理作业。第二处理作业包括基于第一状态的参数集求解第二梯度。在第一模型学习器中执行第一处理作业。基于第一处理作业的执行的结果,将参数集从第一状态迭代到第二状态。在第二模型学习器中执行第二处理作业。基于第一处理作业的执行的结果,将参数集从第一状态迭代到第三状态。基于第一状态的参数集和第三状态的参数集之间的差异,来确定第二梯度的求解的陈旧性程度。基于第二处理作业的执行的结果和与所确定的陈旧性程度成比例的学习率,将参数集从第二状态迭代到第四状态。

用于执行机器学习器的系统包括中央参数服务器,其被配置为异步地分配处理作业和管理参数集。多个模型学习器与中央参数服务器通信,并且被配置为接收分配的处理作业和参数集并从中求解梯度。中央参数服务器还被配置为针对每个分配的处理作业设置与对应的陈旧性程度成反比的学习率。

用于执行随机梯度下降的计算机程序产品包括计算机可读存储介质,其具有与其一起体现的程序指令。程序指令由计算机可执行以使计算机通过计算机向第一模型学习器分配第一处理作业。第一处理作业包括基于第一状态的参数集求解第一梯度。通过计算机向第二模型学习器分配第二处理作业。第二处理作业包括基于第一状态的参数集求解第二梯度。在第一模型学习器中执行第一处理作业。基于第一处理作业的执行结果,通过计算机将参数集从第一状态迭代到第二状态。在第二模型学习器中执行第二处理作业。基于第一处理作业的执行结果,通过计算机将参数集从第一状态迭代到第三状态。通过计算机基于第一状态的参数集和第三状态的参数集之间的差异,确定第二梯度的求解的陈旧性程度。通过计算机基于第二处理作业的执行结果和与所确定的陈旧性程度成比例的学习率,将参数集从第二状态迭代到第四状态。

附图说明

当结合附图考虑时,通过参考以下详细描述,将更好理解本发明及其许多附带方面的更完整的理解,其中:

图1是图示出根据本发明示例性实施例的用于执行分布式随机梯度下降的装置的示意图;

图2是图示出根据本发明示例性实施例的用于执行分布式sgd的方法的流程图;

图3是图示出根据本发明示例性实施例的用于根据梯度陈旧性来更新目标函数参数的方法的流程图;以及

图4示出了根据本公开的实施例的能够实现该方法和装置的计算机系统的示例。

具体实施方式

在描述附图中所图示的本发明的示例性实施例时,为了清楚起见采用了特定的术语。然而,本发明并不旨在限于该说明或任何特定术语,并且应理解,每个元件包括所有等同物。

本发明的示例性实施例可以利用分布式方法来执行随机梯度下降(sgd),其中中央参数服务器(ps)被用来将sgd作为多个学习器机器过程梯度并行地管理。参数服务器基于所处理的梯度的结果来更新模型参数,然后学习器机器在处理后续的梯度中可以使用更新的模型参数。在这个意义上,随机梯度下降是以分布式的方式执行的,并且因此该过程可以被称为分布式随机梯度下降。

在执行分布式sgd时,学习器机器可以被配置为以同步或异步方式操作。在同步操作时,仍然可以串行处理训练数据,其中一个学习器机器等待另一机器的结果。特别是对于扩展数据集而言,这种方法可能很慢。异步操作可以极大地加速该过程,因为非常大量的学习器机器可以各自独立地处理梯度,而不必等待彼此的输出。然而,当异步操作时,可能出现的问题是,当一个学习器机器求解梯度时,梯度可能是陈旧的。陈旧梯度是基于一组过时的参数的梯度。参数可以响应于由学习器机器所执行的梯度的求解而发展,并且因此当一个学习器机器返回对梯度的求解(基于过时参数)时,可以说所求解的梯度是陈旧的。虽然本发明的示例性实施例可以拒绝陈旧的梯度,但是高度并行化的模型学习可能导致非常大量的陈旧梯度并且拒绝所有陈旧的梯度可能是低效的。

因此,本发明的示例性实施例可以在返回梯度时评估每个梯度的陈旧水平,然后利用具有权重的每个梯度,该权重根据梯度的陈旧性的程度来减小每个梯度的影响。因此,较陈旧的梯度可以对参数更新具有较小的影响,而较不陈旧的梯度可以对参数更新具有较大的影响。

然而,本发明的示例性实施例不需要应用二元权重,其中陈旧的梯度对参数更新完全没有贡献,并且非陈旧的梯度被赋予全部权重,而是可以应用滑动缩放(slidingscale)使得陈旧的梯度仍然被用来对梯度的更新做贡献,只是权重小于较不陈旧的梯度。

图1是图示出根据本发明示例性实施例的用于执行分布式随机梯度下降的装置的示意图。输入/输出接口11可以被用来与中央参数服务器交互。中央参数服务器12可以是被分派有管理机器学习和更新参数的机器。因此,中央参数服务器可以向多个模型学习器13a-13f中的每一个发送梯度(这里统称为“13”)。

输入/输出接口11可以是向中央参数服务器12分派有特定计算机学习作业并随后从中央参数服务器12取回计算机学习作业的结果的机器。

模型学习器13可以并行处理梯度并将结果传递回中央参数服务器12,中央参数服务器12可以基于根据陈旧性度量进行加权的处理的梯度来更新参数。

模型学习器可以被实例化为独立的机器,诸如13a、13b和13f中所示。这些独立的机器可以与中央参数服务器12直接通信,诸如13a和13b中所示,或者可以经由诸如因特网的计算机网络15来与中央参数服务器12通信,诸如13f中所示。可替代地,每个模型学习器可以是在托管多个虚拟机的服务器14上运行的虚拟机的实例,诸如13c,13d和13e中所示。

在确定陈旧性度量时,可以将当前参数与模型学习器在计算梯度时所使用的参数进行比较。因此,可以存储递送给每个模型学习器的参数集,使得可以在已经计算出梯度之后进行该比较。中央参数服务器12可以被配置为存储当梯度被发送到模型学习器时的参数,例如,存储在存储单元16b内。可替代地,可以将这些参数存储在模型学习器13a内,例如,存储在存储单元16a内,使得它们可以在由模型学习器已经计算出梯度之后与梯度结果一起被传递回中央参数服务器12。在任一种方法中,将最新近的参数存储在中央参数服务器12内,例如,存储在存储单元16b内。存储单元16a和16b可以被实例化为闪存设备、片上高速缓存等。

图2是图示出根据本发明示例性实施例的用于执行分布式sgd的方法的流程图。首先,中央参数服务器可以为多个模型学习器生成并行处理作业(步骤s21)。这些处理作业可以包括作为分布式sgd的一部分的梯度处理。接下来,中央参数服务器可以向各种模型学习器分配生成的处理作业,并且当中央参数服务器向每个模型学习器分配这些作业时,中央参数服务器也可以将最新近的参数集传递给模型学习器(步骤s22)。如上所讨论的,可以存储作业分配时参数服务器的状态,以供以后用于评估中央处理服务器或模型学习器的陈旧性。

由于可能存在各自并行处理梯度的多个模型学习器,所以中央处理服务器可以为每个可用模型学习器处理单元生成处理作业(步骤s23a、步骤s23b和步骤s23c,这里统称为“步骤s23”)。可以异步地生成这些处理作业,也就是说,可以独立地分配作业而无需等待完成一个作业作为分配另一个作业的先决条件。

如上所讨论的,由于模型学习器处理单元可以被实例化为在远程服务器上运行的虚拟机、容器等,所以模型学习器可以被实现为云计算服务,诸如由微软公司开发的microsoftazure、由亚马逊有限公司开发的amazonweb(aws)、或由谷歌有限责任公司开发的googlecloudplatform(google云平台)。

在接收到其作业分配时,每个模型学习器可以基于其从中央处理服务器接收的参数集来处理其梯度(步骤s24a、步骤s24b和步骤s24c,这里统称为“步骤s24”)。

在完成其相应的分配作业之后,每个模型学习器然后可以将其处理的梯度传递回中央处理服务器,并且中央处理服务器可以接收这些处理的梯度,异步地(例如,当它们被接收时),可以通过比较由模型学习器使用来计算梯度的参数(存储在模型学习器或中央处理服务器中,如上)来计算梯度陈旧性,并且可以基于计算出的梯度以与所测量的参数陈旧性成反比的方式更新参数(步骤s25a、步骤s25b和步骤s25c,这里统称为“步骤s25”)。

中央处理服务器可以在它们变得可用时一直继续向模型学习器分配处理作业(步骤s22)。例如,当所有作业都被处理时,已经分析了所有训练数据,可以认为目标函数被最小化,并且此后在执行其指定的任务时可以使用目标函数。例如,目标函数可以被用来解释语音命令,并且机器学习可以被用来最小化目标函数中的错误,从而可以更准确地解释语音命令。

然而,即使在其被用来执行其指定任务时,也可以无限期地继续执行对目标函数的最小化。在这方面,也可以继续改进目标函数即使在其处于使用时也是如此。

如上,本发明的示例性实施例可以执行异步分布式sgd而不拒绝陈旧的梯度,这会趋于缓慢且低效,并且不会以相同的权重对待所有梯度,这将导致较不太有效的计算机学习。本发明的示例性实施例可以通过根据陈旧性对梯度进行加权,来有效地利用所有梯度。以这种方式,本方法可以具有改进的速度、改进的效率和改进的功效。

图3是图示出了根据本发明示例性实施例的用于根据梯度陈旧性来更新目标函数参数的方法的流程图。在模型学习器处理了分配给它的梯度作业之后(图2的步骤s24),中央参数服务器从模型学习器接收处理的梯度(步骤s31)。然后,中央参数服务器比较由模型学习器使用的参数,来利用最新近更新的参数(步骤s32)来处理梯度。虽然中央参数服务器可以知道最新近更新的参数,并且自己已经计算出了它们,但是中央参数服务器可以以两种方式之一查找由模型学习器使用的参数:由模型服务器使用的参数可以从中央参数服务器的存储器中取回(步骤s33a),该存储器可以存储在作业分配时的这些参数;或者由模型服务器使用的参数可以从模型学习器的存储器中取回(步骤s33b)。在任一情况下,步骤s32的比较结果可以是确定由模型服务器使用的参数过时的程度(例如,陈旧性)。

可以将参数表达为参数矢量w,其中在给定时间t处的参数矢量表示为wt。因此,wτ(t)表示相对于时间迭代的参数矢量。将目标函数f表达为参数的函数,例如,f(w)或f(wτ(t)),其表示迭代的目标函数。可以将步长(学习率)表达为η,或者表达为相对于特定时间的ηt。

因此,本发明的示例性实施例可以通过求解等式来计算更新的参数:

其中,将最新近的参数矢量表达为wt+1(指示参数矢量的值作为计算的梯度的结果),并且它被定义为:在作业分配处给予模型学习器的原始参数矢量wt(陈旧参数)减去相对于时间的步长乘以由模型学习器针对在原始时间处为迭代的参数矢量计算的目标函数的梯度。

以这种方式,参数矢量根据计算出的梯度来更新。

此外,学习率η取决于迭代,迭代可以用时间(例如ηt)项或第j次迭代(例如ηt)的项来表达,也就是说,学习率特定于计算出的梯度。由于可以计算学习率以便与参数矢量已经改变的程度成反比,所以例如可以使用以下等式:

这里c是预定常数并且τ(j)≤j。

因此,学习率与真实陈旧性成反比,真实陈旧性被定义为陈旧参数和当前参数之差的平方范数。

因此,根据本发明的示例性实施例,中央参数服务器可以计算学习率ηt或ηj,例如如上(步骤s34),然后中央参数服务器根据处理的梯度和计算的学习率,计算更新的参数wt+1,例如如上(步骤s35)。

图4图示出了根据本发明的一些实施例的系统的另一示例。作为概述,本发明的一些实施例可以以在一个或多个(例如,“云”)计算机系统上运行的软件应用的形式来实现,计算机系统例如(一个或多个)主机、(一个或多个)个人计算机(pc)、(一个或多个)手持式计算机、(一个或多个)客户机、(一个或多个)服务器,对等设备等。可以将软件应用实现为存储在计算机可读存储介质(在下面详细讨论)上的计算机可读/可执行指令这,其可以由计算机系统在本地访问和/或经由到例如局域网或因特网之类的网络的硬连线或无线连接远程访问。

现在参考图4,计算机系统(通常称为系统1000)可以包括例如处理器例如中央处理单元(cpu)1001、存储器1004例如随机存取存储器(ram)、打印机接口1010、显示单元1011、局域网(lan)数据传输控制器1005(其可操作地耦合到lan接口1006,lan接口1006可以进一步耦合到lan)、可以提供与公共交换电话网络的通信(pstn)的网络控制器1003、一个或多个输入设备1009例如键盘、鼠标等、以及用于可操作地连接各种子系统/组件的总线1002。如图所示,系统1000也可以经由链路1007连接到非易失性数据存储,例如硬盘1008。

在一些实施例中,软件应用存储在存储器1004中,当由cpu1001执行时,使得系统执行根据本发明的一些实施例的计算机实现的方法,例如,参考图2和图3所描述的方法的一个或多个特征。

本发明可以是以任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括计算机可读存储介质(或媒体),其上具有计算机可读程序指令以用于使处理器执行本发明的各方面。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、用于集成电路的配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

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

这里描述的示例性实施例是说明性的,并且在不脱离本发明的精神或所附权利要求的范围的情况下可以引入许多变型。例如,在本发明和所附权利要求的范围内,不同示例性实施例的元件和/或特征可以彼此组合和/或彼此替换。

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