用于训练超网络的方法、装置、设备以及存储介质与流程

文档序号:22131622发布日期:2020-09-08 13:00阅读:93来源:国知局
用于训练超网络的方法、装置、设备以及存储介质与流程

本申请涉及计算机技术领域,具体涉及人工智能技术领域,进一步涉及深度学习技术领域,尤其涉及用于训练超网络的方法、装置、设备以及存储介质。



背景技术:

深度神经网络在很多领域取得了重要的成果。深度神经网络模型的结构对其性能具有直接的影响。传统的神经网络模型的结构是专家根据经验设计的,需要丰富的专家知识,网络结构的设计成本较高。

nas(neuralarchitecturesearch,网络结构自动搜索)是用算法代替繁琐的人工操作,自动搜索出最佳的神经网络架构。目前的一种方法中,通过预先构建包含所有可能的模型结构的超网络,对超网络进行训练。然后在实际深度学习任务中,从超网络中通过nas搜索出合适的子网络作为执行该深度学习任务的神经网络模型。

然而,由于超网络中的所有网络结构是共存的,训练超网络过程中存在着互斥的问题。超网络训练过程为了兼顾所有的网络结构性能都较优,会导致网络性结构的性能都与独立训练的网络的性能有较大的差距。



技术实现要素:

提供了一种用于训练超网络的方法、装置、设备以及存储介质。

根据第一方面,提供了一种用于训练超网络的方法,包括:根据预先建立的超网络的搜索空间,生成多个子网络;利用预先训练后的性能预测模型预测上述多个子网络的第一损失函数值;根据得到的各第一损失函数值,从上述多个子网络中选取至少一个子网络;基于所选取的子网络训练上述超网络。

根据第二方面,提供了一种用于训练超网络的装置,包括:生成单元,被配置成根据预先建立的超网络的搜索空间,生成多个子网络;预测单元,被配置成利用预先训练后的性能预测模型预测上述多个子网络的第一损失函数值;选取单元,被配置成根据得到的各第一损失函数值,从上述多个子网络中选取至少一个子网络;第一训练单元,被配置成基于所选取的子网络训练上述超网络。

根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,所述指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面所描述的方法。

根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,上述计算机指令用于使计算机执行如第一方面所描述的方法。

根据本申请的技术训练得到的超网络精度更高,从训练得到的超网络中采样出的子网络与独立训练相同结构的网络的性能一致。由此,在将本实现方式训练得到的超网络应用到图像处理领域时,基于超网络自动搜索模型结构可以快速地搜索出性能优越的子网络。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是本申请的一个实施例可以应用于其中的示例性系统架构图;

图2是根据本申请的用于训练超网络的方法的一个实施例的流程图;

图3是根据本申请的用于训练超网络的方法的另一个实施例的流程图;

图4是根据本申请的用于训练超网络的装置的一个实施例的结构示意图;

图5是用来实现本申请实施例的用于训练超网络的方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于训练超网络的方法或用于训练超网络的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。例如,用户可以通过终端设备101、102、103通过网络104与服务器105发送与语音交互、文本分类、图像识别、关键点检测等任务相关的深度学习任务请求。终端设备101、102、103上可以安装有各种通讯客户端应用,例如图像处理类应用、信息分析类应用、语音助手类应用、购物类应用、金融类应用等。

终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、车载电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

服务器105可以是运行各种服务的服务器,例如运行基于图像数据的目标跟踪服务或运行基于语音数据的语音处理服务的服务器。服务器105可以获取或确定用于实现上述各种服务的神经网络。服务器105可以预先获取深度学习任务数据来构建训练样本,并利用上述训练样本来训练用于实现上述各种服务的神经网络。在接收到任务请求时,服务器105可以实现对神经网络的模型结构的自动搜索和优化。具体的,服务器105可以通过超网络来实现神经网络的模型结构的自动搜索。

需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。

需要说明的是,本公开的实施例所提供的用于训练超网络的方法一般由服务器105执行。相应地,用于训练超网络的装置一般设置于服务器105中。

