CN109313722B - 存储器高效的基于时间的反向传播 - Google Patents

存储器高效的基于时间的反向传播 Download PDF

Info

Publication number
CN109313722B
CN109313722B CN201780031192.4A CN201780031192A CN109313722B CN 109313722 B CN109313722 B CN 109313722B CN 201780031192 A CN201780031192 A CN 201780031192A CN 109313722 B CN109313722 B CN 109313722B
Authority
CN
China
Prior art keywords
training
forward propagation
sequence
time step
propagation information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780031192.4A
Other languages
English (en)
Other versions
CN109313722A (zh
Inventor
马克·兰奇托特
奥德吕娜斯·格鲁斯里斯
伊沃·达尼赫尔卡
雷米·穆尼奥斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DeepMind Technologies Ltd
Original Assignee
DeepMind Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DeepMind Technologies Ltd filed Critical DeepMind Technologies Ltd
Publication of CN109313722A publication Critical patent/CN109313722A/zh
Application granted granted Critical
Publication of CN109313722B publication Critical patent/CN109313722B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Abstract

用于使用基于时间的反向传播来在训练序列上训练递归神经网络的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。在一个方面,一种方法包括:接收训练序列,包括在多个时间步中的每一个处的相应输入;获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据;根据训练序列中的时间步的数量和根据分配给存储前向传播信息的存储量,确定用于处理训练序列的训练策略,其中,训练策略定义在训练序列的前向传播期间何时存储前向传播信息;以及根据训练策略在训练序列上训练递归神经网络。

Description

存储器高效的基于时间的反向传播
技术领域
本说明书涉及训练递归神经网络。
背景技术
神经网络是机器学习模型,其使用一个或多个非线性单元层来对于接收的输入预测输出。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作对于在网络中下一层(即下一个隐藏层或输出层)的输入。网络的每个层根据相应参数集的当前值从接收的输入生成输出。
一些神经网络是递归神经网络。递归神经网络(recurrent neural network)是接收输入序列并从输入序列生成输出序列的神经网络。特别地,递归神经网络可以使用来自先前时间步的网络的一些或全部内部状态来计算在当前时间步的输出。
发明内容
通常,本说明书中描述的主题的一个创新方面可以体现在由一个或多个计算机执行的、用于使用基于时间的反向传播在多个训练序列上训练递归神经网络的方法,所述方法包括下述动作:接收训练序列,所述训练序列包括在多个时间步中的每一个处的相应输入;获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据;根据训练序列中的时间步的数量和根据分配给存储所述前向传播信息的所述存储量,确定用于处理所述训练序列的训练策略,其中,所述训练策略定义在所述训练序列的前向传播期间何时存储前向传播信息;以及根据所述训练策略在所述训练序列上训练所述递归神经网络。
该方面的其他实施例可包括以下可选特征中的一个或多个。在一些实施方式中,在所述训练序列上训练所述递归神经网络包括:将在所述训练序列中的所述输入从所述序列中的第一时间步前向传播到所述序列中的最后时间步;在所述前向传播期间,根据所述训练策略存储前向传播信息;以及将梯度从所述序列中的所述最后时间步反向传播到所述序列中的所述第一时间步,包括:针对每个时间步,确定是否需要附加的前向传播信息来反向传播用于所述时间步的所述梯度,并且如果需要,则使用所存储的前向传播信息重新生成所述附加的前向传播信息。
在一些实施方式中,所述前向传播信息包括隐藏状态。在一些实现中,所述前向传播信息包括内部状态。在一些实施方式中,所述前向传播信息包括隐藏状态和内部状态这两者。在一些实施方式中,针对每个时间步,所述训练策略定义是否存储用于所述时间步的隐藏状态、内部状态或不存储其中的任何一个。在一些实施方式中,确定所述策略包括确定在后向传播期间平衡前向传播信息的缓存与前向传播信息的重新计算之间的折衷的策略。
在一些实施方式中,确定所述策略包括:对于每个时隙,基于所述时间步的数量和分配给存储所述前向传播信息的所述存储量来确定存储相关的前向传播信息段的计算成本;以及向所述训练策略添加一组被确定为具有最低计算成本的前向传播信息段;以及根据所述训练策略在所述训练序列上训练所述递归神经网络包括存储已经被添加到所述训练策略中的所述一组前向传播信息段。
在一些实施方式中,所述方法包括下述动作:根据所述策略确定在所述训练序列上训练所述递归神经网络的计算成本。在一些实现中,所述方法包括下述动作:提供识别所述计算成本的数据以呈现给用户。
该方面的其他实施例包括对应计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,其每个被配置为执行所述方法的动作。一个或多个计算机的系统可以被配置为借助于安装在系统上的软件、固件、硬件或其任何组合来执行特定操作或动作,所述软件、固件、硬件或其任何组合在操作中可以使系统执行所述动作。一个或多个计算机程序可以被配置为借助于包括当由数据处理装置执行时使所述装置执行所述动作的指令来执行特定操作或动作。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。通过采用本说明书中描述的存储器高效的基于时间的反向传播,可以使用较少存储器密集并且有效地利用分配用于训练RNN的存储器的训练技术来训练递归神经网络(RNN)。
因此,当可用于训练RNN的存储量小于存储与RNN相关联的所有前向传播信息所需的存储量时,可以减少训练RNN所需的时间。可以利用能够执行更快处理但具有更低存储容量的处理电路来训练RNN,所述处理电路例如是具有比许多中央处理单元更低的存储容量的图形处理单元。另外,通过优化训练RNN的计算成本,这里描述的方法在计算资源方面更有效,并且可以在功能较弱的计算机上执行。
在附图和以下描述中阐述了本说明书的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是示例神经网络系统的框图。
图2是用于训练递归神经网络的示例过程的流程图。
图3是用于确定要存储哪个前向传播信息的示例过程的流程图。
图4是示出保存前向传播信息的操作示例。
各附图中相同的附图标记和名称表示相同的元件。
具体实施方式
图1是示例神经网络系统100的框图。神经网络系统100是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中可以实现下面描述的系统、组件和技术。
神经网络系统100包括递归神经网络(RNN)101、RNN训练引擎102、RNN训练存储器103和策略引擎104。RNN训练引擎102通过在RNN训练存储器103中部分地存储所选择的前向传播信息112来训练RNN 101。RNN训练引擎102基于由策略引擎104确定的训练策略114确定哪个前向传播信息112存储在RNN训练存储器103中。
RNN 101是具有多个参数的示例神经网络,其包括至少一个递归神经网络层。在多个时间步的每个时间步,RNN 101被配置为处理来自输入序列的输入,并且对于除了第一时间步之外的每个时间步,根据参数的当前值处理相对于前一时间步的隐藏状态,以生成用于该时间步的输出和用于在后续时间步中使用的时间步的更新的隐藏状态。
可以使用RNN 101执行的任务的示例包括翻译、文本到语音的转换以及生成这样的词或字母的序列的顺序数据。RNN 101可以是传统的RNN或长期短期存储器(LSTM)RNN。在下文中描述了示例LSTM RNN:可在https://arxiv.org/pdf/1308.0850.pdf获得的Graves,Generating Sequences with Recurrent Neural Networks。
RNN训练引擎102通过调整RNN 101的参数值来训练RNN,以优化优化函数,该优化函数取决于由RNN针对多个时间步生成的输出和目标输出之间的误差度量。
RNN训练引擎102可以使用称为反向传播时间(BPTT)的训练算法来训练RNN。在下文中描述了示例BPTT算法:在http://www.cs.toronto.edu/~fritz/absps/pdp8.pdf可获得的Rumelhart et al,Learning Iternal Representations by Error Propagation;以及在http://axon.cs.byu.edu~martinez/classes/678/Papers/Werbos_BPTT.pdf Q可获得的Webos,Backpropagation Through Time:What It Does and How Does It Do。
为了在给定训练序列上使用BPTT来训练RNN 101,RNN训练引擎102评估RNN 101的参数相对于客观损失函数的梯度(gradient)以优化目标损失函数。RNN训练引擎102可以分两步完成此操作。首先,RNN训练引擎102通过下述方式来执行前向传播:在每个时间步处理对RNN 101的输入,同时仅将所选择的前向传播信息112保存到训练存储器103中,如训练策略104所示。在前向传播之后,RNN训练引擎102计算在针对多个时间步的RNN 101的输出和目标输出组之间的误差度量,并使用误差度量来反向传播RNN 101的参数相对于贯穿RNN101的整个目标函数的梯度。
前向传播信息112允许RNN训练引擎102从RNN 101的最后——例如最近——保存的时间步继续前向传播,该RNN 101的对应的前向传播信息被保存在训练存储器103中,而无需重新处理在最后保存的时间步之前的RNN 101的时间步。
为了从在RNN 102的一系列时间步中的特定时间步起反向传播梯度,RNN训练引擎102可以从训练存储器103读取在序列中的最后保存的前向传播信息112。RNN训练引擎102可以在最后保存的前向传播信息112的时间步开始并且在RNN训练引擎102从其反向传播梯度的特定时间步结束的序列上执行另一个前向传播,以便获得特定时间步的前向传播信息。在重复的前向传播期间,RNN训练引擎102可以存储由策略104定义的中间状态。
在RNN训练引擎102获得RNN训练引擎102从其反向传播梯度的特定时间步的前向传播信息112之后,RNN训练引擎102可以计算特定时间步的梯度并且从特定时间步起反向传播梯度。在下文中更详细地描述了反向跨单个时间步的反向传播梯度:在http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf可获得的LeCun et al,EfficientBackProp。
RNN训练引擎102可以针对从RNN 101的特定时间步起反向传播梯度重复上述过程,直到梯度被反向传播到包括该特定时间步的RNN 101的时间步序列的开始。例如,RNN训练引擎102可以重复从RNN 101的一系列时间步中的最后时间步开始到该序列中的第一时间步的过程,以贯穿序列反向传播梯度。
在一些实施方式中,用于RNN 101的时间步的前向传播信息112仅包括RNN 101的隐藏状态输出,而在其他实施方式中,用于时间步的前向传播信息112可以包括在给定的时间步的RNN 101的所有内部状态。
用于时间步的RNN 101的内部状态是时间步的RNN的激活。例如,在传统的RNN中,用于时间步的RNN 101的内部状态包括用于该时间步的隐藏状态,因为传统的RNN处理隐藏状态以生成用于时间步的更新的隐藏状态。然而,在其他RNN中,用于时间步的RNN的内部状态可以除了或补充用于时间步的状态之外包括用于时间步的激活。例如,在LSTM中,除了用于时间步的隐藏状态之外,LSTM的内部状态可以包括在时间步期间的LSTM 101的门的值,因为LSTM首先处理隐藏状态以更新其门并且然后使用门的值来生成用于时间步的更新的隐藏状态。在一些实施方式中,用于时间步的RNN 101的隐藏状态也是用于时间步的RNN101的内部状态的一部分。
为了获得前向传播信息112的特定项,RNN训练引擎101可以在前向传播期间将内部状态存储在RNN训练存储器103中,并且在反向传播期间检索所存储的项目。但是,这种方法的一致应用可能导致过多的存储成本,特别是对于执针对大量时间步行的RNN。
或者,RNN训练引擎102可以通过执行RNN 101的全部或部分时间步的前向传播来重建特定项,从而获得前向传播信息112的特定项。例如,如果RNN训练引擎102尚未在RNN训练存储器103中存储任何前向传播信息112,则RNN训练引擎102可以通过下述方式来获得用于RNN 101的第i个时间步的隐藏状态值:从RNN 101的第一时间步到RNN 101的第i-1个时间步执行前向传播。如果RNN训练引擎101已经存储了用于RNN 101的时间步的隐藏状态,则RNN训练引擎102可以处理隐藏状态,以仅使用一个前向传播——即,通过特定时间步的传播——产生用于时间步的内部状态。
因此,RNN训练引擎102可以使用存储的前向传播信息112来重新生成未存储的前向传播信息112。这种方法可以减少训练RNN所需的存储量。然而,由于与重复前向传播相关联的计算成本,该方法的一致应用可使得训练RNN 101在计算上成本高。
策略引擎104接收用于在反向传播期间使用的、分配给存储前向传播信息112的存储器113的量和在其期间RNN101被训练的时间步的数量111作为输入。策略引擎104使用那些输入来确定训练策略114。训练策略114定义何时在训练序列的前向传播期间存储前向传播信息。换句话说,训练策略114定义前向传播信息112中的哪些项将存储在RNN训练存储器103中。
RNN训练引擎102使用训练策略114来确定前向传播信息112中的项的哪些项将存储在RNN训练存储器103中以及在反向传播期间重新生成前向传播信息112中的哪些项。
下面参考图3更详细地描述确定训练策略114。
图2是用于训练递归神经网络的示例过程200的流程图。为方便起见,过程200将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的诸如图1的神经网络系统100的神经网络系统可以执行过程200。
系统接收包括在多个时间步中的每一个处对RNN的相应输入的训练序列(210),并获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据(220)。系统通常从一组训练数据中对训练序列进行采样,以用于训练RNN。分配的存储量通常由管理系统的存储资源的计算机应用程序(例如,操作系统或其他存储管理应用程序)提供。管理系统的存储器资源的计算机应用程序为系统分配一定存储量以存储前向传播。存储量是以诸如字节的存储器特定单位计的量,并且可以是可供系统在单个存储设备中或在一个或多个物理位置中的多个物理存储设备中使用的存储器。
系统根据训练序列中的时间步的数量和根据分配给存储前向传播信息的存储量确定训练策略(230)。在一些实现中,系统确定训练策略,该训练策略平衡前向传播信息的缓存与在反向传播期间的前向传播信息的重新计算之间的折衷。下面参考图3更详细地描述确定训练策略114。
然后,系统根据训练策略在训练序列上训练递归神经网络(240)。
在一些实施方式中,系统将训练序列中的输入从序列中的第一时间步传播到序列中的最后时间步。在前向传播期间,系统根据训练策略存储一些前向传播信息。在前向传播之后,系统将梯度从序列中的最后时间步反向传播到序列中的第一时间步。在反向传播期间,对于每个时间步,系统确定是否需要附加的前向传播信息项来反向传播用于时间步的梯度,即,基于确定系统是否已经存储了反向传播用于时间步的梯度所需的所有前向传播信息。如果系统确定需要附加的前向传播信息项来反向传播用于时间步的梯度,则系统使用存储的前向传播信息重新生成附加的前向传播信息项。
系统可以通过执行RNN的全部或部分时间步的前向传播来重新生成前向传播信息的特定项。例如,系统可以通过从RNN的第一时间步到RNN的第(i-1)个时间步执行前向传播来生成RNN 101的第i个时间步的隐藏状态值。系统也可以处理第i个时间步的隐藏状态,以便仅使用一个前向传播——即,通过第(i+1)个时间步的传播——来生成第(i+1)个时间步的内部状态。
图3是用于确定将存储哪个前向传播信息的示例过程300的流程图。为方便起见,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的诸如图1的神经网络系统100的神经网络系统可以执行过程300。
系统获得在其期间训练递归神经网络的时间步的计数(302)和分配给存储前向传播信息以便在反向传播期间使用的存储量(304)。在其期间训练递归神经网络的时间步的计数通常等于RNN的一批输入序列中的输入数。
系统确定作为存储候选的前向传播信息(306)。候选前向传播信息可以包括用于RNN的时间步的隐藏状态和/或用于RNN的时间步的内部状态。
系统识别用于存储来自训练存储器的前向传播信息的一个或多个策略(308)。策略包括如果系统遵循该策略则系统将存储的一系列存储候选。
系统确定每个策略的计算成本(310)。策略的计算成本是例如在下述方面的估计的计算成本:如果系统遵循该策略,则训练RNN的、生成在递归神经网络的训练期间执行反向传播所必需的所有前向传播信息所需的前向传播的数量。
在一些实施方式中,包括在选择不保存用于y个时间步的隐藏状态之后保存时间步的隐藏状态的策略的计算成本由用于Q1(t,m,y)的以下等式给出,其中,t是执行反向传播的时间步的数量,并且m是可用存储单元的数量:
Q1(t,m,y)=y+C(y,m)+C(t-y,m-1)
包括在选择不保存y个时间步的内部状态之后保存时间步的内部状态的策略的计算成本由用于Q2(t,m,y)的以下等式给出,其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,并且a是时间步的内部状态大小与时间步的隐藏状态大小的比率:
Q2(t,m,y)=y+C(y-1,m)+C(t-y,m-a)
在上述等式中,C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最优成本,即最低可能的计算成本。系统可以使用具有以下边界条件的动态编程来计算等式中的C(t,m)值:C(t,l)=1/2t(t+l)和C(0,m)=0。
系统选择具有最低计算成本的策略(312)并从所选策略确定下一存储的位置和前向传播信息的类型(314)。
系统可以选择前向传播信息,其具有类型i(即,对于隐藏状态i=1,并且对于内部状态i=1)并且以产生最低计算成策略本的方式在时间步序列中处于位置y,并且系统可以确定将存储所选择的前向传播信息。换句话说,系统根据argmini,yQi(t,m,y)来选择i和y。
系统可以重复过程300以生成用于RNN的一系列时间步的训练策略。例如,系统可以使用过程300来确定系统将首先保存的所选前向传播信息的位置和类型。在保存所选择的前向传播信息之后,系统可以将时间步序列分成两个子序列,包括在所选择的前向传播信息的时间步之前的时间步以及所选择的前向传播信息的时间步的第一子序列,和包括在所选择的前向传播信息的时间步之后的时间步的第二子序列。给定每个子序列的时间步计数,系统可以使用分而治之策略对每个子序列执行过程300,以选择要保存的下一个前向传播信息的位置和类型。
可以使用在下面的伪代码中给出的算法,利用上述技术执行确定训练策略,该技术使用利用动态编程的递归分而治之方法:
Figure BDA0001872167860000111
可以使用在以下伪代码中给出的算法来执行计算的训练策略:
Figure BDA0001872167860000121
图4是示出保存前向传播信息的操作示例400。操作示例400示出了在位置y处保存隐藏状态并且将包括位置y处的时间步的时间步序列划分为两个子序列:包括在位置y之前并且包括位置y的序列的部分的第一子序列和在位置y后的第二个子序列。
被配置为训练RNN的训练引擎可以以递归方式并且使用分而治之的方法对子序列执行在操作示例400中所示的划分技术。通过这样做,训练引擎可以确定策略的计算成本,该策略涉及保存在位置y处的前向传播信息并且在存储在位置y的前向传播信息之后遵循最佳——即,最低计算成本——训练策略。系统可以使用所确定的计算成本来执行用于确定要存储哪个前向传播信息的过程,例如,图3的过程300。
本说明书中描述的主题和功能操作的实施例可以被实现在数字电子电路中、在有形地实施的计算机软件或固件中、在计算机硬件中——包括本说明书中公开的结构及其结构等同物、或在它们的一个或多个的组合中。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。替选地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电信号、光信号或电磁信号,其被生成以对信息进行编码以便传输给合适的接收机设备以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板,随机或串行存取存储设备或它们中的一个或多个的组合。然而,计算机存储介质不是传播信号。
术语“数据处理装置”是指数据处理硬件,并且包括用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件之外,该装置可以可选地包括创建用于计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,该任何形式的编程语言包括编译或解释语言或者声明性或过程语言,并且该计算机程序可以以任何形式部署,包括作为独立程序或作为适于在计算环境中使用的模块、组件、子例程、对象或其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以被存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所涉及的程序的单个文件中或者在多个协同文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上或在位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。
如本说明书中所使用的,“引擎(engine)”或“软件引擎”是指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,诸如库、平台、软件开发工具包(“SDK”)或对象。每个引擎可以在任何适当类型的计算设备上实现,该任何适当类型的计算设备例如是服务器、移动电话、平板电脑、笔记本电脑、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其他固定或便携式设备,其包括一个或多个处理器和计算机可读介质。另外,引擎的两个或更多个可以实现在同一计算设备上或不同的计算设备上。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路——例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)——来执行,并且装置也可以实现为该专用逻辑电路。
适合于执行计算机程序的计算机包括,例如,可以基于通用或专用微处理器或两者或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或实施指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦合以从其接收数据或向其传送数据或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,这里仅举几个例子。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;和CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以实现在计算机上,该计算机具有:显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,用于向用户显示信息和键盘;以及,指示设备,例如鼠标或轨迹球,用户可以通过该指示设备向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,该任何形式包括声音、语音或触觉输入。另外,计算机可以通过下述方式与用户交互:向用户使用的设备发送文档和从用户使用的设备接收文档;例如,通过响应于从用户的客户端设备上的web浏览器接收的请求,将网页发送到该web浏览器。
在本说明书中描述的主题的实施例可以实现在计算系统中,该计算系统包括诸如作为数据服务器的后端组件,或者包括诸如应用服务器的中间组件,或者包括诸如具有图形用户界面或Web浏览器的客户端计算机的前端组件,或者包括一个或多个这样的后端、中间或前端组件的任何组合,用户可以通过该Web浏览器与本说明书中描述的主题的实现交互。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和诸如因特网的广域网(“WAN”)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为对任何发明的范围或对所要求保护内容的范围的限制,而是作为可以对于特定发明的特定实施例特定的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。
此外,虽然特征可以在上面描述为在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序或以顺序次序执行,或者所有所示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序,以实现期望的结果。在某些实现中,多任务和并行处理可以是有利的。

