使用交替方向乘子法的深度学习转让专利

申请号 : CN201480037824.4

文献号 : CN105378762B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : Q·霍Z·严K·陈

申请人 : 微软技术许可有限责任公司

摘要 :

使用交替方向乘子法(ADMM)算法来训练分类器可以降低分类器训练时间量而分类器准确性的降级很小。该训练涉及将用于训练该分类器的训练数据划分成多个数据块。该划分可以保留训练数据的输入特征与输出类的联合分布。该训练可以进一步包括使用多个工作者节点按照初始次序对该多个数据块执行ADMM迭代。随后,若继ADMM迭代之后满足停止准则,则确定对该分类器的训练被完成。否则,若继ADMM迭代之后确定不满足停止准则,那么可以按照该多个数据块的不同次序来执行一轮或多轮附加的ADMM迭代,直到满足停止准则。

权利要求 :

1.一种计算机实现的训练方法,包括:

将用于训练分类器的训练数据划分成保留所述训练数据的输入特征与输出类的联合分布的多个数据块;

将所述多个数据块分发给多个工作者节点,以使得所述多个工作者节点按照初始次序对所述多个数据块执行交替方向乘子法ADMM迭代来训练所述分类器;

响应于继所述ADMM迭代之后停止准则未被满足,向所述多个工作者节点提供所述多个数据块,以使得所述多个工作者节点按照不同次序对所述多个数据块执行附加ADMM迭代以训练所述分类器;以及响应于继所述ADMM迭代之后所述停止准则得到满足,确定所述分类器被训练成经训练的分类器。

2.如权利要求1所述的方法,其特征在于,还包括经由经训练的分类器来分类输入数据以生成输出数据。

3.如权利要求2所述的方法,其特征在于,分类所述输入数据包括执行语音识别、图像识别、字迹分析、或者对象分类中的一者。

4.如权利要求1所述的方法,其特征在于,所述分类器包括深度神经网络。

5.如权利要求1所述的方法,其特征在于,所述多个工作者节点包括多个中央处理单元或者多个图形处理单元。

6.如权利要求1所述的方法,其特征在于,所述多个数据块是非交叠数据块。

7.如权利要求1所述的方法,其特征在于,所述多个数据块中的每个数据块的大小基于以下至少一者:所处理的训练数据的体量、处理所述训练数据的工作者节点的数目、所述多个工作者节点的数据处理能力、以及所述多个数据块的期望数目。

8.如权利要求1所述的一方法,其特征在于,所述确定包括响应于以下各项而查明所述停止准则得到满足:与所述ADMM迭代相关联的目标函数中的相对改变小于预定改变阈值、所述经训练的分类器对验证数据集的分类准确性在由基线分类器对所述验证数据集生成的基线分类准确性的预定百分比以内、或者与所述分类器相关联的全局模型的模型参数达到预定值。

9.如权利要求1所述的方法,其特征在于,划分所述训练数据包括:基于所述训练数据中的特征向量的类标将所述训练数据划分成数据子集,每个数据子集具有带有共享共同类标的对应特征向量的数据;

执行对这些数据子集中的这些特征向量的k均值聚簇以形成多个数据簇;以及将这些数据簇的这些特征向量随机划分到所述多个数据块中。

10.如权利要求1所述的方法,其特征在于,所述ADMM迭代的执行或者所述附加ADMM迭代的执行包括:将所述多个数据块中的数据块划分成多个数据子集;

将所述多个数据子集以及全局模型分发给所述多个工作者节点,每个所述工作者节点具有局部模型;

从所述多个工作者节点接收对应于所述多个数据子集的经更新的局部模型,每个经更新的局部模型在对应工作者节点处使用对应数据子集的单次扫掠的基于小批量的随机梯度下降处理来被独立地更新;以及聚合这些经更新的局部模型来更新所述全局模型。

11.如权利要求10所述的方法,其特征在于,所述多个数据子集的量以及所述工作者节点的量是基于所述训练数据的大小而可伸缩的。

12.一种用于训练深度神经网络的计算机实现的方法,包括:

将用于训练深度神经网络DNN的训练数据划分成保留所述训练数据的输入特征与输出类的联合分布的多个非交叠数据块;

使用多个工作者节点按照初始次序对所述多个非交叠数据块执行交替方向乘子法ADMM迭代来训练所述DNN;

响应于继所述ADMM迭代之后停止准则得到满足,确定所述DNN被训练成经训练的DNN,而响应于继所述ADMM迭代之后所述停止准则未被满足,则按不同次序对所述多个非交叠数据块执行附加ADMM迭代;以及经由所述经训练的DNN来分类输入数据以生成输出数据。

13.如权利要求12所述的计算机实现的方法,其特征在于,分类所述输入数据包括执行语音识别、图像识别、字迹分析、或者对象分类中的一者。

14.如权利要求12所述的计算机实现的方法,其特征在于,所述确定包括响应于以下特向而查明所述停止准则得到满足:与所述ADMM迭代相关联的目标函数中的相对改变小于预定改变阈值、所述经训练的DNN对验证数据集的分类准确性在由基线分类器对所述验证数据集生成的基线分类准确性的预定百分比以内、或者与所述分类器相关联的全局模型的模型参数达到预定值。

15.如权利要求12所述的计算机实现的方法,其特征在于,执行所述ADMM迭代包括:将所述多个非交叠数据块中的数据块划分成多个数据子集;

将所述多个数据子集与全局模型分发给所述多个工作者节点;

在所述多个工作者节点中的每一者处使用对应数据子集的单次扫掠的基于小批量的随机梯度下降处理来独立地更新所述对应数据子集的局部模型;以及聚合多个局部模型来更新所述全局模型。

16.一种用于训练深度神经网络的系统,包括:

多个处理器;

存储器,所述存储器包括能由所述多个处理器执行的多个计算机可执行组件,包括:数据划分组件,其将用于训练深度神经网络DNN的训练数据划分成保留所述训练数据的输入特征与输出类的联合分布的多个数据块;以及训练组件,其使用多个工作者节点按照初始次序对所述多个数据块执行交替方向乘子法ADMM迭代来训练所述DNN,所述多个工作者节点包括多个中央处理单元或者多个图形处理单元,并且所述训练组件响应于继所述ADMM迭代之后停止准则得到满足而确定所述DNN被训练成经训练的DNN,而响应于继所述ADMM迭代之后所述停止准则未被满足,按不同次序对所述多个数据块执行附加ADMM迭代。

17.如权利要求16所述的系统,其特征在于,还包括验证组件,所述验证组件响应于以下各项而确定所述停止准则得到满足:与所述ADMM迭代相关联的目标函数中的相对改变小于预定改变阈值、所述经训练的DNN对验证数据集的分类准确性在由基线分类器对所述验证数据集生成的基线分类准确性的预定百分比以内、或者与所述分类器相关联的全局模型的模型参数达到预定值。

18.如权利要求16所述的系统,其特征在于,所述训练组件通过以下步骤执行所述ADMM迭代:将所述多个数据块中的数据块划分成多个数据子集;

将所述多个数据子集以及全局模型分发给所述多个工作者节点,每个所述工作者节点具有局部模型;

从所述多个工作者节点接收对应于所述多个数据子集的经更新的局部模型,每个经更新的局部模型在对应工作者节点处使用对应数据子集的单次扫掠的基于小批量的随机梯度下降处理来独立地更新;以及聚合这些经更新的局部模型来更新所述全局模型。

说明书 :

使用交替方向乘子法的深度学习

[0001] 背景
[0002] 深度神经网络(DNN)可以被用来执行诸如语音识别、图像识别、笔迹分析以及对象分类等的任务。DNN可以被训练以使用诸如基于小批量的随机梯度下降(SGD)、异步SGD、模型求平均、或者异步SGD与模型求平均的结合等的技术来执行特定任务。然而,这些技术各自都具有缺点。例如,小批量SGD是顺序训练规程。相应地,使用小批量SGD来训练DNN难以跨多个计算设备并行化。进一步,虽然诸如异步SGD或者模型求平均等的技术可以使得能够将训练跨多个计算节点并行化,但是使用此类技术来训练的DNN一般会产生劣于使用小批量SGD所产生的结果。
[0003] 概述
[0004] 本文所描述的是用于使用交替方向乘子法(ADMM)算法来训练深度神经网络(DNN)的技术。DNN可以被训练以执行诸如语音识别、图像识别、笔迹分析以及对象分类等的任务。使用ADMM算法可以使得对DNN的训练能够跨多个计算节点并行化。换句话说,可以使对DNN的训练跨该多个计算节点分布以加速训练过程。这些计算节点中的每一者可以是驻留在计算设备中的中央处理单元(CPU)或者图形处理单元(GPU)。
[0005] 应用ADMM算法来训练DNN可包括训练数据划分阶段以及分布式ADMM迭代阶段。在训练数据划分阶段中,训练数据可以被划分成保留数据块的输入特征与输出类的联合分布的多个非交叠数据块。在分布式ADMM迭代阶段,这些非交叠的数据块可以被该多个计算节点迭代地处理来训练DNN,直到满足预定的停止准则。被训练的DNN可以被数据分析引擎使用来分类输入数据。输入数据可以是语音、图像、对象以及其他数据。随后,数据分析引擎可以分别提供对应于语音的文本、图像分类、基于其视觉特征的对象识别等。
[0006] 提供本发明内容是为了以简化的形式介绍将在以下具体实施例中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0007] 附图简述
[0008] 参考附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同的附图中使用相同的附图标记来指示相似或相同的项。
[0009] 图1是示出用于实现使用交替方向乘子法(ADMM)算法来训练分类器的训练引擎的示例方案的框图。
[0010] 图2是示出通过分发数据以供由诸工作者节点处理来应用ADMM算法训练分类器的主控节点的示例组件的解说性示图。
[0011] 图3是解说用于使用ADMM算法来基于训练数据训练分类器的示例过程的流程图。
[0012] 图4是解说用于在多个工作者节点上执行ADMM迭代来训练分类器的示例过程的流程图。
[0013] 详细描述
[0014] 本文所描述的是用于使用交替方向乘子法(ADMM)算法来训练深度神经网络(DNN)的技术。DNN可以被训练以执行诸如语音识别、图像识别、笔迹分析、以及对象分类等的任务。使用ADMM算法可以使得对DNN的训练能够跨多个计算节点并行化。换句话说,可以使对DNN的训练跨该多个计算节点分布以加速训练过程。这些计算节点中的每一者可以是驻留在计算设备中的中央处理单元(CPU)或者图形处理单元(GPU)。
[0015] 应用ADMM算法来训练DNN可包括训练数据划分阶段以及分布式ADMM迭代阶段。在训练数据划分阶段,训练数据可以被划分成保留数据块的输入特征与输出类的联合分布的多个非交叠数据块。在分布式ADMM迭代阶段,这些非交叠的数据块可以被该多个计算节点迭代地处理来训练DNN,直到满足预定的停止准则。被训练的DNN可以被数据分析引擎使用来分类输入数据。输入数据可以是语音、图像、对象、以及其他数据。进而,数据分析引擎可以分别提供对应于语音的文本、图像分类、基于其视觉特征的对象识别等。
[0016] 在至少一个实施例中,训练涉及将用于训练分类器的训练数据划分成多个数据块。该划分可以保留训练数据的输入特征与输出类的联合分布。该训练可以进一步包括使用多个工作者节点按初始次序对该多个数据块执行ADMM迭代。随后,若继ADMM迭代之后满足停止准则,则确定对分类器的训练完成了。否则,若确定继ADMM迭代之后未满足停止准则,则可以按照该多个数据块的不同次序执行附加的ADMM迭代。
[0017] 使用ADMM训练算法可以降低为特定目的训练DNN所使用的时间量。减少的训练时间可以导致DNN在执行任务时的实现与使用上的增加。附加地,使用ADMM算法训练的DNN所提供的结果在准确性上与由诸如基于小批量的随机梯度下降(SGD)等的常规且较慢的方法训练的DNN所产生的结果相当。进一步,因为ADMM算法使用多个节点来训练DNN的应用是可伸缩的,所以这些技术可以被扩展以使用更为大量的训练数据来训练DNN。相应地,在未来这些技术很容易适应于为了更为数据密集型的分类任务而训练DNN。
[0018] 以下参考图1-4来描述根据各种实施例的用于训练DNN来进行数据分析的技术的各种示例。
[0019] 示例方案
[0020] 图1是示出用于实现使用交替方向乘子法(ADMM)算法来训练分类器的训练引擎的示例方案100的框图。该示例方案100可包括训练引擎102和数据分析引擎104。训练引擎102可在多个计算设备106上执行。多个计算设备106可包括通用计算机,诸如台式计算机、平板计算机、膝上型计算机、服务器等等。然而,在其他实施例中,计算设备106可包括智能电话、游戏控制台、或者任何其他电子设备。这多个计算设备106可包括各种处理器,诸如中央处理器单元(CPU)、图形处理器单元(GPU),其他类型的处理器、或者以上任何项的组合。这些处理器可以构成处理数据的工作者节点108(1)-108(N)。进一步,其中一个计算设备106可以充当将数据分发给工作者节点108(1)-108(N)以供处理的主控节点110。相应地,训练引擎102可包括工作者节点108(1)-108(N)以及主控节点110。
[0021] 训练引擎102可以使用ADMM算法112来训练深度神经网络(DNN)114形式的分类器以用于执行数据分析,诸如用于语音识别。在各种实施例中,DNN 114可包括输入层116(1)和输出116(N)、以及多个隐藏层,如多个层116(2)-116(4),其中N表示任何整数。在一些实施例中,DNN 114可包括总共9层。相应地,在此类实施例中,N的值是“9”,因为有9层。训练数据118可由ADMM算法112用以训练DNN 114。在语音识别的环境中,训练数据118可以是包括来自人类说话者的样本语音的集合的语音语料库。例如,语音语料库可包括从美国或加拿大的北美英语的说话者收集的北美英语语音样本。然而,在其他实现中,训练数据118可包括图像、字迹样本、或者其他数据。在语音识别中,输入层116(1)可以接收Mel频率倒谱系数(MFCC)特征、直觉线性预测(PLP)特征、对数过滤器组输出特征等等形式的特征向量。输出层116(N)可提供受束缚HMM状态形式的输出类。然而,输出层116(N)也可提供其他单元作为类,诸如音素、上下文相关音素等等。在另一示例中,训练引擎102可以使用ADMM算法112来训练DNN 114来执行图像分类。在图像分类中,输入层116(1)可以接收原始图像形式的输入数据,并且输出层116(N)可提供图像类别形式的类。
[0022] ADMM算法112执行的计算可跨工作者节点108(1)-108(N)被并行化。例如,主控节点110可以将训练数据118划分成保留输入特征与输出类的联合分布的多个非交叠数据块。随后,主控节点110可以按随机次序将这些数据块分发给工作者节点108(1)-108(N)来在首轮迭代中使用ADMM进行处理。此类ADMM迭代训练DNN 114。一旦所有的数据块在该轮迭代中被处理了,那么主控节点110就可以将这些经处理的数据块的次序随机化。新排序的数据块被随后分发给工作者节点108(1)-108(N)用于进行由ADMM算法处理的附加迭代。主控节点
110可以重复此类对数据块的随机化以及分布式处理,直到满足预定的停止准则。满足停止准则可以指示对DNN 114的训练完成。例如,停止准则可以是DNN 114对于验证数据集所产生的结果的准确度满足预定阈值。
[0023] 由此,通过使用ADMM算法112和训练数据118,训练引擎102可从DNN114产生经训练的DNN 120。进而,数据分析引擎104可使用经训练的DNN120来从输入数据124产生输出数据122。在一些实现中,数据分析引擎104可以是使用经训练的DNN 120来从输入语音形式的输入数据124产生输出文本形式的输出数据122的语音-文本引擎。数据分析引擎104可在计算设备106或类似于计算设备106的一个或多个计算设备上执行。数据分析引擎104可从话筒和计算设备的音频处理组件接收实况输入数据124。作为替代,数据分析引擎104可从媒体文件或流接收输入数据124,例如用于媒体文件/流中说出的内容的音频索引的目的。在其他实施例中,数据分析引擎104还可以是文本-语音引擎,它使用经训练的DNN 120来基于输入文本合成输出语音。
[0024] 在替换性实施例中,可以使用其他训练数据118来训练DNN 114以用于其他数据分析目的的。例如,训练数据可以包括来自图像数据库的经标记的图像。在此类示例中,经由ADMM算法112使用训练数据来训练DNN 114可以产生经训练的DNN 120,该经训练的DNN 120被数据分析引擎104用来将输入图像分类成不同类别。在训练数据118中的图像包括键入的文本的实例中,数据分析引擎104可以使用经训练的DNN 120来对包括文本的输入图像执行光学字符识别(OCR)。在另一示例中,训练数据可包括来自各个个人的经标记的字迹样本,并且经由ADMM算法112的训练可以产生经训练的DNN 120,该经训练的DNN 120被数据分析引擎104用以识别并将特定输入字迹文本匹配到特定个人。在此类示例中,数据分析引擎104可以接收作为扫描或存储的图像文件的输入字迹文本,并且提供指示字迹文本是否匹配于特定个人的字迹的输出消息。
[0025] 示例组件
[0026] 图2是示出通过分发数据以供由诸工作者节点处理来应用ADMM算法训练分类器的主控节点的示例组件的解说图。主控节点可以由计算设备202实现。计算设备202可包括一个或多个处理器204、用户接口206、网络接口208以及存储器210。在各种实施例中,计算设备202可以是其中一个计算设备106。
[0027] 这些处理器204中的每一个可以是单核处理器或多核处理器。用户接口206可包括数据输出设备(例如,视觉显示器、音频扬声器)以及一个或多个数据输入设备。数据输入设备可包括但不限于,键区、键盘、鼠标设备、接收手势的触摸屏、话筒、话音或语音识别设备、以及任何其他合适的设备或其他电子/软件选择方法中的一个或多个的组合。
[0028] 网络接口208可包括使得计算设备202能够经网络发送和接收数据的有线和/或无线通信接口组件。在各种实施例中,无线接口组件可包括但不限于,蜂窝、Wi-Fi、超宽带(UWB)、蓝牙、卫星传输等等。有线接口组件可包括直接I/O接口,如因特网接口、串行接口、通用串行总线(USB)接口等等。如此,计算设备202可具有网络能力。例如,计算设备202可以经由一个或多个网络(如因特网)来与其他电子设备(例如,膝上型计算机、服务器等)交换数据。此类电子设备可提供工作者节点108(1)-108(N)。
[0029] 存储器210可以用诸如计算机存储介质之类的计算机可读介质来实现。计算机可读介质包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可用于存储信息以供计算设备访问的任何其他非传输介质。相反,通信介质可在诸如载波之类的已调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
[0030] 计算设备202的存储器210可存储实现训练引擎102的模块。该些模块可包括操作系统212、训练模块214、数据划分模块216以及验证模块218。训练模块214、数据划分模块216以及验证模块218是训练引擎102的一部分。这些模块中的每一者可包括执行特定任务或实现特定抽象数据类型的例程、程序指令、对象和/或数据结构。此外,数据存储220和数据分析引擎104可以驻留在存储器210中。
[0031] 操作系统212可包括使计算设备202能够经由各种输入(例如,用户控件、网络接口、和/或存储器设备)来接收数据并且能够使用处理器204来处理数据以生成输出的组件。操作系统212还可包括呈现输出(例如,在电子显示器上显示图像、在存储器中存储数据、将数据发送给另一电子设备等)的一个或多个组件。操作系统212可使得用户能够使用用户接口206与训练引擎102的模块交互。另外,操作系统212可包括执行一般与操作系统相关联的各种其他功能的其他组件。
[0032] 训练模块214可以使用ADMM算法112基于训练数据118来训练DNN114形式的分类器。ADMM算法112是解决以下凸目标函数的一般等效约束凸优化问题的迭代算法:
[0033] minx,zf(x)+g(z)   (1)
[0034] 服从线性约束Ax+Bx=c,其中x∈Rn,z∈Rm,A∈Rp×n,B∈Rp×m,c∈Rp,并且f(.)与g(.)是凸的。
[0035] 进一步,在多个工作者节点108(1)-108(N)上执行ADMM算法112可以是基于原始分布式优化问题:
[0036] minXE(x,D)   (2)
[0037] 其中训练数据集D被分为N个子集{Di|i=1,…,N},并且原始分布式优化问题可以被公式化成以下全局一致性问题:
[0038]
[0039] 其中该全局一致性问题服从xi-z=0,i=1,…,N,并且其中xi是局部变量,而z是共用全局变量。
[0040] 由此,为了解决该全局一致性问题,ADMM算法112可以使用以下迭代在多个计算节点上来被执行:
[0041]
[0042] 其中由经简化的z更新:
[0043]
[0044] 并且 被设置从而 在式(4)中ρ是惩罚参数,其能够在实践中按经验来设置,并且 是双变量,其按下式更新:
[0045]
[0046] 相应地,训练模块214可以迭代地执行ADMM算法112来训练DNN 114,其中该执行的迭代可以被概念化为以下步骤:(1)将z广播到N个计算节点(例如,工作者节点108(1)=108(N));(2)在每个计算节点上独立地更新xi;(3)聚合xi以更新z以及(4)将经更新的z广播到这N个计算节点,以及在各个计算节点上独立地更新yi。在各种实施例中,训练模块214可以执行此类迭代直到达到停止规则。
[0047] 在实际的实现中,基于训练数据118对DNN 114的训练可以包括训练数据划分阶段以及分布式ADMM迭代阶段。将训练数据118划分成数据块可以使得训练模块214能迭代地将数据块分发到工作者节点108(1)-108(N)进行处理。训练模块214可以使用数据划分模块216来执行训练数据划分阶段。
[0048] 数据划分模块216可以将训练数据118划分成多个非交叠数据块222,从而每个数据块保留输入特征与输出类的联合分布,即p(输入特征,输出类)。在各种实施例中,数据划分模块216可以基于训练数据118中的特征向量的类标来将训练数据118划分成数据子集。该划分可以被执行,从而带有具有共同类标的特征向量的数据可以被一起聚簇到共同数据子集中以生成多个数据子集。随后,对于每个数据子集,数据划分模块216可以执行对该子集中的特征向量的k均值聚簇以形成一个或多个数据簇。数据划分模块216可以进一步将数据簇的特征向量随机地划分成多个非交叠数据块222。用这种方式,训练数据118可以被划分以保留输入特征与输出类的联合分布。
[0049] 在至少一个实施例中,数据划分模块216可以根据一个或多个因素来设置该多个非交叠数据块222的大小。这些因素可以包括要处理的训练数据量、处理训练数据118的工作者节点的数目、工作者节点的数据处理能力(例如,每个工作者节点的处理速度和/或数据传递带宽)、所期望的非交叠数据块222的数目等等。例如,具有较大尺寸的训练数据可以导致较大尺寸的数据块,而增加工作者节点的数目可以导致减小的数据块尺寸。附加地,增加工作者节点的处理能力可以使得数据划分模块216产生更大的数据块。相反,减小工作者节点的处理能力可以使得数据划分模块216产生较小的数据块。
[0050] 一旦数据划分模块216从训练数据118产生了多个非交叠数据块222,训练模块214就可以在该多个非交叠数据块222上执行ADMM迭代。在初始迭代中,训练模块214可以将由数据划分模块216产生的该多个非交叠数据块222的次序随机化。训练模块214可以通过将初始数据块划分成多个子集并且将该多个子集分发给工作者节点108(1)-108(N)来处理该多个非交叠数据块222的初始数据块,从而工作者节点108(1)-108(N)中的每一个都可以处理对应子集。训练模块214还可以将DNN 114的全局模型(如式(4)中变量z所表示的)广播到每个工作者节点108(1)-108(N)。每个工作者节点108(1)-108(N)可以处理对应的子集来使用单次扫掠基于小批量的SGD来更新所存储的局部模型(如由式(4)中的变量x所表示的)。在替换性实施例中,每个工作者节点可以实现基于小批量的SGD的多次扫掠,这与基于小批量的SGD的单次扫掠形成对比。然而,因为DNN训练目标函数事实上不是凸的而是非凸的,所以基于小批量的SGD的单次扫掠的实现可以提供等于或者优于基于小批量的SGD的多次扫掠的实现的性能。随后,训练模块214可以聚合来自工作者节点108(1)-108(N)的局部模型来更新存储在主控节点110上的全局模型。
[0051] 训练模块214可以顺序地为该多个非交叠数据块222的剩余数据块重复数据块拆分以及工作者节点108(1)-108(N)上对结果所得子集的分布式处理。可以使用从对于该多个非交叠数据块222中的之前数据块的处理所结果得到的更新的全局模型来处理每一个剩余的数据块。相应地,当该多个非交叠数据块222中的所有数据块都得到了处理时,训练模块214可以完成初始ADMM迭代。
[0052] 一旦训练模块214完成了初始ADMM迭代,训练模块214就可以使用验证模块218来确定是否已满足停止准则。相应地,若未满足停止准则,那么训练模块214可以通过将该多个非交叠数据块222的次序随机化来发起ADMM迭代的另一轮迭代,并且重复进行随后的按照新随机化的次序将该多个非交叠数据块222分发到工作者节点来进行另一轮迭代处理。训练模块214可以重复该迭代直到满足停止准则。在另一方面,若满足了停止准则,那么训练模块214可以确定DNN 114已经被转换成了经训练的DNN 120。
[0053] 在各种实施例中,停止准则可以是设计成指示DNN 114已经准备好被数据分析引擎104使用的任何合理的准则。例如,停止准则可以是ADMM迭代之后非凸目标函数中的相对变化。相应地,当相对改变小于预定改变阈值时,验证模块218可以确定停止准则得到满足。在另一示例中,验证模块218可以将DNN 114对验证数据集的分类准确性与基线分类准确性作比较。基线分类准确性可以是针对使用已得到证明的方法(例如,基于小批量的SGD)训练的DNN对该验证数据集的分类准确性。相应地,当在ADMM迭代之后DNN114的分类准确性在基线分类准确性的预定百分比以内时,验证模块218可以确定满足了停止准则。在其他实施例中,验证模块218可以使用其他参数作为停止准则。例如,验证模块218可以监视DNN 114的全局模型的模型参数,并且在当该参数达到预定值时确定停止准则得到满足。
[0054] 进一步,处理训练数据118的工作者节点108(1)-108(N)的数目以及被分发到工作者节点108(1)-108(N)的数据子集的量可以基于训练数据118的大小而被伸缩。例如,训练模块214可以为大小较大的训练数据采用较大数目的工作者节点以及对应的较大量的数据子集,反之亦然。用这种方式,DNN 114的基于ADMM的训练的实现可以取决于训练数据118的大小而被放大或缩小。
[0055] 数据存储220可存储由各种模块使用的数据。在至少一个实施例中,数据存储可以存储训练数据118、DNN 114、非交叠数据块222、经训练的DNN120以及全局模型224。每个数据集和可被存储在数据表、数据阵列、和/或其他数据存储结构中。
[0056] 工作者节点108(1)-108(N)可以驻留在一个或多个计算设备106上。工作者节点108(1)-108(N)是训练引擎102的组件。在一些实施例中,工作者节点108(1)-108(N)可以使用接口来与主控节点110和/或与彼此交换数据。接口可以包括计算设备内的本地接口(例如,外围组件互联总线接口)或者计算设备之间的网络接口(例如,网络接口控制器)。例如,在工作者节点108(1)-108(N)中的两个节点驻留在不同计算设备上的实例中,工作者节点可以经由网络接口使用网络来互相交换数据。网络可以是局域网(LAN)、广域网(WAN)、或两者的组合,如因特网。工作者节点108(1)-108(N)也可以经由本地接口和/或远程接口与主控节点110交换数据。
[0057] 每个工作者节点108(1)-108(N)可以访问功能上与存储器210类似的存储器。该存储器可以由一个或多个计算设备106提供。工作者节点108(1)-108(N)可访问的存储器可以存储可以由工作者节点执行以对训练数据子集执行基于小批量的SGD以及更新局部模型的模块。例如,工作者节点108(1)可以执行更新局部模型228的计算模块226。工作者节点108(1)-108(N)还可以使用对应的接口来从主控节点110接收全局模型224,并且向主控节点110传送经更新的局部模型。
[0058] 数据分析引擎104可以驻留在计算设备106上。然而,在替换性实施例中,数据分析引擎104可以驻留在一个或多个替换性计算设备上。在此类实施例中,经训练的DNN 120可以被导出到该一个或多个替换性计算设备以供由数据分析引擎104使用。
[0059] 示例过程
[0060] 图3和4描述了用于使用交替方向乘子法(ADMM)算法训练深度神经网络(DNN)以执行数据分析(诸如为了语音识别的目的)的各种示例过程。每一示例过程中描述操作的次序并不旨在解释为限定,并且任何数量的所描述的操作可以按任何次序和/或并行组合以实现每一个过程。此外,图3与4中的每一者中的操作可以用硬件、软件及其组合来实现。在软件的上下文中,各个操作表示在由一个或多个处理器执行时使得一个或多个处理器执行既定操作的计算机可执行指令。一般而言,计算机可执行指令包括使得执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
[0061] 图3是解说用于使用ADMM算法来基于训练数据训练分类器的示例过程300的流程图。在框302,训练引擎102可以将用于训练分类器的训练数据118划分成多个非交叠数据块。该多个非交叠数据块中的每一个都可以用保留训练数据的输入特征与输出类的联合分布的方式来被划分。分类器可以包括DNN 114。在各种实施例中,训练数据118的划分可以离线地执行,即,并非与ADMM迭代的执行并发地来训练DNN 114。
[0062] 在框304,训练引擎102可以将该多个非交叠数据块的次序随机化。该次序的随机化可以确保训练引擎102在多轮ADMM迭代上按照不同次序处理这些数据块。在框306,训练引擎102可以根据该次序来对该多个非交叠数据块中的每一个执行ADMM迭代以训练DNN 114。ADMM迭代的执行可包括将每个非交叠数据块作为数据子集分发给多个工作者节点108(1)-108(N)来用于处理。在各种实施例中,每个工作者节点108(1)-108(N)可以使用单次扫掠小批量SGD来处理其对应的数据子集。
[0063] 在判决框308,训练引擎102可以确定是否满足了停止准则。若训练引擎102确定满足了停止准则(判决框308处的“是”),则过程300可进行到框310。在框310,训练引擎102可以确定分类器的训练完成。在各种实施例中,停止准则可以是设计成指示DNN 114已经准备好被数据分析引擎104使用的任何合理的准则。例如,停止准则可以是ADMM迭代之后非凸目标函数中的相对变化。在另一实施例中,当在ADMM迭代之后DNN 114的分类准确性在基线分类准确性的预定百分比以内时,训练引擎102可以确定满足了停止准则。
[0064] 然而,若训练引擎102确定停止准则未被满足(判决框308处的“否”),那么过程300可以循环回到框304,从而可以执行对于该多个非交叠数据块的次序的另一次随机化以及另一轮ADMM迭代。
[0065] 图4是解说用于在多个工作者节点上执行ADMM迭代来训练分类器的示例过程400的流程图。过程400可进一步描述过程300的框306。在框402,训练引擎102可以将非交叠数据块划分成多个数据子集。在框404,训练引擎102可以使用主控节点110来将连带全局模型224的该多个数据子集分发到多个工作者节点108(1)-108(N)。相应地,工作者节点108(1)-
108(N)中的每一者可以基于全局模型224来处理对应数据子集。在框406,训练引擎102的每个工作者节点108(1)-108(N)可以使用单次扫掠基于小批量的SGD来处理对应的数据子集来独立地更新所存储的局部模型(例如,局部模型228)。在替换性实施例中,每个工作者节点可以实现基于小批量的SGD的多次扫掠,这与基于小批量的SGD的单次扫掠形成对比。在框408,训练引擎102可以使用主控节点110来聚合来自工作者节点108(1)-108(N)的局部模型来更新与DNN114相关联的全局模型224。
[0066] 本文中所描述的训练技术可以减少为特定目的训练DNN所使用的时间量。减少的训练时间可以导致DNN在执行任务时的实现与使用上的增加。附加地,使用ADMM算法训练的DNN所提供的结果在准确性上与由常规且较慢的技术(诸如基于小批量的随机梯度下降(SGD))训练的DNN所产生的结果相当。进一步,因为应用ADMM算法来使用多个节点训练DNN是可伸缩的,所以这些技术可以被扩展以使用更为大量的训练数据来训练DNN。相应地,在未来这些技术很容易适应于训练DNN以进行更为数据密集的分类任务。
[0067] 结语
[0068] 总而言之,尽管用对结构特征和/或方法动作专用的语言描述了各实施方式,但可以理解,所附权利要求书中定义的主题不必限于所述具体特征或动作。相反,这些具体特征和动作是作为实现权利要求的所要求保护的主题的示例性形式而公开的。