在一些场景中,服务器105可以从数据库、存储器或其他设备获取超网络训练所需要的源数据(例如训练样本、待训练的超网络),这时,示例性系统架构100可以不存在终端设备101、102、103和网络104。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的用于训练超网络的方法的一个实施例的流程200。本实施例的用于训练超网络的方法,包括以下步骤:

步骤201,根据预先建立的超网络的搜索空间,生成多个子网络。

本实施例中,用于训练超网络的方法的执行主体(例如图1所示的服务器105)可以预先建立一个超网络。超网络是指包含所有搜索空间的一个网络,其可以包括多层,每一层包括多个可选取的子结构。每个子结构可以包括多种可选的算子,例如,卷积、池化等。每种算子包括一些超参数和权重参数。上述超参数可以包括例如卷积核的尺寸、卷积步长等等。执行主体可以对上述搜索空间进行多次采样,生成多个子网络。具体的,执行主体可以从搜索空间的各层中采样出至少一个子结构,并增加用于对至少一个子结构的输出结果进行相加的输出端,得到各子网络。在采样时,可以采用多种采样策略,例如随机采样,或者伯努利采样等等。

步骤202,利用预先训练后的性能预测模型预测多个子网络的第一损失函数值。

本实施例中,执行主体可以首先获取预设的性能预测模型。该性能预测模型用于预测网络的性能。其可以是各种算法构建而成,例如卷积神经网络等等。性能预测模型可以通过大量的训练样本训练得到。执行主体可以将各子网络的结构以及参数输入性能预测模型中,得到表示该子网络的性能的损失函数值。执行主体可以通过各种参数来表示子网络的性能。例如,通过误差、硬件延时或内存占用率等性能指标构建损失函数,并将损失函数的值作为子网络的性能。

步骤203,根据得到的各第一损失函数值,从多个子网络中选取至少一个子网络。

执行主体在得到各第一损失函数值后,可以根据各第一损失函数值从多个子网络中选取至少一个子网络。具体的,执行主体可以根据性能预测模型的输出,对各子网络进行排序。性能越高,损失函数值越低的子网络排序越靠前。然后,执行主体从上述排序中选取前预设数量个子网络。

步骤204,基于所选取的子网络训练超网络。

执行主体在选取至少一个子网络后,可以基于所选取的子网络训练超网络。具体的,执行主体可以利用所选取的子网络对应的深度学习任务的训练数据,采用有监督或无监督的方式来训练子网络。在子网络的训练过程中通过迭代调整子网络的参数不断优化子网络。然后,利用训练后的子网络的参数来更新超网络,即在超网络中共享子网络中各层的参数,从而实现超网络的训练。

本申请的上述实施例提供的用于训练超网络的方法,通过预测训练过程中各子网络的性能,总是利用其中性能较优的子网络来训练超网络。相比起现有的超网络训练方法,由于不必在训练过程中总是评估超网络的所有子网络的性能,使得执行该方法的硬件减少了在超网络训练过程中的计算量,提高了硬件的处理速度。另外,由于本实施例的方法,总是利用性能较优的子网络来训练超网络,从而每次迭代都可以提升超网络的性能,使得性能更加优秀,即保持了超网络的训练与单独的子网络的训练的一致性。而且,由于超网络的性能的优秀,在将该超网络应用到具体的领域(如图像处理领域)时,可以通过nas快速地提取出性能优越的子网络。

继续参见图3,其示出了根据本申请的用于训练超网络的方法的另一个实施例的流程300。如图3所示,本实施例的用于训练超网络的方法可以通过步骤301~303所示的训练步骤得到性能预测模型,可以通过其余步骤实现对超网络的训练:

步骤301,根据预先建立的超网络的搜索空间,生成多个相互正交的子网络。