Claims (10)

1.一种由一个或多个计算机执行的用于使用基于时间的反向传播在多个训练序列上训练递归神经网络的方法,所述方法包括:
接收训练序列,所述训练序列包括在多个时间步中的每一个处的相应输入;
确定用于处理所述训练序列的训练策略,其中,所述训练策略定义在所述训练序列的前向传播期间何时存储前向传播信息,所述训练策略是诸如用于在后向传播期间平衡在前向传播信息的缓存与前向传播信息的重新计算之间的折衷;
其中,确定所述训练策略包括:
(i)获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据;
(ii)确定以存储候选的形式的前向传播信息,其中,所述候选前向传播信息能够包括用于所述递归神经网络的时间步的隐藏状态和/或用于所述递归神经网络的时间步的内部状态;
(iii)识别用于存储来自存储器的前向传播信息的一个或多个策略,其中,每个策略包括如果遵循该策略则被存储的存储候选的序列;
(iv)确定用于每个策略的计算成本;其中,包括在选择不保存用于y个时间步的隐藏状态之后保存时间步的隐藏状态的策略的计算成本Q1(t,m,y)由以下给出:
Q1(t,m,y)=y+C(y,m)+C(t-y,m-1)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;以及
包括在选择不保存y个时间步的内部状态之后保存时间步的内部状态的策略的计算成本Q2(t,m,y)由以下给出:
Q2(t,m,y)=y+C(y-I,m)+C(t-y,m-α)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,a是时间步的内部状态的大小与时间步的隐藏状态的大小的比率,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;
(v)选择具有所述最低计算成本的策略;以及
(vi)从所选择的策略确定下一存储的位置和前向传播信息的类型;
(vii)在所述训练序列中划分时间步序列以获得第一子序列和第二子序列,所述第一子序列包括在所确定的下一个存储的位置之前的时间步,所述第二子序列包括在所确定的下一个存储的位置之后的时间步;以及
针对每个所获得的子序列递归地重复步骤(i)至(vii)以选择要存储的下一个前向传播信息的位置;
所述方法进一步包括:
通过以下根据所述训练策略在所述训练序列上训练所述递归神经网络:
将在所述训练序列中的所述输入从所述序列中的第一时间步前向传播到所述序列中的最后时间步;
在所述前向传播期间,根据所述训练策略存储前向传播信息;以及
将梯度从所述序列中的所述最后时间步反向传播到所述序列中的所述第一时间步,包括:
针对每个时间步,确定是否需要附加的前向传播信息来反向传播用于所述时间步的所述梯度,并且如果需要,则使用所存储的前向传播信息来重新生成所述附加的前向传播信息。
2.根据权利要求1所述的方法,其中,所述前向传播信息包括隐藏状态。
3.根据权利要求1所述的方法,其中,所述前向传播信息包括内部状态。
4.根据权利要求1所述的方法,其中,所述前向传播信息包括隐藏状态和内部状态两者。
5.根据权利要求4所述的方法,其中,所述训练策略针对每个时间步定义是否存储用于所述时间步的隐藏状态、内部状态、或不存储所述内部状态和所述内部状态中的任何一个。
6.根据权利要求1所述的方法,其中:
确定所述策略包括:
针对每个时隙,基于所述时间步的数量和分配给存储所述前向传播信息的所述存储量来确定存储相关的前向传播信息段的计算成本;以及
向所述训练策略添加一组被确定为具有最低计算成本的前向传播信息段;以及
根据所述训练策略在所述训练序列上训练所述递归神经网络包括存储已经被添加到所述训练策略中的所述一组前向传播信息段。
7.根据权利要求1所述的方法,进一步包括:
根据所述策略确定在所述训练序列上训练所述递归神经网络的计算成本。
8.根据权利要求7所述的方法,进一步包括:
提供识别所述计算成本的数据以呈现给用户。
9.一种或多种编码有指令的非暂时性计算机存储介质,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行用于使用基于时间的反向传播在多个训练序列上训练递归神经网络的操作,所述操作包括:
接收训练序列,所述训练序列包括在多个时间步中的每一个处的相应输入;
确定用于处理所述训练序列的训练策略,其中,所述训练策略定义在所述训练序列的前向传播期间何时存储前向传播信息,所述训练策略是诸如在后向传播期间平衡前向传播信息的缓存与前向传播信息的重新计算之间的折衷;
其中,确定所述训练策略包括:
(i)获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据;
(ii)确定以存储候选的形式的前向传播信息,其中,所述候选前向传播信息能够包括用于所述递归神经网络的时间步的隐藏状态和/或用于所述递归神经网络的时间步的内部状态;
(iii)识别用于存储来自存储器的前向传播信息的一个或多个策略,其中,每个策略包括如果遵循该策略则被存储的存储候选的序列;
(iv)确定用于每个策略的计算成本;其中,包括在选择不保存用于y个时间步的隐藏状态之后保存时间步的隐藏状态的策略的计算成本Q1(t,m,y)由以下给出:
Q1(t,m,y)=y+C(y,m)+C(t-y,m-1)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;以及
包括在选择不保存y个时间步的内部状态之后保存时间步的内部状态的策略的计算成本Q2(t,m,y)由以下给出:
Q2(t,m,y)=y+C(y-1,m)+C(t-y,m-α)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,a是时间步的内部状态的大小与时间步的隐藏状态的大小的比率,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;
(v)选择具有所述最低计算成本的策略;以及
(vi)从所选择的策略确定下一存储的位置和前向传播信息的类型;
(vii)在所述训练序列中划分时间步序列以获得第一子序列和第二子序列,所述第一子序列包括在所确定的下一个存储的位置之前的时间步,所述第二子序列包括在所确定的下一个存储的位置之后的时间步;以及
针对每个所获得的子序列递归地重复步骤(i)至(vii)以选择要存储的下一个前向传播信息的位置;
所述操作 进一步包括:
通过以下根据所述训练策略在所述训练序列上训练所述递归神经网络:
将在所述训练序列中的所述输入从所述序列中的第一时间步前向传播到所述序列中的最后时间步;
在所述前向传播期间,根据所述训练策略存储前向传播信息;以及
将梯度从所述序列中的所述最后时间步反向传播到所述序列中的所述第一时间步,包括:
针对每个时间步,确定是否需要附加的前向传播信息来反向传播用于所述时间步的所述梯度,并且如果需要,则使用所存储的前向传播信息来重新生成所述附加的前向传播信息。
10.一种包括一个或多个计算机和存储指令的一个或多个存储设备的系统,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机执行用于使用基于时间的反向传播在多个训练序列上训练递归神经网络的操作,所述操作包括:
接收训练序列,所述训练序列包括在多个时间步中的每一个处的相应输入;
确定用于处理所述训练序列的训练策略,其中,所述训练策略定义在所述训练序列的前向传播期间何时存储前向传播信息,所述训练策略是诸如在后向传播期间平衡前向传播信息的缓存与前向传播信息的重新计算之间的折衷;
其中,确定所述训练策略包括:
(i)获得定义分配给存储用于在反向传播期间使用的前向传播信息的存储量的数据;
(ii)确定以存储候选的形式的前向传播信息,其中,所述候选前向传播信息能够包括用于所述递归神经网络的时间步的隐藏状态和/或用于所述递归神经网络的时间步的内部状态;
(iii)识别用于存储来自存储器的前向传播信息的一个或多个策略,其中,每个策略包括如果遵循该策略则被存储的存储候选的序列;
(iv)确定用于每个策略的计算成本;其中,包括在选择不保存用于y个时间步的隐藏状态之后保存时间步的隐藏状态的策略的计算成本Q1(t,m,y)由以下给出:
Q1(t,m,y)=y+C(y,m)+C(t-y,m-1)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;以及
包括在选择不保存y个时间步的内部状态之后保存时间步的内部状态的策略的计算成本Q2(t,m,y)由以下给出:
Q2(t,m,y)=y+C(y-1,m)+C(t-y,m-α)
其中,t是执行反向传播的时间步的数量,m是可用存储单元的数量,a是时间步的内部状态的大小与时间步的隐藏状态的大小的比率,并且C(t,m)是给定分配的存储量等于m的情况下在t个时间步序列上反向传播的最低可能的计算成本;
(v)选择具有所述最低计算成本的策略;以及
(vi)从所选择的策略确定下一存储的位置和前向传播信息的类型;
(vii)在所述训练序列中划分时间步序列以获得第一子序列和第二子序列,所述第一子序列包括在所确定的下一个存储的位置之前的时间步,所述第二子序列包括在所确定的下一个存储的位置之后的时间步;以及
针对每个所获得的子序列递归地重复步骤(i)至(vii)以选择要存储的下一个前向传播信息的位置;
所述操作 进一步包括:
通过以下根据所述训练策略在所述训练序列上训练所述递归神经网络:
将在所述训练序列中的所述输入从所述序列中的第一时间步前向传播到所述序列中的最后时间步;
在所述前向传播期间,根据所述训练策略存储前向传播信息;以及
将梯度从所述序列中的所述最后时间步反向传播到所述序列中的所述第一时间步,包括:
针对每个时间步,确定是否需要附加的前向传播信息来反向传播用于所述时间步的所述梯度,并且如果需要,则使用所存储的前向传播信息来重新生成所述附加的前向传播信息。
CN201780031192.4A 2016-05-20 2017-05-19 存储器高效的基于时间的反向传播 Active CN109313722B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662339784P 2016-05-20 2016-05-20
US62/339,784 2016-05-20
PCT/US2017/033698 WO2017201507A1 (en) 2016-05-20 2017-05-19 Memory-efficient backpropagation through time

