一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

利用权重共享的神经架构搜索的制作方法

2022-11-14 03:22:00 来源:中国专利 TAG:

利用权重共享的神经架构搜索
1.相关申请的交叉引用
2.本技术要求于2020年3月23日提交的美国专利申请序列号62/993,573的优先权,该申请的全部内容通过引用并入本文。


背景技术:

3.本说明书涉及确定神经网络的架构。
4.神经网络是采用一层或多层非线性单元来针对接收到的输入预测输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层——即,下一隐藏层或输出层——的输入。网络的每层根据相应参数的集合的当前值来从接收到的输入生成输出。


技术实现要素:

5.本说明书描述了系统如何在一个或多个位所中的一个或多个计算机上被实施为计算机程序,所述计算机程序确定被配置为执行特定机器学习任务的神经网络的网络架构。
6.更具体地,系统确定在指定的资源约束的集合内执行机器学习任务的神经网络的架构。即,资源约束指定了神经网络在执行任务时消耗了多少计算资源的约束。
7.本说明书所描述的主题的特定实施例可以被实施,以便实现以下优点中的一个或多个。
8.在计算资源有限的设备上——例如移动设备、智能设备或其他边缘设备——执行机器学习任务需要既准确又计算高效的神经网络架构。例如,相同的具体神经网络架构如果被部署在速度较慢的设备上,则它可能又需要多于一个数量级的推断时间。此外,由于硬件和设备驱动器的差异,即使具有类似整体速度的两个设备(例如由不同制造商制造的智能电话cpu)也可能偏向非常不同的神经网络架构。因此,本说明书中描述的特定实施例的动机在于与如何确定针对具有特定硬件资源约束的具体设备优化的不同大小的神经网络架构以及如何在这种设备上实现这种模型的有效部署相关的考虑。
9.更具体地,所描述的技术可以被用于搜索神经网络的神经网络架构,该神经网络架构可以执行任务,同时满足资源消耗的资源约束,并因此识别可以被有效部署在一个或多个设备的目标集合上的单个架构或一系列架构,以计算具有目标时延或满足不同资源约束的推断。
10.具体地,本说明书中描述的新颖的奖励函数可以允许系统有效地识别出当被部署在目标设备上时既能在任务上表现良好又具有近似目标时延——即,目标时延可接受范围内的时延(或其他目标资源要求)——的架构。
11.而且,所描述的技术允许系统识别具有近似目标时延(或满足特定其他资源约束)的架构,同时消耗比用于搜索这种架构的现有技术少得多的计算资源。具体地,通过使用所描述的奖励函数,当接收到新的时延目标或部署在不同的设备集上时,通常十分计算密集
的超参数调整要求会被大大降低。
12.附加地,由搜索过程消耗的存储器量可以通过使用再具体化(rematerialization)显著减少,如下所述。
13.而且,通过下面称为滤波器预热和op预热的操作更有效地搜索搜索空间,所得架构的质量可以被提高。
14.本说明书所描述的主题的一个或多个实施例的细节是在下面的附图和描述中陈述的。主题的其他特征、方面和优点将通过描述、附图和权利要求而变得显而易见。
附图说明
15.图1示出了示例神经架构搜索系统。
16.图2是用于选择要被部署用于执行机器学习任务的神经网络的示例过程的流程图。
17.图3是用于执行联合更新的迭代的示例过程的流程图。
18.图4是用于执行架构搜索的预热阶段的示例过程的流程图。
19.在各个附图中,相同的附图标记和名称指示相同的元件。
具体实施方式
20.本说明书描述了在一个或多个位所中的一个或多个计算机上被实施为计算机程序的系统,以确定被配置为执行特定机器学习任务的神经网络的网络架构。
21.通常,系统通过搜索候选架构的空间来确定架构。空间中的每个候选架构都具有模型参数的共享集合的不同子集。换言之,每个候选架构都执行操作的集合,这些操作使用模型参数的共享集合的不同子集。每个候选架构具有的子集由对应的决策值的集合定义,该决策值的集合包括多个分类决策中的每个分类决策的相应决策值。换言之,分类决策的决策值指定哪些操作由候选架构执行,并相应地指定共享集合中的哪些模型参数由架构使用。
22.该系统通过联合更新(i)控制器策略参数的集合,所述控制器策略参数为多个分类决策中的每个分类决策定义相应概率分布,以及(ii)参数的共享集合来确定架构。在联合更新之后,系统可以使用更新后的控制器策略参数来选择一个或多个架构。
23.具体地,下面的描述描述了系统确定神经网络的架构,该神经网络当部署在一个或多个计算设备的特定目标集合上时以大约指定的目标时延——例如落在目标时延的指定范围内的时延——执行机器学习任务。
24.然而,更一般地,系统可以确定满足多种资源约束中的任何一种的架构,所述多种资源约束指定当部署在计算设备的目标集合上时执行任务时神经网络可以消耗多少计算资源。
25.作为示例,除了或代替用于执行输入或输入批量的推断的神经网络的运行时时延,约束的其他示例包括神经网络在执行任务时执行的每秒浮点运算(flops)以及在部署用于执行任务时神经网络的存储器占用。
26.换言之,如果不同类型的计算资源消耗约束被使用,则下面描述的时延项可以被替换为类似结构的项,该类似结构的项在用于学习控制器策略参数的奖励函数中合并不同
的资源约束。
27.而且,下面的描述描述了机器学习任务是计算机视觉任务(也称为“图像处理任务”),并且候选架构空间是用于执行计算机视觉任务的卷积神经网络架构空间。
28.换言之,在下面的描述中,神经网络是卷积神经网络,它被配置为接收输入图像,并且处理输入图像以生成输入图像的网络输出,即,执行某种图像处理任务。在本说明书中,处理输入图像是指使用神经网络处理图像像素的强度值。
29.例如,任务可以是图像归类,并且由神经网络为给定图像生成的输出可以是对象分类的集合中的每个对象分类的分数,每个分数表示图像包含属于该分类的对象的图像的估计可能性。
30.作为另一示例,任务可以是图像嵌入生成,并且由神经网络生成的输出可以是输入图像的数字嵌入。
31.作为再一示例,任务可以是对象检测,并且由神经网络生成的输出可以识别输入图像中的描绘了特定类型的对象的位所,例如图像内的边界框或其他几何区域。
32.作为再一示例,任务可以是图像分割,并且由神经网络生成的输出可以为输入图像的每个像素定义该像素属于多个分类中的哪个分类。
33.然而,更一般地,所描述的技术可以被用于确定神经网络的架构,该架构可以执行多种任务中的任何一种,包括处理除图像之外的输入的任务。
34.作为示例,如果神经网络的输入是互联网资源(例如网页)、文档或文档的部分或者从互联网资源、文档或文档的部分中提取的特征,则任务可以是对资源或文档进行归类,即,由神经网络为给定的互联网资源、文档或文档的部分生成的输出可以是主题的集合中的每个主题的分数,每个分数表示互联网资源、文档或文档部分与该主题相关的估计可能性。
35.作为另一示例,如果神经网络的输入是特定广告的印象上下文(impression context)的特征,则由神经网络生成的输出可以是表示特定广告将被点击的估计可能性的分数。
36.作为另一示例,如果神经网络的输入是针对用户的个性化推荐的特征,例如表征推荐上下文的特征,例如表征用户先前采取的动作的特征,则由神经网络生成的输出可能是内容项的集合中的每个内容项的分数,每个分数表示用户将对被推荐该内容项做出积极响应的估计可能性。
37.作为另一示例,如果神经网络的输入是一种语言的文本序列,则由神经网络生成的输出可以是另一语言的文本段的集合中的每个文本段的分数,每个分数表示另一语言的该文本段是输入文本到另一语言的正确翻译的估计可能性。
38.作为另一示例,该任务可以是音频处理任务。例如,如果神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以是文本段的集合中的每个文本段的分数,每个分数表示该文本段是话语的正确转录的估计可能性。作为另一示例,该任务可以是关键字检出任务,在所述关键字检出任务中如果神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以指示特定词语或短语(“热门词”)是否在话语中说出。作为另一示例,如果神经网络的输入是表示口语话语的序列,则由神经网络生成的输出可以识别说出该话语的自然语言。
39.作为另一示例,任务可以是对特定自然语言的文本序列操作的自然语言处理或理解任务,例如蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、语法任务等。
40.作为另一示例,该任务可以是文本到语音的任务,其中输入是自然语言中的文本或自然语言中的文本特征,并且网络输出是谱图或定义自然语言中正在说出的文本的音频其他数据。
41.作为另一示例,该任务可以是健康预测任务,其中输入是患者的电子健康记录数据,并且输出是与患者的未来健康相关的预测,例如应该对患者采用的预测治疗、患者发生不良健康事件的可能性或患者的预测诊断。
42.作为另一示例,该任务可以是智能体控制任务,其中输入是表征环境状态的观测,并且输出定义智能体响应于观测要执行的动作。例如,智能体可以是现实世界或模拟机器人、工业设施的控制系统或控制不同种类的智能体的控制系统。
43.作为另一示例,该任务可以是基因组学任务,其中输入是表示dna序列或其他分子序列的片段的序列,并且输出是用于下游任务的片段的嵌入——例如通过对dna序列片段的数据集合使用无监督学习技术——或下游任务的输出。下游任务的示例包括启动子位点预测、甲基化分析、预测非编码变体的功能效应等。
44.在一些情况下,机器学习任务是多个单独的机器学习任务的组合,即,神经网络被配置为执行多个不同的单独的机器学习任务,例如上面提及的机器学习任务中的两个或多个。例如,神经网络可以被配置为执行多个单独的自然语言理解任务。可选地,网络输入可以包括要对网络输入执行的单独的自然语言理解任务的标识符。作为另一示例,神经网络可以被配置为执行多个单独的图像处理或计算机视觉任务,即,通过处理单个输入图像来并行生成多个不同的单独图像处理任务的输出。
45.图1示出了示例神经架构搜索系统100。神经架构搜索系统100是一个或多个位所中的一个或多个计算机上被实施为计算机程序的系统的示例,其中下面描述的系统、组件和技术可以被实施。
46.神经架构搜索系统100是获得用于特定机器学习任务的训练数据102和验证数据104并且使用训练数据102和验证数据104选择用于执行任务的神经网络150的系统。
47.通常,训练数据102和验证数据104都包括神经网络输入的集合(也称为训练或验证示例),并且针对每个网络输入包括应该由神经网络生成以执行特定任务的相应目标输出。训练数据102和验证数据104可以包括不同的神经网络输入的集合,即,使得验证数据104可以被用于有效地测量已经在训练数据102上训练的神经网络在新输入上的表现良好的程度。
48.系统100可以以多种方式中的任何一种接收训练数据102和验证数据104。例如,系统100可以通过数据通信网络接收作为来自系统的远程用户的上传的训练数据,例如使用由系统100提供的应用编程接口(api)。然后系统100可以将接收到的训练数据随机划分为训练数据102和验证数据104。作为另一示例,系统100可以接收来自用户的输入,该输入指定系统100已经维护的哪些数据应该被用于训练神经网络。
49.系统100还例如从用户接收约束数据130,该约束数据130指定用于在训练之后和推断期间执行机器学习任务的目标时延,即,用于在架构已经被确定之后处理特定任务的新输入。
50.通常,目标时延是当部署在一个或多个计算设备的目标集合上时神经网络的目标时延。
51.作为一个示例,一个或多个硬件设备的目标集合可以是单个具体的边缘设备,例如移动电话、智能扬声器或另一嵌入式计算设备或其他边缘设备。作为特定示例,边缘设备可以是具有具体类型的硬件加速器或其他计算机芯片的移动电话或其他设备,神经网络将被部署在该计算机芯片上。
52.作为另一示例,一个或多个硬件设备的目标集合可以是一个或多个硬件加速器设备的集合,例如asic、fpga或真实世界智能体上的张量处理单元(tpu),所述智能体例如车辆——例如自动驾驶汽车——或机器人。
53.作为再一示例,一个或多个硬件加速器设备的目标集合可以是数据中心中的硬件加速器的集合。
54.即,当神经网络被部署在一个或多个计算设备的目标集合上时,目标时延测量对一批量的一个或多个示例执行推断——即以使用神经网络处理批量中的每个示例——所需的时间,例如以毫秒为单位。作为特定示例,时延可以测量在具有具体硬件配置的特定智能设备上处理批量所需的时间,所述具体硬件配置例如具体处理器、具体存储器架构等。
55.因此,使用下面描述的技术,系统100可以有效地选择神经网络以被部署在一个或多个设备的指定目标集合上,同时具有可接受的时延,例如近似等于在约束数据130中指定的目标时延的时延。
56.系统100然后使用训练集合102、验证数据104和约束数据130来通过搜索候选架构空间120确定架构。
57.空间120中的每个候选架构具有模型参数的共享集合140的不同子集。换言之,每个候选架构执行使用模型参数的共享集合的不同子集的操作集合。
58.每个候选架构具有的共享模型参数140的子集由对应的决策值的集合定义,该决策值的集合包括多个分类决策中的每个分类决策的相应决策值。
59.换言之,分类决策的决策值指定哪些操作由候选架构执行,并相应地指定来自共享集合140的哪些模型参数由架构使用。
60.通常,神经网络的架构定义了神经网络中的层数、由层中的每层执行的操作以及神经网络中的层之间的连接性,即,哪些层从神经网络中的哪些其他层接收输入。
61.因此,分类决策的可能值定义了神经网络的架构的一个或多个方面,未由分类决策定义的任何方面都是固定的,即,候选架构空间中的所有架构都相同。
62.通常,分类决策包括多种不同类型的分类决策,每个分类决策对应于神经网络中的相应点。
63.作为一个示例,分类决策可以包括确定神经网络中的对应层(或其他操作)是被跳过还是被包括在神经网络架构中的二元决策。
64.作为另一示例,分类决策可以包括指定在神经网络中的给定点处执行来自对应操作的集合的哪个或哪些操作的决策。例如,分类决策可以指定架构中的给定层是否是卷积层、倒置瓶颈层等。作为另一示例,分类决策可以指定不同卷积的集合中的哪个卷积被执行,例如通过指定卷积神经网络中的卷积层的滤波器的空间大小。
65.作为再一示例,分类决策可以包括指定卷积神经网络中的卷积神经网络层的输出
滤波器的数量的决策。因此,这种类型的分类决策的决策值对应于范围从最小数量到最大数量的输出滤波器的不同数量。
66.为了最大化参数共享,系统可以指定针对这种类型的分类决策中的每个特定决策(即,定义卷积层的输出滤波器数量的每个决策),由具有特定分类决策的任何给定决策值的决策值的集合定义的候选架构仍然包括具有最大数量的输出滤波器的卷积神经网络层,即,不是只具有与给定决策值相对应的数量,而是掩蔽了某些输出滤波器。
67.具体地,系统可以掩蔽——即,归零——等于(i)最大数量和(ii)与给定决策值相对应的数量之间的差异的数量的归零的输出滤波器。因此,分类决策的决策值确定包括最大数量的输出滤波器的集合中的哪些输出滤波器被归零。通过以这种方式实施这种共享,至少一些输出滤波器跨特定决策的所有决策值共享。
68.搜索空间的一些示例以及定义这些搜索空间的对应分类决策的集合在下面的表1中描述。
[0069][0070]
表1
[0071]
具体地,表1描述了三个示例搜索空间:proxylessnas、proxylessnas-enlarged和mobilenetv3-like。
[0072]
构建proxylessnas搜索空间以探索包括倒置瓶颈层的堆叠的基础架构mobilenetv2的变化。
[0073]
通常,每个倒置瓶颈层接收具有k个通道的张量,对张量应用1x1卷积以按扩展比率扩展通道数量,对扩展张量应用具有给定深度内核大小的深度卷积,然后对深度卷积的输出应用1x1卷积以减少通道数量。输出可以可选地使用残差连接与输入张量组合。在一些情况下,一些卷积可以被其他操作分开,所述其他操作例如激活函数、归一化函数或挤压和激发模块中的一个或多个。在proxylessnas搜索空间中,每个倒置瓶颈层的扩展比率和深度内核大小通过对应的决策可搜索,而输出滤波器的数量被固定为每层i的基础大小ci。可选地,搜索空间还可以包括确定是否跳过层中的某些层的决策。
[0074]
proxylessnas搜索空间在han cai,ligeng zhu,and song han.proxylessnas:direct neural architecture search on target task and hardware.arxiv preprint arxiv:1812.00332,2018(韩才、朱立耕和宋寒。proxylessnas:针对目标任务和硬件的直接神经架构搜索。arxiv预印本arxiv:1812.00332,2018)中更详细地描述,其全部内容通过引用全部并入本文。
[0075]
通过为每个倒置瓶颈层添加相对于每层i的基础大小ci选择瓶颈层的输出滤波器的数量的相应决策,proxylessnas-enlarged搜索空间扩展了proxylessnas搜索空间。
[0076]
mobilenetv3-like搜索空间以多种方式扩展了proxylessnas-enlarged搜索空间。与先前的空间不同,该空间中的模型利用了silu/swish激活函数和紧头部。这些在
andrew howard,mark sandler,grace chu,liang-chieh chen,bo chen,mingxing tan,weijun wang,yukun zhu,ruoming pang,vijay vasudevan,et al.searching for mobilenetv3(andrew howard、mark sandler、grace chu、liang chieh chen、陈波、谭明兴、王卫军、朱玉坤、彭若明、vijay vasudevan等人在搜索mobilenet 3)中描述,其全部内容通过引用全部并入本文。
[0077]
搜索空间也比先前两个大。首先,倒置瓶颈扩展比率可以从比其他搜索空间更大的集合中选择。其次,相应的决策被添加到每个倒置瓶颈,以确定挤压和激发(squeeze-and-excite)模块是否被添加到倒置瓶颈。
[0078]
虽然表1示出了三个示例搜索空间,但应该理解,所描述的技术可以被用于搜索由分类决策的集合的可能值定义的任何搜索空间。例如,不同的搜索空间可以具有由不同种类的操作组成的层,例如不同种类的残差块或不同种类的卷积操作,例如可分离卷积、扩张卷积、空间卷积等。
[0079]
附加地,如上面指示的,分类决策的值可以定义最终架构的一部分,剩余部分是固定的。例如,剩余部分可以包括一个或多个层的固定初始集合或输出层的固定集合或两者。
[0080]
系统100通过联合更新(i)控制器策略参数150的集合,所述控制器策略参数为多个分类决策中的每个分类决策定义相应概率分布的,以及(ii)参数的共享集合140来确定架构。
[0081]
在一些实施方式中,在开始联合更新之前,系统首先预训练参数的共享集合140而不使用控制器策略参数150。搜索的这个“预热”阶段在下面将参照图4描述。
[0082]
在联合更新之后,系统100选择候选架构作为神经网络的架构,该候选架构由多个分类决策中的每个分类决策的相应特定决策值使用更新后的控制器策略参数150定义。
[0083]
系统100然后可以提供指定选择的神经网络的数据160——即,指定所选神经网络的架构的数据——用于部署以例如通过由系统100提供的api对一个或多个硬件设备的目标集合执行神经网络任务,即,执行推断。备选地或附加地,系统100可以在一个或多个硬件设备的目标集合上部署所选神经网络,并且使用所选神经网络来处理由一个或多个设备的目标集合接收到的新网络输入。
[0084]
当部署所选神经网络时,系统100可以使用参数的共享集合140的对应子集的值,即,可以在没有任何附加训练的情况下部署神经网络,或者可以首先进一步训练所选神经网络,例如在附加的训练数据上或在更长时间内。
[0085]
图2是用于选择要被部署用于执行机器学习任务的神经网络的示例过程200的流程图。为了方便起见,过程200将被描述为由位于一个或多个位所中的一个或多个计算机的系统执行。例如,适当编程的神经架构搜索系统(例如图1的神经架构搜索系统100)可以执行过程200。
[0086]
系统接收用于特定机器学习任务的训练数据和验证数据(步骤202)。
[0087]
系统接收约束数据,该约束数据指定用于执行特定机器学习任务的目标时延(步骤204)。例如,目标时延可以是当部署在计算设备的目标集合上时通过训练后的神经网络处理单个输入或一批量的多个输入所需的时间的度量。
[0088]
系统使用训练数据和验证数据从候选架构空间中选择要被部署用于执行机器学习任务的神经网络的架构。
[0089]
如上所述,空间中的每个候选架构具有由对应决策值的集合定义的模型参数的共享集合的不同子集,该对应决策值的集合包括用于多个分类决策中的每个分类决策的相应决策值。
[0090]
更具体地,为了选择架构,系统联合更新(i)控制器策略参数的集合,所述控制器策略参数针对多个分类决策中的每个分类决策定义该分类决策的决策值上的相应概率分布,以及(ii)参数的共享集合(步骤206)。
[0091]
通常,系统通过强化学习更新控制器策略参数的集合以最大化奖励函数,该奖励函数测量由决策值的集合定义的候选架构的估计质量和估计时延,该决策值的集合是从使用控制器策略参数生成的概率分布采样的。
[0092]
奖励函数包括(i)测量候选架构的估计质量的质量项,以及(ii)基于将候选架构的估计时延与目标时延进行比较的项的绝对值的时延项。例如,时延项可以是绝对值和固定的负标量值的乘积,该负标量值管控时延项对奖励的相对贡献,即,相对于质量。
[0093]
通过利用所描述的奖励函数,系统可以避免需要计算昂贵的超参数搜索来确定标量值的最优值,并且可以重新使用相同的标量值来搜索用于多个不同任务的架构、多个不同的目标时延或两者。具体地,以指定时延为目标的其他现有架构搜索技术也可以包括质量项和时延项。然而,当接收到新的指定目标时延时,需要极其计算密集的超参数搜索来确定标量值的值,该标量值管控时延项对产生性能最佳的架构也满足新指定的目标时延的奖励的相对贡献。然而,通过使用所描述的奖励函数,系统可以针对大范围的可能目标时延重新使用相同的标量值。
[0094]
作为特定示例,奖励函数可以是质量项和时延项的总和。
[0095]
作为另一特定示例,将候选架构的估计时延与目标时延进行比较的项可以等于(i)候选架构的估计时延和目标时延之间的比率与(ii)1之间的差异。
[0096]
具体地,给定候选架构α的奖励函数r(α)可以满足:
[0097][0098]
其中q(α)是质量项,β是负标量,t(α)是估计时延,并且t0是目标时延。
[0099]
附加地,系统更新模型参数的共享集合以优化目标函数,该目标函数测量由决策值的集合定义的候选架构的特定机器学习任务的性能,该决策值的集合是从使用控制器策略参数生成的概率分布采样的。
[0100]
该联合更新将在下面参照图3更详细地描述。
[0101]
可选地,在联合更新之前,系统可以执行“预热”阶段,其中系统更新参数的共享集合而不使用(或更新)控制器策略参数。
[0102]
执行预热阶段在下面参照图4更详细地描述。
[0103]
在联合更新之后,系统选择候选架构作为神经网络的架构,该候选架构由针对多个分类决策中的每个分类决策的相应特定决策值定义(步骤208)。
[0104]
例如,通过针对分类决策中的每个分类决策选择在分类决策的概率分布中具有最高概率的决策值(或等效地,具有最高对应参数值的决策值)作为特定决策值,系统可以选择候选架构。
[0105]
图3是用于执行联合更新的迭代的示例过程300的流程图。为了方便起见,过程300
将被描述为由位于一个或多个位所中的一个或多个计算机的系统执行。例如,适当编程的神经架构搜索系统(例如图1的神经架构搜索系统100)可以执行过程300。
[0106]
系统可以重复执行过程300的迭代,以重复更新控制器策略参数和模型参数的共享集合。
[0107]
根据控制器策略参数的当前值,系统为多个分类决策中的每个分类决策生成相应概率分布(步骤302)。
[0108]
具体地,针对每个分类决策,控制器策略参数可以包括该决策的每个可能决策值的相应参数。该系统可以通过将softmax应用于给定决策的可能决策值中的每个可能决策值的相应参数的当前值来生成给定分类决策的概率分布。
[0109]
使用相应概率分布,系统为多个分类决策中的每个分类决策选择相应决策值(步骤304)。例如,针对每个分类决策,系统可以从分类决策的概率分布中对决策值进行采样。
[0110]
使用验证数据,系统确定具有候选架构的神经网络的特定机器学习任务的估计质量,该候选架构具有由分类决策的所选决策值定义的模型参数的共享集合的子集(步骤306)。
[0111]
具体地,系统根据由分类决策的所选决策值定义的模型参数的共享集合的子集的当前值来确定估计质量。
[0112]
作为特定示例,系统可以将估计质量确定为具有候选架构的神经网络在来自验证数据的一批量的多个验证示例上的质量。即,系统可以使用具有候选架构的神经网络并且根据模型参数的共享集合的对应子集的当前值来处理批量中的每个验证输入,以生成预测输出,然后使用验证输入的目标输出计算针对预测输出的机器学习任务的准确性或其他适当的性能度量。
[0113]
使用验证数据,系统确定在执行具有候选架构的神经网络的特定机器学习任务时的估计时延,该候选架构具有由分类决策的所选决策值定义的模型参数的共享集合的子集(步骤308)。
[0114]
即,估计时延是当神经网络被部署在一个或多个计算设备的目标集合上时对一批量的一个或多个示例执行推断所需的时延的估计,即,时间,例如以毫秒为单位。作为特定示例,估计时延可以是在具有具体硬件配置(例如具体处理器、具体存储器架构等)的特定智能设备上处理该批量所需的时间的估计。
[0115]
在一些实施方式中,当具有候选架构的神经网络被部署在一个或多个计算设备的特定集合上时,系统确定一批量的验证示例中的每个示例的时延。即,系统可以使用被部署在设备的目标集合上的具有候选架构的神经网络来处理批量中的每个验证输入,以生成预测输出,然后测量处理批量的时延。
[0116]
在一些其他实施方式中,系统可以利用硬件模拟器来模拟目标硬件设备,以模拟在目标设备上部署神经网络的效果以确定估计时延。
[0117]
在其他实施方式中,系统可以维护数据,该数据针对可以由任何候选架构执行的每个可能操作指定在设备的目标集合上执行操作所需的时间。然后,系统可以通过使用所维护的数据确定在设备的目标集合上在候选架构中执行所有操作所需的时间来确定时延。
[0118]
通过强化学习,系统确定对控制器策略参数的更新,该更新基于估计质量和估计时延改进奖励函数(步骤310)。具体地,系统可以对计算的奖励——即,奖励函数的输
出——执行策略梯度强化学习算法——例如reinforce算法——的更新步骤,以获得估计质量和估计时延以确定对控制器策略参数的更新。
[0119]
在一些情况下,在联合更新期间,系统可以以指数方式增大对控制器策略参数的强化学习更新的学习率。具体地,通过使用所描述的基于绝对值的奖励函数,可能是以下情况:虽然使用控制器参数采样的模型的平均推断时间随着训练进行而始终接近目标时,在搜索结束时选择的最可能架构的推断时间可能会低几毫秒(因此,性能更高但速度较慢的架构仍然可以满足时延约束)。系统可以通过调整强化学习更新的学习率调度来缓解这种情况。不是贯穿搜索使用恒定的学习率,系统而是可以随着时间的推移以指数方式增大强化学习学习率。这允许控制器在搜索开始时探索搜索空间(学习率相对较低),但也确保rl控制器的熵在搜索结束时较低,防止平均值和最可能的推断时间之间的不匹配。
[0120]
通过优化特定机器学习任务的适当目标函数,系统使用训练数据来确定对模型参数的共享集合的子集的当前值的更新,该子集由针对分类决策共享参数的集合的所选决策定义(步骤312)。
[0121]
例如,系统可以从训练数据中采样一批量的训练示例,并且使用适当的深度学习算法(例如随机梯度下降)对采样的批量执行训练步骤,以计算梯度更新,即,相对于模型参数子集计算目标函数的梯度,然后对子集的当前值应用梯度更新,即,加或减。
[0122]
如下面将更详细地描述的,在一些情况下,系统在步骤312期间执行再具体化以减少训练的存储器要求。在再具体化中,当更新参数的共享集合时,系统在正向传递通过给定神经网络期间仅存储由具有任何给定候选架构的任何给定神经网络生成的中间输出的真子集,并且在反向传递通过神经网络期间重新计算不在真子集中的中间输出,以计算目标函数的梯度。
[0123]
通过重复执行过程300,系统更新控制器参数,使得相对于产生不满足时延要求的架构中的低性能架构的决策值,产生高性能同时满足时延约束的候选架构的决策值被指派有更高的概率。
[0124]
图4是用于执行架构搜索的预热阶段的示例过程400的流程图。为了方便起见,过程400将被描述为由位于一个或多个位所中的一个或多个计算机的系统执行。例如,适当编程的神经架构搜索系统(例如图1的神经架构搜索系统100)可以执行过程400。
[0125]
系统可以重复执行过程400,例如直到阈值数量的迭代已经被执行为止或者直到已经过去了一定量的时间为止。一旦过程400的最后一次迭代已被执行,系统就可以开始执行过程300,即,开始执行联合更新。
[0126]
系统从候选架构空间中选择候选架构(步骤402)。
[0127]
具体地,系统在不使用控制器参数的情况下选择候选架构。例如,通过针对每个分类决策在可能的决策值上从固定的初始概率分布(例如均匀分布)中采样决策值,系统可以选择候选架构。
[0128]
然而,在一些实施方式中,系统在选择候选架构时实施op预热、滤波器预热或两者。
[0129]
如上所述,一些类型的分类决策从操作的集合中选择操作,以在神经网络中的对应点处执行。在一些实施方式中,系统实施op预热,以确保在预热阶段期间可能操作的搜索空间被充分探索。在op预热中,针对这种类型的给定分类决策,系统(i)以概率p在候选架构
中包括由分类决策的所有相应决策值表示的操作,以及(ii)以概率1