执行主体可以首先根据上述搜索空间,生成多个相互正交的子网络。在这里,满足正交关系的子网络是指各子网络之间包括的子结构不重复的子网络。举例来说,超网络的搜索空间包括多层,分别为a、b、c、d层。其中,a层包括子结构a1、a2、a3、a4,b层包括子结构b1、b2、b3、b4,c层包括子结构c1、c2、c3、c4,d层包括子结构d1、d2、d3、d4。子网络1包括子结构a1、b1、c1、d1,子网络2包括a2、b2、c2、d2,子网络3包括子结构a1、b3、c3、d3,子网络4包括子结构a4、b2、c3、d4。那么子网络1与子网络2、子网络4之间均不存在重复的子结构,因此子网络1与子网络2、子网络4相互正交。子网络1与子网络3存在重复的子结构a1,因此子网络1与子网络3不是正交关系。同样的,子网络2与子网络3不存在重复的子结构,二者为正交关系。子网络2与子网络4存在重复的子结构b2,二者不是正交关系。子网络3与子网络4存在重复的子结构c3,二者不是正交关系。

基于子网络之间的正交关系,通过对这些子网络进行训练,能够得到快速地对超网络中的各子结构进行训练。

步骤302,对相互正交的各子网络进行训练,确定相互正交的各子网络的第二损失函数值。

执行主体在得到相互正交的各子网络后,可以对相互正交的各子网络进行训练,确定各子网络的第二损失函数值。执行主体可以首先获取各子网络对应的深度学习任务的训练数据,采用有监督或无监督的方式训练各子网络。在子网络训练过程中可以通过迭代调整各正交子网络的参数以不断优化各子网络。在训练完成后,执行主体可以确定各子网络的损失函数的值,并将该值记为第二损失函数值。

步骤303,利用相互正交的各子网络以及对应的第二损失函数值,训练初始性能预测模型,得到性能预测模型。

执行主体在训练完成正交的各子网络后,可以将正交的各子网络的网络结构和参数以及对应的第二损失函数值作为训练样本,得到训练样本集合。并利用该训练样本集合训练初始性能预测模型,得到性能预测模型。具体的,执行主体可以将训练样本中网络结构和参数作为初始性能预测模型的输入,将所输入的数据对应的第一损失函数值作为初始性能预测模型的期望输出,训练得到性能预测模型。这里,初始性能预测模型是对性能预测模型进行初始化得到的。

步骤304,基于各训练完成的子网络训练超网络。

执行主体在训练完成上述相互正交的多个子网络后,可以基于各训练完成的子网络训练超网络。即,根据各训练完成的子网络的参数更新超网络的参数。

步骤305,响应于确定训练步骤的执行次数等于预设次数阈值,根据上述搜索空间,生成多个子网络。

本实施例中,执行主体可以统计训练步骤的执行次数。如果确定训练步骤的执行次数等于预设次数阈值,根据上述搜索空间,生成多个子网络。在实际应用中,执行主体可以通过计数器来统计训练步骤的执行次数。计数器的初始值可以为1,训练步骤每执行一次计数器的值可以加1。

步骤306,利用预先训练后的性能预测模型预测多个子网络的第一损失函数值。

步骤307,根据得到的各第一损失函数值,对多个子网络进行排序,选取排序中前预设数量个子网络。

本实施例中,可以根据得到的各第一损失函数值,对多个子网络进行排序。然后选取排序中前预设数量个子网络。

步骤308,基于所选取的子网络训练超网络。

可以理解的是,本步骤中训练的超网络是基于步骤304训练后的超网络,这样可以实现超网络的两次训练。

步骤305~308的原理与步骤201~204的原理类似,此处不再赘述。

本申请的上述实施例提供的用于训练超网络的方法,可以首先通过正交子网络来训练超网络和性能预测模型,并利用训练后的性能预测模型确定出性能较优的至少一个网络,再次基于这些性能较优的网络来训练超网络。使得超网络的训练与子网络的独立训练保持了一致性,即可以从超网络中选取出性能较优的子网络。