Publications (2)

Publication Number Publication Date
CN109313722A CN109313722A (zh) 2019-02-05
CN109313722B true CN109313722B (zh) 2021-11-26

Family

ID=59034873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780031192.4A Active CN109313722B (zh) 2016-05-20 2017-05-19 存储器高效的基于时间的反向传播

Country Status (4)

Country Link
US (1) US11256990B2 (zh)
EP (1) EP3446260B1 (zh)
CN (1) CN109313722B (zh)
WO (1) WO2017201507A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6852365B2 (ja) * 2016-11-25 2021-03-31 富士通株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
US11093819B1 (en) 2016-12-16 2021-08-17 Waymo Llc Classifying objects using recurrent neural network and classifier neural network subsystems
CN110647696B (zh) * 2018-06-08 2022-06-14 北京三快在线科技有限公司 一种业务对象的排序方法及装置
CN112567395A (zh) 2018-06-12 2021-03-26 鹰图公司 计算机辅助调度系统的人工智能应用
US11451565B2 (en) 2018-09-05 2022-09-20 Oracle International Corporation Malicious activity detection by cross-trace analysis and deep learning
US11218498B2 (en) 2018-09-05 2022-01-04 Oracle International Corporation Context-aware feature embedding and anomaly detection of sequential log data using deep recurrent neural networks
US11082438B2 (en) 2018-09-05 2021-08-03 Oracle International Corporation Malicious activity detection by cross-trace analysis and deep learning
KR20200053886A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
US11769035B1 (en) * 2018-12-13 2023-09-26 Amazon Technologies, Inc. Automatically determining configurations for executing recurrent neural networks
US11782158B2 (en) 2018-12-21 2023-10-10 Waymo Llc Multi-stage object heading estimation
US10867210B2 (en) 2018-12-21 2020-12-15 Waymo Llc Neural networks for coarse- and fine-object classifications
US10977501B2 (en) 2018-12-21 2021-04-13 Waymo Llc Object classification using extra-regional context
JP2021047736A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 学習装置及び学習方法
CN111222628B (zh) * 2019-11-20 2023-09-26 深圳前海微众银行股份有限公司 循环神经网络训练优化方法、设备、系统及可读存储介质
CN111737922A (zh) * 2020-06-24 2020-10-02 深圳前海微众银行股份有限公司 基于循环神经网络的数据处理方法、装置、设备及介质
US20220138903A1 (en) * 2020-11-04 2022-05-05 Nvidia Corporation Upsampling an image using one or more neural networks
US20220180175A1 (en) * 2020-12-08 2022-06-09 Oxford University Innovation Limited Optical neural network
US11451670B2 (en) 2020-12-16 2022-09-20 Oracle International Corporation Anomaly detection in SS7 control network using reconstructive neural networks
DE102021109169A1 (de) 2021-04-13 2022-10-13 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Trainieren eines neuronalen Netzes
CN113361574A (zh) * 2021-05-27 2021-09-07 北京百度网讯科技有限公司 数据处理模型的训练方法、装置、电子设备及存储介质
CN116095327A (zh) * 2021-11-01 2023-05-09 深圳市中兴微电子技术有限公司 视频编码方法、网络设备及存储介质
CN114692829B (zh) * 2022-03-24 2024-04-02 西安交通大学 基于dnn模型的检查点选择方法、设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598972A (zh) * 2015-01-22 2015-05-06 清华大学 一种大规模数据回归神经网络快速训练方法
WO2015162050A1 (en) * 2014-04-22 2015-10-29 Siemens Aktiengesellschaft Method, controller, and computer program product for controlling a target system by separately training a first and a second recurrent neural network models, which are initially trained using oparational data of source systems

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015130928A1 (en) * 2014-02-26 2015-09-03 Nancy Packes, Inc. Real estate evaluating platform methods, apparatuses, and media

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015162050A1 (en) * 2014-04-22 2015-10-29 Siemens Aktiengesellschaft Method, controller, and computer program product for controlling a target system by separately training a first and a second recurrent neural network models, which are initially trained using oparational data of source systems
CN104598972A (zh) * 2015-01-22 2015-05-06 清华大学 一种大规模数据回归神经网络快速训练方法

