使用优先级队列训练神经网络制造技术

技术编号:21061135 阅读:32 留言:0更新日期:2019-05-08 07:30
用于使用优先级队列训练神经网络的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。所述方法的一种包括:保持用于识别先前产生的一组K个输出序列的数据;从该组输出序列中选择输出序列的至少一个;对于每个选定的输出序列,确定相应的分值;对于每个所选择的序列,确定对控制器参数的当前值的相应第一更新;使用控制器神经网络生成一批新的输出序列;获得新输出序列的每个的相应奖励;从新输出序列和保持数据中的输出序列确定具有最高奖励的K个输出序列;并修改保持的数据。

【技术实现步骤摘要】
使用优先级队列训练神经网络
本说明书涉及训练神经网络。
技术介绍
神经网络是机器学习模型,其使用一个或多个非线性单元层来预测对于所接收输入而言的输出。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出用作对于在网络中下一层(即,下一个隐藏层或输出层)的输入。网络的每个层根据相应参数集的当前值从接收的输入生成输出。一些神经网络是递归神经网络。递归神经网络是接收输入序列并从输入序列生成输出序列的神经网络。特别地,递归神经网络可以使用来自前一时间步长的网络的一些或全部内部状态来计算在当前时间步长的输出。
技术实现思路
本说明书描述了在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统,该系统从输入电子文档中选择文本跨度,该输入电子文档回答包括多个问题令牌的输入问题。本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。在许多神经网络训练场景中,在训练过程开始时不能获得真实数据(groundtruth)输出,即,应由神经网络生成的高质量输出。这种情况的示例包括何时神经网络被训练以生成定义神经网络架构的输出或训练执行特定任务的另一神经网络的超参数。作为另一示例,这可以在神经网络被训练以合成计算机程序,即,生成计算机程序令牌序列时发生,计算机程序令牌序列定义要执行以执行特定计算机编程任务的计算机程序。在所有这些示例中,虽然可以确定给定的输出序列是否是高质量的,即通过评估其他神经网络的性能或通过执行计算机程序来检查计算机编程任务的输出,但是通常不先验知道哪些序列将导致高性能。因为这一点,不能使用传统的监督学习技术进行训练。相反,经常使用诸如策略梯度的强化学习方法。在这样的技术中,在训练期间,神经网络“探索”可能的输出序列的空间,以基于奖励信号逐渐识别高质量序列。然而,这种探索在计算上是昂贵的并且消耗大量时间。也就是说,在这种情况下用于训练神经网络的现有技术消耗大量的计算资源和挂钟时间。另一方面,所描述的技术在整个训练期间维持最高执行序列的优先级队列,并利用该队列来更新网络的参数。在这样做时,所描述的系统大大减少了训练神经网络以产生高质量输出序列所需的计算资源的时间和数量。换句话说,该系统可以有效地训练神经网络以产生用于特定任务的高质量输出序列,而不需要已经被分类为对于特定任务执行良好的任何序列,并且可以以比其他技术在计算上更有效得多的方式来这样做。在附图和以下描述中阐述了本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。附图说明图1示出了示例神经网络训练系统。图2是在训练控制器神经网络期间用于训练迭代的示例过程的流程图。图3是用于确定优先级队列参数更新和更新优先级队列的示例过程的流程图。各附图中相同的附图标号和名称表示相同的元件。具体实施方式该说明书描述了实现为在一个或多个位置中的一个或多个计算机上的计算机程序的系统,其训练控制器神经网络以生成输出序列。控制器神经网络可以配置为生成各种输出序列中的任何一种。例如,输出序列可以是一系列计算机程序令牌,其定义了要被执行以执行特定计算机编程任务的计算机程序。也就是说,由控制器神经网络生成的每个输出序列可以包括使用特定计算机编程语言的相应令牌,并且令牌可以共同定义可执行以执行特定任务的计算机程序。作为另一示例,输出序列可以是神经网络架构超参数的值的序列,神经网络架构超参数定义用于执行特定神经网络任务的架构。也就是说,由控制器神经网络生成的每个输出序列可以在多个时间步长中的每一个处包括对应于该时间步长的超参数的相应值,例如,卷积滤波器的大小、激活函数的类型以及给定层从其接收输入的层等等。作为另一示例,输出序列可以是机器学习训练过程的超参数的值的序列,该过程用于训练神经网络以执行特定的神经网络任务。也就是说,由控制器神经网络生成的每个输出序列可以在多个时间步长中的每一个处包括对应于该时间步长的训练超参数的超参数的相应值。例如,训练超参数可以包括定义更新规则的超参数、定义一个或多个损失项的相对权重的超参数和定义网络参数的初始化方案的超参数等等。图1示出了示例性神经网络训练系统100。神经网络训练系统100是实现为在一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例,其中,实现下面描述的系统、组件和技术。神经网络训练系统100训练具有参数112(在本说明书中称为“控制器参数”)的控制器神经网络110,其产生输出序列。如上所述,控制器神经网络110可以被配置为生成各种输出序列中的任何一种。特别地,在一些实现中,控制器神经网络110是递归神经网络,其逐个时间步长地生成输出序列时间。在每个时间步长,递归神经网络被配置为接收输出序列中的前一输出作为输入,并根据控制器参数处理前一输出,以在该时间步长生成在可能输出上的分值分布。然后,系统100通过从分值分布中抽样或选择最高分值的可能输出来选择在该时间步长的输出。然而,通常,控制器神经网络可以是任何类型的神经网络,其产生输出,该输出定义在输出序列中的每个时间步长的可能输出上的相应的分值分布。其他类型的神经网络的示例包括基于自注意的神经网络和卷积神经网络。系统100训练控制器神经网络110以使用迭代训练过程从控制器参数112的初始值确定控制器参数112的训练值。在训练过程的每次迭代中,系统100中的训练引擎120在迭代时将参数值更新116应用于当前控制器参数值114。为了提高训练的有效性,系统100保持优先级队列130。在训练过程的任何给定迭代中,优先级队列130包括用于识别先前在训练期间由控制器神经网络110生成的一组K个输出序列的数据,以及,对于在该组中的每个输出序列,计量输出序列的质量的相应奖励。通常,K是大于1的固定整数,例如,5、10或20。优先级队列130可以在训练过程的开始时初始化为空,或者可以用K个随机序列或默认序列初始化。在每次迭代时,系统100使控制器神经网络根据当前控制器参数值114生成一批142新的输出序列。然后,奖励引擎140为每个新输出序列确定相应的奖励144。给定输出序列的奖励是计量输出序列质量的数值,即,相对于控制器神经网络110正被训练执行的任务。在一些实现中,奖励引擎140将每个新的输出序列提供给外部系统用于评估,并从外部系统获得序列的奖励。在其他实现中,奖励引擎140评估每个新输出序列的质量以确定用于输出序列的奖励。例如,当输出序列定义用于目标任务的神经网络的架构时,奖励引擎140可以训练(例如,针对预定数量的训练迭代或训练时期)具有由输出序列定义的架构的神经网络的实例,并且然后确定训练的神经网络对测试数据集的准确性作为奖励。作为另一示例,当输出序列定义计算机程序时,在从计算机编程任务采样的一个或多个测试用例上执行由序列定义的程序代码(对于每个测试输入单独执行)。基于程序的输出对每个测试用例进行评分,并将分值相加以计算用于程序,即,用于序列的最终奖励。作为另一示例,当输出序列定义用于目标神经网络的神经网络训练过程的超参数时,奖励引擎140可以训练具有由输出序列定义的超参数的目标神经网络,并且然后确定训练的神经网络对测试数据集的准确性作为奖励。训练引擎120使用所生成的奖励14本文档来自技高网...