在本实施例的一些可选的实现方式中,上述步骤301~308可以认定为一次迭代操作。执行主体可以在执行完成一次迭代操作后,可以基于当前次迭代操作得到的超网络继续训练,从而实现超网络参数的不断更新。可以理解的是,当预设的训练终止条件满足时,执行主体可以终止超网络的训练。

在本实施例的一些可选的实现方式中,上述方法还可以进一步包括图3中未示出的以下步骤:对所选取的子网络进行训练,确定所选取的子网络的第三损失函数值;利用所选取的子网络以及对应的第三损失函数值,再次训练性能预测模型。

本实现方式中,执行主体还可以对选取的子网络进行训练。与正交子网络的训练类似,执行主体可以首先获取与各子网络对应的深度学习任务数据,利用这些深度学习任务数据训练各子网络。并确定各子网络的损失函数的值,记为第三损失函数值。然后,执行主体可以再次利用各子网络和对应的第三损失函数值,再次训练性能预测模型。

这样,能够实现性能预测模型对各子网络性能的精确预测,从而能够选取出性能较高的子网络。

进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于训练超网络的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图4所示,本实施例的用于训练超网络的装置400包括:生成单元401、预测单元402、选取单元403以及第一训练单元404。

生成单元401,被配置成根据预先建立的超网络的搜索空间,生成多个子网络。

预测单元402,被配置成利用预先训练后的性能预测模型预测多个子网络的第一损失函数值。

选取单元403,被配置成根据得到的各第一损失函数值,从多个子网络中选取至少一个子网络。

第一训练单元404,被配置成基于所选取的子网络训练超网络。

在本实施例的一些可选的实现方式中,装置400还可以进一步包括图4中未示出的第二训练单元,性能预测模型通过第二训练单元训练得到,第二训练单元被配置成多次执行以下训练步骤:根据搜索空间,生成多个相互正交的子网络;对相互正交的各子网络进行训练,确定相互正交的各子网络的第二损失函数值;利用相互正交的各子网络以及对应的第二损失函数值,训练初始性能预测模型,得到性能预测模型。

在本实施例的一些可选的实现方式中,装置400还可以进一步包括图4中未示出的第三训练单元,被配置成基于各训练完成的子网络训练所述超网络。

在本实施例的一些可选的实现方式中,生成单元401可以进一步被配置成:响应于确定训练步骤的执行次数等于预设次数阈值,根据搜索空间,确定多个子网络。

在本实施例的一些可选的实现方式中,选取单元403可以进一步被配置成:根据得到的各第一损失函数值,对多个子网络进行排序;选取排序中前预设数量个子网络。

在本实施例的一些可选的实现方式中,装置400还可以进一步包括图4中未示出的第四训练单元,被配置成:对所选取的子网络进行训练,确定所选取的子网络的第三损失函数值;利用所选取的子网络以及对应的第三损失函数值,再次训练性能预测模型。

应当理解,用于训练超网络的装置400中记载的单元401至单元405分别与参考图2中描述的方法中的各个步骤相对应。由此,上文针对用于训练超网络的方法描述的操作和特征同样适用于装置400及其中包含的单元,在此不再赘述。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图5所示,是根据本申请实施例的执行用于训练超网络的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图5中以一个处理器501为例。

存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的执行用于训练超网络的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的执行用于训练超网络的方法。

存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的执行用于训练超网络的方法对应的程序指令/模块(例如,附图4所示的生成单元401、预测单元402、选取单元403以及第一训练单元404)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的执行用于训练超网络的方法。

存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据执行用于训练超网络的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至执行用于训练超网络的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

执行用于训练超网络的方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。

输入装置503可接收输入的数字或字符信息,以及产生与执行用于训练超网络的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的技术方案,训练得到的超网络精度更高,从训练得到的超网络中采样出的子网络与独立训练相同结构的网络的性能一致。由此,在将本实现方式训练得到的超网络应用到图像处理领域时,基于超网络自动搜索模型结构可以快速地搜索出性能优越的子网络。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

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