p从分类决策的固定初始概率分布中采样决策值,并且在候选架构中仅包括由采样的决策值表示的操作。因此,系统以概率p激活分类决策的所有可能操作,而不是使用固定的初始分布采样单个操作。
[0130]
例如,系统可以对与选择多个操作中的一个操作相对应的所有分类决策应用op预热。作为另一示例,在过程400的每次迭代中,系统可以例如随机选择对其应用op预热的这些分类决策的固定大小的子集。
[0131]
当op预热被使用时,系统可以在更新参数的共享集合期间将p从1线性减小到0,而无需更新控制器策略参数,即,在执行预热阶段时。
[0132]
滤波器预热可以被用于表示卷积神经网络中的卷积神经网络层的输出滤波器数量的分类决策,并且可以解释一些滤波器总是被训练而其他滤波器由于参数共享方案而很少被训练。
[0133]
具体地,当使用滤波器预热时,针对特定的分类决策,系统(i)以概率q将卷积神经网络层配置为具有最大数量的输出滤波器,其中没有输出滤波器被归零,以及(ii)以概率1

q从特定分类决策的固定的初始概率分布中采样决策值,并且将卷积神经网络层配置为具有最大数量的输出滤波器,但等于最大数量与对应于采样决策值的数量之间的差异的数量的输出滤波器被归零。
[0134]
当使用滤波器预热时,系统在更新参数的共享集合期间将q从1线性减小到0,而无需更新控制器策略参数,即,在执行预热阶段时。
[0135]
通过优化特定机器学习任务的目标函数,系统然后使用训练数据来确定对所选候选架构中的模型参数的共享集合的子集的更新(步骤404)。系统可以如上面参照图3描述的那样执行该更新。
[0136]
当op预热被使用并且系统确定在候选架构中包括由给定分类决策的所有相应决策值表示的操作时,系统对神经网络中的对应点的输入执行由所有相应决策值表示的所有操作,然后对这些操作的输出进行平均,以确定神经网络中的对应点的单个输出。
[0137]
当op预热被使用时,确定该模型参数更新可能会使用大量存储器。具体地,由所有相应决策值表示的所有操作的中间输出需要被存储,以使梯度在通过神经网络的反向传递期间被计算。为了缓解这种情况,在一些实施方式中,系统使用再具体化。
[0138]
当再具体化被使用时,针对一批量的训练示例在通过神经网络的正向传递期间,系统将操作中的每个操作应用于对由分类决策表示的神经网络中的点的每个输入,并且为每个输入计算输入的操作的输出的平均值作为由分类决策表示的神经网络中的点的输出。然后,系统仅存储分类决策的输入和分类决策的输出,以用于通过神经网络的反向传递(而不是单独操作的输出)。针对一批量的训练示例在通过神经网络的反向传递期间,即,当计算梯度时,系统通过将操作中的每个操作再次应用于分类决策的存储输入来重新计算操作的输出。因此,系统可以有效地应用op预热,而不会对应地增加训练过程的存储器要求。
[0139]
本说明书与系统和计算机程序组件相结合使用术语“配置”。一个或多个计算机的系统被配置为执行特定操作或动作意味着该系统已经在其上安装了在操作中使该系统执行操作或动作的软件、固件、硬件或其组合。一个或多个计算机程序被配置为执行特定操作或动作意味着一个或多个程序包括在由数据处理装置执行时使该装置执行操作或动作的指令。
[0140]
本说明书中描述的主题和功能操作的实施例可以被实施在数字电子电路系统、有形实施的计算机软件或固件、计算机硬件(包括在本说明书中公开的结构及其结构等效物)或者它们中的一个或多个的组合中。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即,在有形的非瞬态存储介质上编码以由数据处理装置执行或者控制该数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行存取存储器设备或者它们中的一个或多个的组合。备选地或者另外,程序指令可以被编码在人工生成的传播信号——例如机器生成的电气、光学或电磁信号——上,该信号被生成以对用于传输至合适的接收器装置供数据处理装置执行的信息进行编码。
[0141]
术语“数据处理装置”是指数据处理硬件,并且涵盖了用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机或者多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路系统,例如fpga(现场可编程门阵列)或者asic(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
[0142]
计算机程序(这也可以被称为或者描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言或者陈述性语言或程序语言)来编写;并且它可以按照任何形式(包括作为独立式程序或者作为模块、组件、子例程或适合用于计算环境的其他单元)来部署。程序可以但并非必须与文件系统中的文件相对应。程序可以被存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或者存储在专用于探讨中的程序的单个文件中,或者存储在多个协作文件(例如存储一个或多个模块、子程序或者部分代码的文件)中。计算机程序可以被部署为在一个计算机上执行或者在位于一个站点处或分布在多个站点上并且通过数据通信网络互连的多个计算机上执行。
[0143]
在本说明书中,术语“数据库”被广泛地用于指代任何数据合集:数据不需要以任何特定方式构造或者根本不需要构造,并且它可以被存储在一个或多个位所中的存储设备上。因此,例如索引数据库可以包括多个数据合集,这些数据合集中的每一个可以以不同的方式组织和访问。
[0144]
类似地,在本说明书中,术语“引擎”被广泛地用于指代被编程为执行一个或多个具体功能的基于软件的系统、子系统或过程。通常,引擎将被实施为安装在一个或多个位所中的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,多个引擎可以在相同的一个或多个计算机上安装和运行。
[0145]
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过操作输入数据并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路系统(例如fpga或asic)或者专用逻辑电路系统和一个或多个编程计算机的组合执行。
[0146]
适合于执行计算机程序的计算机可以基于通用或专用的微处理器或者两者或者任何其他种类的中央处理单元。通常,中央处理单元将接收来自只读存储器或者随机存取
存储器或者两者的指令和数据。计算机的必要元件是用于履行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统补充或者被并入到该专用逻辑电路系统中。通常,计算机还将包括用于存储数据的一个或多个海量存储设备(例如磁盘、磁光盘或者光盘),或者计算机被可操作地耦合以接收来自该海量存储设备的数据或者将数据传送给该海量存储设备或者进行两者。然而,计算机不需要具有这种设备。而且,计算机可以被嵌入到另一设备中,例如仅举数例,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收器或者便携式存储设备(例如通用串行总线(usb)闪存驱动器)。
[0147]
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如eprom、eeprom和闪存设备);磁盘(例如内部硬盘或者可移除盘);磁光盘;以及cd-rom盘和dvd-rom盘。
[0148]
为了提供与用户的交互,本说明书中描述的主题的实施例可以被实施在计算机上,该计算机具有:用于向用户显示信息的显示设备,例如crt(阴极射线管)或者lcd(液晶显示器)监视器;以及用户可以通过其将输入提供给计算机的键盘和指向设备,例如鼠标或者轨迹球。其他种类的设备也可以被用于提供与用户的交互;例如提供给用户的反馈可以是任何形式的传感反馈,例如视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入可以以任何形式(包括声学输入、语音输入或者触觉输入)来接收。另外,计算机可以通过将文档发送给用户所使用的设备并且接收来自该设备的文档;例如通过响应于从web浏览器接收的请求来将网页发送给用户的设备上的web浏览器来与用户交互。而且,计算机可以通过将文本消息或其他形式的消息发送给运行消息收发应用的个人设备(例如智能电话)并且继而接收来自用户的响应消息来与用户交互。
[0149]
用于实施机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产(即,推断、工作负载)的常见的并且计算密集的部分。
[0150]
机器学习模型可以使用机器学习框架来实施和部署,例如tensorflow框架、微软认知工具包框架、apache singa框架或apache mxnet框架。
[0151]
本说明书中描述的主题的实施例可以被实施在计算系统中,所述计算系统包括后端组件(例如作为数据服务器)、或者包括中间件组件(例如应用服务器)、或者包括前端组件(例如具有图形用户界面、web浏览器或app的客户端计算机,用户可以通过该图形用户界面、该web浏览器或该app来与本说明书中描述的主题的实施方式交互)、或者包括一个或多个这种后端组件、中间件组件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(lan)和广域网(wan),例如互联网。
[0152]
计算系统可以包括客户端和服务器。客户端和服务器通常远离彼此,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生。在一些实施例中,服务器将数据(例如html页面)传输给用户设备,例如以向与设备交互的用户显示数据并且接收来自该用户的用户输入,该设备充当客户端。在用户设备处生成的数据(例如用户交互的结果)可以在服务器处从该设备接收。
[0153]
虽然本说明书包含了许多具体实施细节,但是这些细节不应该被解释为对任何发
明的范围或者可能被要求保护的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征还可以组合地被实施在单个实施例中。相反,在单个实施例的上下文中描述的各种特征也可以单独地或者按照任何合适的子组合被实施在多个实施例中。而且,虽然特征在上面可以被描述为以某些组合的方式起作用,甚至描述为最初要求这样,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中切除,并且所要求保护的组合可以涉及子组合或者子组合的变化。
[0154]
类似地,虽然操作在附图中描绘并且在权利要求中按照特定顺序叙述,但是这不应该被理解为需要这种操作按照所示的特定顺序或者按照相继顺序来执行,或者所有图示的操作被执行以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。而且,在上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或者封装到多个软件产品中。
[0155]
本主题的特定实施例已被描述。其他实施例在以下权利要求的范围内。例如,在权利要求中叙述的动作可以按照不同的顺序来执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在一些情况下,多任务处理和并行处理可能是有利的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献