【技术保护点】
1.一种训练具有多个控制器参数的控制器神经网络以通过从所述控制器参数的初始值确定所述控制器参数的训练值来生成输出序列的方法,所述方法包括:保持识别先前在训练期间由所述控制器神经网络生成的一组K个输出序列的数据,以及对于所述组中的每个输出序列,保持计量所述输出序列的质量的相应奖励,其中,K是大于1的整数;从所述组的输出序列中选择所述输出序列中的至少一个;对于每个所选择的输出序列,根据所述控制器参数的当前值,确定由所述控制器神经网络分配给所选择的输出序列的相应分值;对于每个所选择的序列,确定增加由所述控制器神经网络分配给所选择的输出序列的分值的、对所述控制器参数的所述当前值的相应第一更新;根据所述控制器参数的所述当前值,使用所述控制器神经网络生成一批新的输出序列;获得用于所述新的输出序列中的每个的相应奖励;从所述新的输出序列和在所保持的数据中的所述输出序列确定具有最高奖励的K个输出序列;以及修改所保持的数据以识别所确定的K个输出序列和用于所述K个输出序列中的每个的所述相应奖励。

【技术特征摘要】
2017.10.27 US 62/578,3551.一种训练具有多个控制器参数的控制器神经网络以通过从所述控制器参数的初始值确定所述控制器参数的训练值来生成输出序列的方法,所述方法包括:保持识别先前在训练期间由所述控制器神经网络生成的一组K个输出序列的数据,以及对于所述组中的每个输出序列,保持计量所述输出序列的质量的相应奖励,其中,K是大于1的整数;从所述组的输出序列中选择所述输出序列中的至少一个;对于每个所选择的输出序列,根据所述控制器参数的当前值,确定由所述控制器神经网络分配给所选择的输出序列的相应分值;对于每个所选择的序列,确定增加由所述控制器神经网络分配给所选择的输出序列的分值的、对所述控制器参数的所述当前值的相应第一更新;根据所述控制器参数的所述当前值,使用所述控制器神经网络生成一批新的输出序列;获得用于所述新的输出序列中的每个的相应奖励;从所述新的输出序列和在所保持的数据中的所述输出序列确定具有最高奖励的K个输出序列;以及修改所保持的数据以识别所确定的K个输出序列和用于所述K个输出序列中的每个的所述相应奖励。2.根据权利要求1所述的方法,其中,对于每个所选择的序列,确定增加由所述控制器神经网络分配给所选择的输出序列的分值的、对所述控制器参数的所述当前值的相应第一更新包括:确定优先级队列目标函数的梯度,所述梯度取决于由所述神经网络分配给所选择的序列的所述分值的对数。3.根据权利要求1或2中的任一项所述的方法,其中,从所述组的输出序列中选择所述输出序列中的至少一个包括:选择所述组中的所有输出序列。4.根据权利要求1或2中的任一项所述的方法,其中,从所述组的输出序列中选择所述输出序列中的至少一个包括:从所述组选择随机输出序列。5.根据权利要求1-4中的任一项所述的方法,进一步包括:使用强化学习技术确定对所述控制器参数的所述当前值的第二更新,所述第二更新增加对于由所述控制器神经网络生成的输出序列所接收的所述奖励。6.根据权利要求5所述的方法,其中,所述强化学习技术是策略梯...

【专利技术属性】
技术研发人员:穆罕默德·诺劳兹丹尼尔·阿伦·阿沃拉菲亚国·V·勒
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国,US

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

1