Also Published As

Publication number Publication date
WO2017201507A1 (en) 2017-11-23
US11256990B2 (en) 2022-02-22
EP3446260B1 (en) 2019-09-25
US20190188572A1 (en) 2019-06-20
EP3446260A1 (en) 2019-02-27
CN109313722A (zh) 2019-02-05

Similar Documents

Publication Publication Date Title
CN109313722B (zh) 存储器高效的基于时间的反向传播
US11568250B2 (en) Training neural networks using a prioritized experience memory
US11651208B2 (en) Training action selection neural networks using a differentiable credit function
US11195521B2 (en) Generating target sequences from input sequences using partial conditioning
US20210295161A1 (en) Training neural networks represented as computational graphs
JP6666457B2 (ja) リカレントニューラルネットワークモデルの圧縮
CN105719001B (zh) 使用散列的神经网络中的大规模分类
US11861474B2 (en) Dynamic placement of computation sub-graphs
US10776670B2 (en) Imagination-based agent neural networks
US20230049747A1 (en) Training machine learning models using teacher annealing
US10860895B2 (en) Imagination-based agent neural networks
WO2017100711A1 (en) Augmenting neural networks with external memory
CN108780521B (zh) 关联长短期记忆神经网络层
US11755879B2 (en) Low-pass recurrent neural network systems with memory
US10909451B2 (en) Apparatus and method for learning a model corresponding to time-series input data
US11164066B1 (en) Generating parameter values for recurrent neural networks
US11062229B1 (en) Training latent variable machine learning models using multi-sample objectives
CN113490955A (zh) 用于产生金字塔层的架构的系统和方法
EP4033446A1 (en) Method and apparatus for image restoration
US10635972B1 (en) Recurrent neural networks with rectified linear units

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant