CN114861890B - 构建神经网络的方法、装置、计算设备及存储介质 - Google Patents
构建神经网络的方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN114861890B CN114861890B CN202210780808.0A CN202210780808A CN114861890B CN 114861890 B CN114861890 B CN 114861890B CN 202210780808 A CN202210780808 A CN 202210780808A CN 114861890 B CN114861890 B CN 114861890B
- Authority
- CN
- China
- Prior art keywords
- network
- sub
- networks
- hardware platform
- training
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本公开涉及构建神经网络的方法、装置、计算设备及存储介质。该方法包括:构建超网络,其中每个网络结构参数的值被选择为相应候选参数空间中的最大值;通过自监督学习训练超网络;以经训练的超网络为基础网络,通过分别在每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,最高一级子网络是超网络,每个子网络是通过从上一级子网络采样得到的,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近且小于该上一级子网络的所述一个网络结构参数的值;通过自监督蒸馏训练子网络;以满足目标硬件平台的要求为条件对经训练的子网络进行搜索,并将搜索到的子网络用于目标硬件平台。
Description
技术领域
本公开涉及神经网络技术领域,并且更具体地,涉及一种构建神经网络的方法、装置、计算设备及存储介质。
背景技术
随着存储和计算设备的高速发展,越来越多的硬件平台通过在其上搭载神经网络实现了各种各样的人工智能(AI)功能,在诸如自动驾驶、智能安防、教育零售等诸多行业发挥了巨大的作用。不同的硬件平台往往具有不同规模的网络计算资源和存储空间,并且同一硬件平台也可用于不同的下游任务。因此,需要针对不同的硬件平台以及具体的下游任务提供对应的神经网络。由于人工设计神经网络不仅繁琐而且效率低下,因此可以通过神经网络结构搜索(NAS)来自动化设计神经网络结构。目前通过NAS搜索到的神经网络已经在图像分类、目标检测、图像分割等诸多任务中取得了良好的效果。然而,每当面临一个新的硬件平台的神经网络部署需求,都需要在该硬件平台的网络计算资源和存储空间的限制下重新进行完整的训练和搜索。这无论是基于一次完成(one-shot)还是多次试验(multi-trial)的方法都需要花费大量的训练和搜索时间。
发明内容
根据本公开的第一方面,提供了一种为目标硬件平台构建神经网络的方法,包括:构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值;通过自监督学习的方式训练所述超网络;以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,其中,所述多个子网络中的最高一级子网络是所述超网络,其中,每个子网络是通过从该子网络的上一级子网络采样得到的,并且其中,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值;通过自监督蒸馏的方式训练所述多个子网络,其中,作为教师网络的子网络是作为学生网络的子网络的上一级子网络;以及以满足目标硬件平台的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。
在一些实施例中,所述多个网络结构参数包括卷积核尺寸、阶段深度和通道扩张比例系数。
在一些实施例中,卷积核尺寸的候选参数空间包括第一卷积核尺寸S1以及最接近于S1并且小于S1的第二卷积核尺寸S2,其中,从具有S1×S1卷积核的上一级子网络采样得到具有S2×S2卷积核的子网络包括:通过维度为(S2×S2)×(S2×S2)的核变换矩阵,将位于该上一级子网络的S1×S1卷积核中心的(S2×S2)部分的权重变换为该子网络的S2×S2卷积核的权重。
在一些实施例中,核变换矩阵在每个阶段的不同块之间是不同的,并且在每个块的不同通道之间是共享的。
在一些实施例中,阶段深度的候选参数空间包括第一阶段深度D1以及最接近于D1并且小于D1的第二阶段深度D2,其中,从具有第一阶段深度D1的上一级子网络采样得到具有第二阶段深度D2的子网络包括:保留D1个块中的前D2个块,并丢弃所述D1个块中的后(D1-D2)个块。
在一些实施例中,通道扩张比例系数的候选参数空间包括第一通道扩张比例系数C1以及最接近于C1并且小于C1的第二通道扩张比例系数C2,其中,从具有第一通道扩张比例系数C1的上一级子网络采样得到具有第二通道扩张比例系数C2的子网络包括:按照通道权重的L1范数的降序重新排列多个通道;保留重新排列后的所述多个通道中的前C2/C1比例的通道,并丢弃重新排列后的所述多个通道中的后(C1-C2)/C1比例的通道。
在一些实施例中,方法还包括:获得经训练的所述多个子网络中的预设数量的子网络中的每个子网络对应的评估指标;以所述预设数量的子网络中的每个子网络的所述多个网络结构参数和该子网络对应的评估指标分别作为训练数据和标签,训练多层感知机以构建评估指标预测器;以满足所述目标硬件平台关于计算量和参数量的要求为条件对经训练的所述多个子网络进行搜索,并用所构建的评估指标预测器预测搜索到的子网络的评估指标,以将评估指标最优的子网络用于所述目标硬件平台。
在一些实施例中,获得所述预设数量的子网络中的每个子网络对应的评估指标包括:使该子网络作为主干,并与头部组装成神经网络模型;在固定主干的参数不变的情况下,训练神经网络模型以更新头部的参数,以获得与该子网络对应的经训练的神经网络模型;利用同一测试集测试与所述预设数量的子网络中的每个子网络对应的经训练的神经网络模型,以获得该经训练的神经网络模型的评估指标,作为该子网络对应的评估指标。
在一些实施例中,训练多层感知机包括:通过独热编码将子网络的每个网络结构参数编码为向量,并将各个网络结构参数的向量拼接在一起作为训练数据输入到多层感知机中。
在一些实施例中,所述搜索基于进化算法,并且其中,所述方法包括:根据经训练的所述多个子网络的总数量设置种群数量Vg、变异数量Vv、交叉数量Vc、筛选数量Vs,其中Vg=Vv+Vc,Vs<Vg;以满足目标硬件平台关于计算量和参数量的要求为进化条件,选择经训练的所述多个子网络中的Vg个子网络组成种群;用所构建的评估指标预测器预测所述Vg个子网络中的每个子网络的评估指标,并筛选出评估指标最优的前Vs个子网络;使所述Vs个子网络经由变异操作在满足所述进化条件的情况下得到Vv个子网络,并经由交叉操作在满足所述进化条件的情况下得到Vc个子网络,所述变异操作使得子网络的网络结构参数在相应候选参数空间内变化,所述交叉操作使得子网络相互交换各自的部分,所述Vv个子网络和所述Vc个子网络重新组成新的种群;对新的种群重复进行筛选、变异与交叉的过程,直到达到阈值进化代数为止,并将最后的种群中用所构建的评估指标预测器所预测的评估指标最优的子网络用于所述目标硬件平台。
在一些实施例中,方法还包括:使所述评估指标最优的子网络作为主干,并与头部组装成用于所述目标硬件平台的下游任务的神经网络模型;利用基于所述下游任务的训练数据训练神经网络模型以更新主干和头部二者的参数,从而获得用于所述下游任务的经训练的神经网络模型。
在一些实施例中,在训练所述多个子网络时,在每次参数迭代更新中,作为教师网络的子网络中的与作为学生网络的子网络相同的部分通过作为学生网络的子网络的参数动量更新,作为教师网络的子网络中的与作为学生网络的子网络不同的部分通过反向传播更新,作为学生网络的子网络通过反向传播更新。
根据本公开的第二方面,提供了一种为目标硬件平台构建神经网络的装置,包括:超网络构建模块,被配置为构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值;超网络训练模块,被配置为通过自监督学习的方式训练所述超网络;子网络构建模块,被配置为以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,其中,所述多个子网络中的最高一级子网络是所述超网络,其中,每个子网络是通过从该子网络的上一级子网络采样得到的,并且其中,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值;子网络训练模块,被配置为通过自监督蒸馏的方式训练所述多个子网络,其中,作为教师网络的子网络是作为学生网络的子网络的上一级子网络;以及搜索模块,被配置为以满足目标硬件平台的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。
根据本公开的第三方面,提供了一种为目标硬件平台构建神经网络的计算设备,包括:一个或多个处理器;以及存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据本公开的第一方面的任一实施例所述的为目标硬件平台构建神经网络的方法。
根据本公开的第四方面,提供了一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据本公开的第一方面的任一实施例所述的为目标硬件平台构建神经网络的方法。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示意性示出了神经网络模型的示例结构;
图2是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的方法的流程图;
图3示意性示出了根据本公开的一些实施例的用于有监督训练超网络的示例过程;
图4示意性示出了根据本公开的一些实施例的用于在卷积核尺寸的维度上以渐进式收缩的方式采样子网络的示例过程;
图5示意性示出了根据本公开的一些实施例的用于在阶段深度的维度上以渐进式收缩的方式采样子网络的示例过程;
图6示意性示出了根据本公开的一些实施例的用于在通道扩张比例系数的维度上以渐进式收缩的方式采样子网络的示例过程;
图7示意性示出了根据本公开的一些实施例的用于有监督训练子网络的示例过程;
图8示意性示出了根据本公开的一些实施例的用于采用进化算法为目标硬件平台搜索子网络的示例过程;
图9是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的装置的示意框图;
图10是示出了根据本公开的一些实施例的为目标硬件平台构建神经网络的计算设备的示意框图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本公开的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1示意性示出了神经网络模型的示例结构。通常来讲,神经网络模型可以包括主干(backbone)和头部(head)。主干或者说主干网络是用于提取特征的网络,例如mobilenetv2、resnet18、darknet53等。如图1所示,主干可以包括多个阶段(stage),每个阶段可以包括多个块(block),每个块可以包括多个层(layer)。应理解,图1中所示的阶段、块、层的数量仅仅是示意性的而非限制性的。头部用于利用所提取的特征进行预测,其可以是分类器或检测头等,例如在目标检测任务中头部可以用于预测目标的种类和位置。在一些示例中,神经网络模型还可以包括在主干和头部之间的颈部(neck),以便更好地利用主干所提取的特征,例如在目标检测任务中颈部可以用于基于主干所提取的特征提取一些更复杂的特征供头部使用。
应注意,本文中提到的“超网络”和“子网络”都是指主干网络。在后文中,将以mobilenetv2主干网络作为非限制性示例对“超网络”和“子网络”进行说明。mobilenetv2主干网络包括基础通道数为32的conv1输入层、第1至第7阶段、以及基础通道数为1280的conv1×1输出层。mobilenetv2主干网络的第1至第7阶段中的每个阶段的基础通道数依次为16、24、32、64、96、160、320。mobilenetv2主干网络的基本块可以采取“逐点卷积(Pointwise Convolution)层+逐通道卷积(Depthwise Convolution)层+逐点卷积层”这种卷积拓扑结构。mobilenetv2主干网络中采用的激活函数均为ReLU函数。mobilenetv2主干网络不包括挤压提取(squeeze-and-extraction,SE)模块。
图2图示了根据本公开的一些实施例的为目标硬件平台构建神经网络的方法100。如图2所示,方法100包括在步骤S102处,构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值。
网络结构参数是用于限定神经网络的结构的参数,包括但不限于卷积核尺寸、主干深度(其指主干所包括的阶段的数量)、阶段深度(其指阶段所包括的块的数量)、块深度(其指块所包括的层的数量)、宽度(其指通道数量)、通道扩张比例系数(其与基础通道数的乘积为通道数量)等。在后文中,将以卷积核尺寸、阶段深度、通道扩张比例系数作为非限制性示例进行说明。
网络结构参数的候选参数空间例如可以包括该网络结构参数的常见取值。卷积核尺寸通常为奇数。这是因为相较于偶数,奇数更便于进行填补(padding),易于找到卷积锚点,效率更高。在本文的示例中,卷积核尺寸的候选参数空间可以包括{3,5,7},阶段深度的候选参数空间可以包括{2,3,4},通道扩张比例系数的候选参数空间可以包括{3,4,5,6}。这些仅仅是示例性的而非限制性的,并且可以根据实际情况针对每个网络结构参数独立地设置相应的候选参数空间。因此,在这样的示例中,针对超网络,可以将卷积核尺寸设置为7(若以二维卷积核为例,则可以是7×7卷积核),将阶段深度(即阶段所包括的块的数量)设置为4,并将通道扩张比例系数设置为6。
在一些示例中,针对每种网络结构参数可以相应选取超网络的一些或所有阶段、阶段中的一些或所有块、块中的一些或所有层设置该种网络结构参数的最大值,而对于超网络的其余阶段、块、层(如果有的话)设置该种网络结构参数的经典值;之后,在渐进式收缩该种网络结构参数以采样子网络时,可以仅在所选取的阶段、块、层上应用该种网络结构参数的经收缩的值,而在其余阶段、块、层(如果有的话)上使该种网络结构参数的值保持与超网络一致。例如,在超网络是mobilenetv2主干网络的非限制性示例中,可以仅将超网络的第1、2、3、4、6阶段中的每个阶段的每个块中的逐通道卷积层的卷积核尺寸设置为7、通道扩张比例系数设置为6,而逐点卷积层的卷积核尺寸固定为1、通道扩张比例系数固定为1(即宽度保持为基础通道数),然后在以超网络为基础网络采样得到子网络期间,可以只对网络的第1、2、3、4、6阶段中的每个阶段的每个块中的逐通道卷积层的卷积核尺寸、通道扩张比例系数进行渐进式收缩,而使逐点卷积层的卷积核尺寸、通道扩张比例系数保持与超网络相同。
还如图2所示,方法100还包括在步骤S104处,通过自监督学习的方式训练超网络。在一些实施例中,例如参考图3,可以采用BYOL(Bootstrap your own latent)自监督学习框架来训练超网络。如图3所示,BYOL使用两个神经网络来学习:在线网络和目标网络。在线网络由一组参数θ定义并且包括三个阶段:编码器f θ 、映射器g θ 和预测器q θ 。编码器f θ 由在步骤S102处构建的超网络构成。目标网络与在线网络具有相同的架构,但是使用了不同的一组参数ξ。目标网络提供了回归目标以训练在线网络,并且目标网络的参数ξ是在线网络的参数θ的指数移动平均。给定一个图像集,x是从该图像集均匀采样得到的图像。使图像x分别进行两次不同的数据增强操作t和t’,从而得到源自同一图像x的两个新的样本v和v’,并将v和v’分别送入编码器f θ 和编码器f ξ中。可以采取任何合适的数据增强操作,包括但不限于位移、旋转、裁剪、尺度变换、颜色变换、灰度变换等。在在线网络的分支上,编码器f θ 的参数θ利用反向传播进行更新,而在目标网络的分支上,编码器f ξ的参数ξ利用上一轮f θ 的参数θ和本轮f ξ的参数ξ进行更新,具体如下式:
其中,τ∈[0,1]是目标衰减率,并且在本文中例如可以选择τ=0.9。v和v’经过编码器f θ 和f ξ之后分别得到特征的表示y θ 和y’ ξ。y θ 和y’ ξ分别输入映射器g θ 和g ξ,以得到特征的非线性映射z θ 和z’ ξ。映射器g θ 和g ξ的参数更新方式与上述编码器f θ 和f ξ的参数更新方式相同。例如,映射器g θ 和g ξ可以各自由两层感知机构成。之后,对于在线网络,用预测器q θ 预测z θ 得到预测结果q θ (z θ )。例如,预测器q θ 可以由单层感知机构成。对于目标网络,sg表示停止梯度(stop-gradient)。将在线网络的预测结果q θ (z θ )与目标网络的映射器g ξ的输出z’ ξ进行相似度度量:
可以理解,以上用于通过自监督学习的方式训练超网络的训练数据虽然以图像为例,但这仅仅是示例性的而非限制性的,其也可以是音频、文本等其它类型的数据。此处使用的训练数据可以来自任何现有的数据库(例如但不限于ImageNet数据库),而无需与下游任务相关(此时下游任务甚至可以是未知的)。当然,在一些情况下,也可以使训练数据与下游任务相关,例如可以与下游任务的数据的分布相同或相似,这在一定程度上可以提高精度。另外,也可以使用除BYOL以外的其它自监督学习框架来训练超网络。
通过自监督学习的方式训练超网络无需对训练数据进行标注,可以依赖于无标签数据得到良好的主干网络。在一些情况下,甚至可以直接采用量产采集的数据,不经人工标注而直接进行大规模的训练,由此提高所训练的超网络的特征提取能力。这样训练出来的超网络的鲁棒性更高,在用于执行各种不同下游任务(诸如但不限于图像分类、目标检测、图像分割等)的神经网络模型中时都能达到良好的效果。
返回参考图2,方法100还包括在步骤S106处,以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络。所述多个子网络中的最高一级子网络是所述超网络。每个子网络是通过从该子网络的上一级子网络采样得到的。每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值。这样的采样方式在本文中称为渐进式收缩,其中每个子网络相对于它的上一级子网络只改变了一个网络结构参数的值,并且改变后的值在相应候选参数空间中最接近于并且小于改变前的值。
在所述多个网络结构参数包括卷积核尺寸、阶段深度、通道扩张比例系数的实施例中,可以采用渐进式收缩的方式从卷积核尺寸、阶段深度、通道扩张比例系数这三个维度分别进行采样,逐步减小相应的网络结构参数。假设用向量(卷积核尺寸,阶段深度,通道扩张比例系数)表示网络的结构,则超网络的结构可以被表示为(7, 4, 6),它可以被视为最高一级子网络。如果首先从卷积核尺寸的维度开始以渐进式收缩的方式采样,则较小的下一级子网络可以被表示为(5, 4, 6),更小的再下一级子网络可以被表示为(3, 4, 6)。如果继续从阶段深度的维度开始以渐进式收缩的方式采样,则例如子网络(5, 4, 6)的下一级子网络可以被表示为(5, 3, 6),再下一级子网络可以被表示为(5, 2, 6),等等。如果接下来从通道扩张比例系数的维度开始以渐进式收缩的方式采样,则例如子网络(5, 3, 6)的下一级子网络可以被表示为(5, 3, 5),再下一级子网络可以被表示为(5, 3, 4),等等。可以沿任何合适的采样路径在这三个维度上以渐进式收缩的方式进行采样,只要保证每个采样步骤相比于上一采样步骤只有一个网络结构参数收缩了一步即可,直到遍历各网络结构参数的各候选参数值的所有组合。在本示例中,由于卷积核尺寸的候选参数空间为{3,5,7},阶段深度的候选参数空间为{2,3,4},通道扩张比例系数的候选参数空间为{3,4,5,6},因此共可以采样得到3×3×4=36个子网络。
在一些实施例中,在渐进式收缩某个网络结构参数时,可以使子网络的所有所选取的阶段都同步收缩,也就是说,可以将收缩得到的该网络结构参数同时应用于采样得到的子网络的所有所选取的阶段。例如,当阶段深度从4收缩到3时,采样得到的子网络的所有所选取的阶段各自都包括3个块。在另一些实施例中,也可以依次使网络的每个所选取的阶段在其它阶段的网络结构参数保持不变的情况下进行网络结构参数的渐进式收缩。然而,在一些情况下,使网络的所有所选取的阶段都同步收缩可能是更优选的,因为这可以使子网络的采样时间以及训练时间大幅减少。
在一些实施例中,如果卷积核尺寸的候选参数空间包括第一卷积核尺寸S1以及最接近于S1并且小于S1的第二卷积核尺寸S2,则从具有S1×S1卷积核的上一级子网络采样得到具有S2×S2卷积核的子网络可以包括:通过维度为(S2×S2)×(S2×S2)的核变换矩阵,将位于该上一级子网络的S1×S1卷积核中心的(S2×S2)部分的权重变换为该子网络的S2×S2卷积核的权重。在一些示例中,核变换矩阵在每个阶段的不同块之间是不同的,并且在每个块的不同通道之间是共享的。例如,参考图4,第一级子网络O1的卷积核为7×7,可以利用25×25的核变换矩阵以全连接的方式将第一级子网络O1的卷积核中心的5×5部分的权重转换为第二级子网络O2的5×5卷积核的权重,进一步可以利用9×9的核变换矩阵以全连接的方式将第二级子网络O2的卷积核中心的3×3部分的权重转换为第三级子网络O3的3×3卷积核的权重。每级子网络都可以很好地继承上一级子网络的卷积核权重,由此在训练子网络期间,可以提高训练效率并缩短训练时间。核变换矩阵可以存储对所继承的卷积核权重的微调。就一层而言,假设通道数量为64,则存储子网络O1、O2、O3的卷积核权重原本需要64×7×7+64×5×5+64×3×3=5312个参数,而在利用核变换矩阵后仅需64×7×7+25×25+9×9=3842个参数。由此可见,核变换矩阵的利用可以大大降低参数量,并且参数量的降低效果随着通道数量的增加而愈加显著。
在一些实施例中,如果阶段深度的候选参数空间包括第一阶段深度D1以及最接近于D1并且小于D1的第二阶段深度D2,则从具有第一阶段深度D1的上一级子网络采样得到具有第二阶段深度D2的子网络可以包括:保留D1个块中的前D2个块,并丢弃所述D1个块中的后(D1-D2)个块。例如,参考图5,第一级子网络O1的阶段包括4个块,第二级子网络O2的阶段包括前述4个块中的前3个块,第三级子网络O3的阶段包括前述3个块中的前2个块。这样,第二级子网络O2的阶段与第一级子网络O1的阶段共享前3个块的权重,并且第三级子网络O3的阶段与第二级子网络O2的阶段共享前2个块的权重。这样的采样方式使得一种阶段深度只对应于一种块的组合,其具有很好的向下兼容性,每级子网络都可以直接继承上一级子网络的相应块的权重,从而既能节约参数量,又能在训练子网络期间,可以提高训练效率并缩短训练时间。
在一些实施例中,如果通道扩张比例系数的候选参数空间包括第一通道扩张比例系数C1以及最接近于C1并且小于C1的第二通道扩张比例系数C2,则从具有第一通道扩张比例系数C1的上一级子网络采样得到具有第二通道扩张比例系数C2的子网络可以包括:按照通道权重的L1范数的降序重新排列多个通道;保留重新排列后的所述多个通道中的前C2/C1比例的通道,并丢弃重新排列后的所述多个通道中的后(C1-C2)/C1比例的通道。通道权重的L1范数可以表示通道的重要性,L1范数越大则表示重要性越高。例如,参考图6,假设基础通道数为1,则通道扩张比例系数为4的第一级子网络O1共有4个通道(分别以白色、斜线、散点、灰色表示)。当通道扩张比例系数从4收缩至3时,按照通道权重的L1范数的降序重新排列第一级子网络O1的4个通道,此时重要性顺序为散点通道(0.85)>灰色通道(0.63)>斜线通道(0.15)>白色通道(0.02)。因此,第二级子网络O2可以只保留散点通道、灰色通道和斜线通道共3个通道,并且与第一级子网络O1共享这些通道的权重。当通道扩张比例系数从3收缩至2时,按照通道权重的L1范数的降序重新排列第二级子网络O2的3个通道,此时重要性顺序为散点通道(0.82)>斜线通道(0.46)>灰色通道(0.11)。因此,第三级子网络O3可以只保留散点通道和斜线通道共2个通道,并且与第二级子网络O2共享这些通道的权重。这样的采样方式使得一种通道扩张比例系数只对应于一种通道的组合,其具有很好的向下兼容性,每级子网络都可以直接继承上一级子网络的相应通道的权重,从而既能节约参数量,又能在训练子网络期间,可以提高训练效率并缩短训练时间。
返回参考图2,方法100还包括在步骤S108处,通过自监督蒸馏的方式训练所述多个子网络。在自监督蒸馏时,作为教师网络的子网络是作为学生网络的子网络的上一级子网络。由于作为学生网络的子网络是通过上述采样方式从作为教师网络的子网络采样得到的,因此作为学生网络的子网络的结构基本上是从作为教师网络的子网络迁移而来。特征迁移可以减少从头训练的时间,从而只需要较少的训练周期就能训练好,并且经训练的子网络的鲁棒性高。
在一些实施例中,可以仿照BYOL自监督学习框架来通过自监督蒸馏的方式训练所述多个子网络。例如,参考图7,给定一个图像集,x是从该图像集均匀采样得到的图像。作为教师网络T的子网络是作为学生网络S的子网络的上一级子网络。教师网络T和学生网络S充当编码器,并且f S 和f T 是映射器。使图像x分别进行两次不同的数据增强操作t1和t2,从而得到源自同一图像x的两个新的样本x1和x2。首先,将x1输入学生网络S以提取特征,所提取的特征经映射器f S 映射得到Sf1;将x2输入教师网络T以提取特征,所提取的特征经映射器f T 映射得到Tf2。然后进行一次交叉,将x2输入学生网络S以提取特征,所提取的特征经映射器f S 映射得到Sf2;将x1输入教师网络T以提取特征,所提取的特征经映射器f T 映射得到Tf1。判断学生网络T的特征是否可以正确表述教师网络S的特征,其误差通过同一图像经两次不同数据增强操作后的教师学生交叉相似度来衡量,故涉及两次相似度的计算,具体如下式:
所得的L即为误差。得到L后,同时反馈给学生网络T和教师网络S,以用于学生网络T和教师网络S的参数更新。在一些实施例中,在每次参数迭代更新中,作为教师网络S的子网络中的与作为学生网络T的子网络相同的部分通过作为学生网络T的子网络的参数动量更新,作为教师网络S的子网络中的与作为学生网络T的子网络不同的部分通过反向传播更新,作为学生网络T的子网络通过反向传播更新。这样,每个子网络都会经历“先做学生,后做教师”的两次训练,使得经训练的子网络的精度和鲁棒性更高。
在一些实施例中,渐进式收缩的采样过程和子网络的训练过程可以是同步进行的。也就是说,每从一个子网络通过渐进式收缩采样得到一个下一级子网络,就可以使该子网络作为教师网络并使该下一级子网络作为学生网络通过自监督蒸馏的方式进行训练。在一些实施例中,也可以先采样得到全部子网络,再对子网络进行训练。
可以理解,以上用于通过自监督蒸馏的方式训练子网络的训练数据虽然以图像为例,但这仅仅是示例性的而非限制性的,其也可以是音频、文本等其它类型的数据。此处使用的训练数据可以来自任何现有的数据库(例如但不限于ImageNet数据库),而无需与下游任务相关(此时下游任务甚至可以是未知的)。当然,在一些情况下,也可以使训练数据与下游任务相关,例如可以与下游任务的数据的分布相同或相似,这在一定程度上可以提高精度。另外,也可以使用除BYOL以外的其它自监督蒸馏框架来训练子网络。
通过自监督蒸馏的方式训练子网络也无需对训练数据进行标注,可以依赖于无标签数据得到良好的主干网络。在一些情况下,甚至可以直接采用量产采集的数据,不经人工标注而直接进行大规模的训练,由此提高所训练的超网络的特征提取能力。这样训练出来的子网络的精度和鲁棒性更高,在用于执行各种不同下游任务(诸如但不限于图像分类、目标检测、图像分割等)的神经网络模型中时都能达到良好的效果。
返回参考图2,方法100还包括在步骤S110处,以满足目标硬件平台的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。在一些实施例中,目标硬件平台的要求可以是关于计算量和参数量中的至少一者的要求。目标硬件平台例如可以是但不限于是以中央处理器(Central Processing Unit,CPU)、张量处理器(Tensor Processing Unit,TPU)、图形处理器(Graphics Processing Unit,GPU)或神经网络处理器(Neural network Processing Unit,NPU)为核心运算部件的硬件平台。
方法100降低了训练搜索成本,无需每当面对一个新的硬件平台的需求就重新进行完整的训练和搜索。在步骤S110之前,已在步骤S104进行过一次超网络训练并在步骤S108进行过各个子网络的继承训练,并且超网络和子网络均利用无标签数据进行有监督的训练,因此训练好的子网络都具有较高的精度和鲁棒性,可直接用作主干网络,也可重新组合成新的主干网络,并且能够和各种下游任务做到同源以兼容各种下游任务,最多只需在组装成神经网络模型时用基于下游任务的有标签数据进行参数微调即可。因此,步骤S102至步骤S108已经通过很少的训练成本提供了一个相对完整并且已充分训练的主干网络库,该库中的每个主干网络都是相应计算量和参数量下的优化模型,可供各种各样的硬件平台用于各种各样的下游任务。对于任何硬件平台的需求,只需根据目标硬件平台的要求为条件对经训练的所述多个子网络进行搜索,就可将搜索到的子网络用于目标硬件平台。
由于搜索到的子网络很好地适配于目标硬件平台,因此在目标硬件平台上部署用搜索到的子网络构建的神经网络模型以执行各种不同下游任务(诸如但不限于图像分类、目标检测、图像分割等)时,模型的推理速度更快,精度更高。在目标硬件平台上部署用搜索到的子网络构建的神经网络模型有利于提高硬件平台的计算利用率和成功率,相较于在目标硬件平台上部署常规神经网络模型,可以使目标硬件平台在同等计算量的情况下具有更低的功耗。
在一些实施例中,方法100还可以包括:获得经训练的所述多个子网络中的预设数量的子网络中的每个子网络对应的评估指标;以所述预设数量的子网络中的每个子网络的所述多个网络结构参数和该子网络对应的评估指标分别作为训练数据和标签,训练多层感知机以构建评估指标预测器;以满足所述目标硬件平台的要求(例如,所述目标硬件平台关于计算量和参数量的要求)为条件对经训练的所述多个子网络进行搜索,并用所构建的评估指标预测器预测搜索到的子网络的评估指标,以将评估指标最优的子网络用于所述目标硬件平台。所述预设数量可以根据训练多层感知机的需要具体设置。由此,可以对搜索到的子网络进行合理评估。评估指标例如可以包括但不限于精度(precision)、速度(speed)、准确率(accuracy)、错误率(error)、召回率(recall)、灵敏度(sensitivity)、特效度(specificity)、F分数(F-score)等各种适于评估神经网络的性能的指标。
在一些示例中,获得所述预设数量的子网络中的每个子网络对应的评估指标可以包括:使该子网络作为主干,并与头部组装成神经网络模型;在固定主干的参数不变的情况下,训练神经网络模型以更新头部的参数,以获得与该子网络对应的经训练的神经网络模型;利用同一测试集测试与所述预设数量的子网络中的每个子网络对应的经训练的神经网络模型,以获得该经训练的神经网络模型的评估指标,作为该子网络对应的评估指标。头部例如可以是分类器或检测头等。在另一些示例中,可以替代地使该子网络作为主干,并与颈部、头部组装成神经网络模型;在固定主干的参数不变的情况下,训练神经网络模型以更新颈部和头部的参数,以获得与该子网络对应的经训练的神经网络模型。测试集可以来自任何现有的数据库(例如但不限于ImageNet数据库),而无需与下游任务相关(此时下游任务甚至可以是未知的)。当然,在一些情况下,也可以使测试集与下游任务相关,例如可以与下游任务的数据的分布相同或相似,这在一定程度上可以提高精度。作为非限制性示例,头部可以是用于检测图像中是否包括猫的检测头,测试集可以包括有猫的图像和无猫的图像。
在一些示例中,训练多层感知机可以包括:通过独热编码(one-hot coding)将子网络的每个网络结构参数编码为向量,并将各个网络结构参数的向量拼接在一起作为训练数据输入到多层感知机中。例如,在卷积核尺寸的候选参数空间为{3,5,7}、阶段深度的候选参数空间为{2,3,4}、通道扩张比例系数的候选参数空间为{3,4,5,6}的情况下,如果一个子网络的卷积核尺寸为3、阶段深度为2、通道扩张比例系数为6,则相应的独热编码向量为(1, 0, 0)、(1, 0, 0)、(0, 0, 0, 1),把它们拼接成(1, 0, 0, 1, 0, 0, 0, 0, 0, 1)作为多层感知机的输入。可以根据实际情况合理设置多层感知机的具体配置。作为非限制性示例,可以提供三层感知机,每层神经元的个数分别为400、800、400,训练周期可以设为100。
在一些实施例中,以满足所述目标硬件平台的要求(例如,所述目标硬件平台关于计算量和参数量的要求)为条件对经训练的所述多个子网络进行搜索可以基于进化算法。例如,参见图8,可以根据经训练的所述多个子网络的总数量设置种群数量Vg、变异数量Vv、交叉数量Vc、筛选数量Vs,其中Vg=Vv+Vc,Vs<Vg。在一些示例中,Vv等于Vc。在一些示例中,Vv大于Vc。在一些示例中,Vv小于Vc。在一些示例中,Vs可以不超过Vg的50%、或者不超过Vg的40%、或者不超过Vg的30%、或者不超过Vg的20%、或者不超过Vg的10%。在一些示例中,Vg可以不超过子网络的总数量的80%、或者不超过子网络的总数量的60%、或者不超过子网络的总数量的40%、或者不超过子网络的总数量的20%、或者不超过子网络的总数量的10%、或者不超过子网络的总数量的5%。
接下来,可以以满足目标硬件平台的要求(例如,所述目标硬件平台关于计算量和参数量的要求)为进化条件,选择经训练的所述多个子网络中的Vg个子网络组成种群。用所构建的评估指标预测器(例如,精度预测器)预测所述Vg个子网络中的每个子网络的评估指标(例如,精度),并筛选出评估指标最优(例如,精度最高)的前Vs个子网络。然后,可以使所述Vs个子网络经由变异操作在满足所述进化条件的情况下得到Vv个子网络,并经由交叉操作在满足所述进化条件的情况下得到Vc个子网络。变异操作可以使子网络的网络结构参数在相应候选参数空间内变化。在一些示例中,变异操作可以使子网络以阶段为单位发生变异。在一些示例中,变异操作可以使子网络以块为单位发生变异。在一些示例中,变异操作可以使子网络以层为单位发生变异。在一些示例中,变异操作可以使子网络的一个或多个阶段、和/或一个或多个块、和/或一个或多个层的网络结构参数在相应候选参数空间内变化。例如,当卷积核尺寸为5、阶段深度为4、通道扩张比例系数为6的子网络的某个阶段发生变异时,该阶段的卷积核尺寸可能变为3或7,阶段深度可能变为2或3,通道扩张比例系数可能变为3或4或5。交叉操作可以使子网络相互交换各自的部分。在一些示例中,交叉操作可以使子网络以阶段为单位相互交换。在一些示例中,交叉操作可以使子网络以块为单位相互交换。在一些示例中,交叉操作可以使子网络以层为单位相互交换。在一些示例中,交叉操作可以使子网络的一个或多个阶段、和/或一个或多个块、和/或一个或多个层与另一个子网络的对应的一个或多个阶段、和/或一个或多个块、和/或一个或多个层相互交换。例如,如果第一子网络包括具有3个块的第一阶段和具有3个块的第二阶段,第二子网络包括具有2个块的第一阶段和具有2个块的第二阶段,那么在第一子网络与第二子网络以阶段为单位相互交换之后,可以得到包括具有3个块的第一阶段和具有2个块的第二阶段的第三子网络,以及包括具有2个块的第一阶段和具有3个块的第二阶段的第四子网络。发生变异或交叉的阶段、块或层可以是在采样子网络期间被选取用于经历网络结构参数的渐进式收缩的那些阶段、块或层。如果变异或交叉得到的子网络不满足进化条件,则重新变异或交叉。
前面提到过,在渐进式收缩某个网络结构参数时,可以使网络的所有阶段都同步收缩,这会使得所得到的子网络的各个阶段的网络结构参数相同,但是可以使子网络的采样时间以及训练时间大幅减少。而变异操作和交叉操作则可以快速地生成各个阶段的网络结构参数不完全相同的新的主干网络,并且这样生成的新的主干网络更有可能具有良好的性能。由于网络结构参数的每种组合都已得到充分训练,因此新的主干网络无需再进行训练。由此,这使得不必逐个阶段地通过渐进式收缩的方式进行采样,避免在不好的网络结构中浪费时间。
变异得到的Vv个子网络和交叉得到的Vc个子网络可以重新组成新的种群,然后可以对新的种群重复进行筛选、变异与交叉的过程,直到达到阈值进化代数为止。该阈值进化代数可以被根据具体情况合理设置,例如可以被设置为10、20、50、100等。达到阈值进化代数后,用所构建的评估指标预测器(例如,精度预测器)预测最后的种群中的每个子网络的评估指标(例如,精度),并将评估指标最优(例如,精度最高)的子网络用于目标硬件平台。
因此,方法100可以在搜索中采用进化算法并结合评估指标预测器,利用训练好的评估指标预测器根据搜索到的网络的网络结构参数直接输出评估指标,而无需利用大量数据对搜索到的网络进行训练和预测以得到其评估指标,加速了搜索过程,提高了搜索的准确性和鲁棒性。可以理解,进化算法仅仅是示例性的而非限制性的,也可以采用其它合适的搜索算法,包括但不限于强化学习、贝叶斯推理、马尔可夫随机场等。
在一些实施例中,方法100还可以包括使所述评估指标最优的子网络作为主干,并与头部组装成用于所述目标硬件平台的下游任务的神经网络模型;利用基于所述下游任务的训练数据训练神经网络模型以更新主干和头部二者的参数,从而获得用于所述下游任务的经训练的神经网络模型。头部例如可以是分类器或检测头等。在一些示例中,可以替代地包括:使所述评估指标最优的子网络作为主干,并与颈部、头部组装成神经网络模型;利用基于所述下游任务的训练数据训练神经网络模型以更新主干、颈部和头部的参数,从而获得用于所述下游任务的经训练的神经网络模型。由于主干网络已经过充分训练,因此在用基于所述下游任务的训练数据进行训练时,只需要较少的训练时间就能将整个神经网络模型训练好。
作为非限制性示例,当目标硬件平台被配置用于执行的下游任务已知为目标检测时,可以使所述评估指标最优的子网络作为主干,并与可选的颈部、头部组装成神经网络模型,并利用已对目标的类别和位置进行标注的用于目标检测的训练图像来训练神经网络模型以更新主干、可选的颈部和头部的参数,从而获得用于目标检测的经训练的神经网络模型。由此,当接收到待检测的图像时,可以将所接收的待检测的图像输入用于目标检测的经训练的神经网络模型,以输出该图像中的目标的类别和位置。由于根据本公开的从所述评估指标最优的子网络得到的经训练的神经网络模型良好地适配于目标硬件平台,因此其在进行目标检测时推理速度快且精度高,并且目标硬件平台在运行根据本公开的神经网络模型进行目标检测时相较于运行其它目标检测神经网络模型可以在同等计算量的情况下实现更低的功耗。在一些情况下,如果在超网络和子网络的构建阶段就已知下游任务为目标检测,则在超网络的自监督学习和子网络的自监督蒸馏的过程中,也可以使用上述用于目标检测的训练图像作为训练数据,并且可以不对这些训练数据进行标注。通过使用于超网络和子网络的训练数据与目标检测下游任务相关,可以使根据本公开的从所述评估指标最优的子网络得到的经训练的神经网络模型的精度进一步提高。可以理解,也可以向除目标检测以外的其它类型的下游任务(诸如图像分割、图像分类等)应用本公开。
下面结合图9来介绍根据本公开的一些实施例的为目标硬件平台构建神经网络的装置200。如图9所示,装置200包括超网络构建模块202、超网络训练模块204、子网络构建模块206、子网络训练模块208和搜索模块210。超网络构建模块202可以被配置为构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值。超网络训练模块204可以被配置为通过自监督学习的方式训练所述超网络。子网络构建模块206可以被配置为以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,其中,所述多个子网络中的最高一级子网络是所述超网络,其中,每个子网络是通过从该子网络的上一级子网络采样得到的,并且其中,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值。子网络训练模块208可以被配置为通过自监督蒸馏的方式训练所述多个子网络,其中,作为教师网络的子网络是作为学生网络的子网络的上一级子网络。搜索模块210可以被配置为以满足目标硬件平台的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。装置200的实施例基本类似于前述方法100的实施例,因此在此不再赘述,相关之处可参见方法实施例部分的说明。
本公开还提供了一种为目标硬件平台构建神经网络的计算设备,其可以包括一个或多个处理器以及存储计算机可执行指令的存储器,计算机可执行指令在被一个或多个处理器执行时使得一个或多个处理器执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。如图10所示,计算设备300可以包括(一个或多个)处理器302以及存储计算机可执行指令的存储器304,计算机可执行指令在被(一个或多个)处理器302执行时使得(一个或多个)处理器302执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。(一个或多个)处理器302例如可以是计算设备300的中央处理单元(CPU)。(一个或多个)处理器302可以是任何类型的通用处理器,或者可以是专门设计用于为目标硬件平台构建神经网络的处理器,诸如专用集成电路(“ASIC”)。存储器304可以包括可由(一个或多个)处理器302访问的各种计算机可读介质。在各种实施例中,本文描述的存储器304可以包括易失性和非易失性介质、可移除和不可移除介质。例如,存储器304可以包括以下的任何组合:随机存取存储器(“RAM”)、动态RAM(“DRAM”)、静态RAM(“SRAM”)、只读存储器(“ROM”)、闪存、高速缓冲存储器和/或任何其它类型的非瞬态计算机可读介质。存储器304可以存储在被处理器302执行时使得处理器302执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法的指令。
本公开还提供了一种其上存储有计算机可执行指令的非瞬态存储介质,计算机可执行指令在被计算机执行时使得计算机执行根据本公开的前述任一实施例所述的为目标硬件平台构建神经网络的方法。
说明书及权利要求中的词语“左”、“右”、“前”、“后”、“顶”、“底”、“上”、“下”、“高”、“低”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在附图中的装置倒转时,原先描述为在其它特征“之上”的特征,此时可以描述为在其它特征“之下”。装置还可以以其它方式定向(旋转90度或在其它方位),此时将相应地解释相对空间关系。
在说明书及权利要求中,称一个元件位于另一元件“之上”、“附接”至另一元件、“连接”至另一元件、“耦接”至另一元件、或“接触”另一元件等时,该元件可以直接位于另一元件之上、直接附接至另一元件、直接连接至另一元件、直接耦接至另一元件或直接接触另一元件,或者可以存在一个或多个中间元件。相对照的是,称一个元件“直接”位于另一元件“之上”、“直接附接”至另一元件、“直接连接”至另一元件、“直接耦接”至另一元件或“直接接触”另一元件时,将不存在中间元件。在说明书及权利要求中,一个特征布置成与另一特征“相邻”,可以指一个特征具有与相邻特征重叠的部分或者位于相邻特征上方或下方的部分。
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
在本公开中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
如本文所使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任何和所有组合。本文中使用的术语只是出于描述特定实施例的目的,并不旨在限制本公开。如本文中使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚指示。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其它各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。可以以任何方式和/或与其它实施例的方面或元件相结合地组合以上公开的所有实施例的方面和元件,以提供多个附加实施例。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
虽然已通过示例对本公开的一些特定实施例进行了详细说明,但本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
Claims (15)
1.一种为目标硬件平台构建神经网络的方法,包括:
构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值;
通过自监督学习的方式训练所述超网络;
以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,其中,所述多个子网络中的最高一级子网络是所述超网络,其中,每个子网络是通过从该子网络的上一级子网络采样得到的,并且其中,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值;
通过自监督蒸馏的方式训练所述多个子网络,其中,作为教师网络的子网络是作为学生网络的子网络的上一级子网络;以及
以满足目标硬件平台关于计算量和参数量的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。
2.根据权利要求1所述的方法,其中,所述多个网络结构参数包括卷积核尺寸、阶段深度和通道扩张比例系数。
3.根据权利要求2所述的方法,其中,卷积核尺寸的候选参数空间包括第一卷积核尺寸S1以及最接近于S1并且小于S1的第二卷积核尺寸S2,其中,从具有S1×S1卷积核的上一级子网络采样得到具有S2×S2卷积核的子网络包括:通过维度为(S2×S2)×(S2×S2)的核变换矩阵,将位于该上一级子网络的S1×S1卷积核中心的(S2×S2)部分的权重变换为该子网络的S2×S2卷积核的权重。
4.根据权利要求3所述的方法,其中,核变换矩阵在每个阶段的不同块之间是不同的,并且在每个块的不同通道之间是共享的。
5.根据权利要求2所述的方法,其中,阶段深度的候选参数空间包括第一阶段深度D1以及最接近于D1并且小于D1的第二阶段深度D2,其中,从具有第一阶段深度D1的上一级子网络采样得到具有第二阶段深度D2的子网络包括:保留D1个块中的前D2个块,并丢弃所述D1个块中的后(D1-D2)个块。
6.根据权利要求2所述的方法,其中,通道扩张比例系数的候选参数空间包括第一通道扩张比例系数C1以及最接近于C1并且小于C1的第二通道扩张比例系数C2,其中,从具有第一通道扩张比例系数C1的上一级子网络采样得到具有第二通道扩张比例系数C2的子网络包括:按照通道权重的L1范数的降序重新排列多个通道;保留重新排列后的所述多个通道中的前C2/C1比例的通道,并丢弃重新排列后的所述多个通道中的后(C1-C2)/C1比例的通道。
7.根据权利要求1所述的方法,还包括:
获得经训练的所述多个子网络中的预设数量的子网络中的每个子网络对应的评估指标;
以所述预设数量的子网络中的每个子网络的所述多个网络结构参数和该子网络对应的评估指标分别作为训练数据和标签,训练多层感知机以构建评估指标预测器;
以满足所述目标硬件平台关于计算量和参数量的要求为条件对经训练的所述多个子网络进行搜索,并用所构建的评估指标预测器预测搜索到的子网络的评估指标,以将评估指标最优的子网络用于所述目标硬件平台。
8.根据权利要求7所述的方法,其中,获得所述预设数量的子网络中的每个子网络对应的评估指标包括:
使该子网络作为主干,并与头部组装成神经网络模型;
在固定主干的参数不变的情况下,训练神经网络模型以更新头部的参数,以获得与该子网络对应的经训练的神经网络模型;
利用同一测试集测试与所述预设数量的子网络中的每个子网络对应的经训练的神经网络模型,以获得该经训练的神经网络模型的评估指标,作为该子网络对应的评估指标。
9.根据权利要求7所述的方法,其中,训练多层感知机包括:通过独热编码将子网络的每个网络结构参数编码为向量,并将各个网络结构参数的向量拼接在一起作为训练数据输入到多层感知机中。
10.根据权利要求7所述的方法,其中,所述搜索基于进化算法,并且其中,所述方法包括:
根据经训练的所述多个子网络的总数量设置种群数量Vg、变异数量Vv、交叉数量Vc、筛选数量Vs,其中Vg=Vv+Vc,Vs<Vg;
以满足目标硬件平台关于计算量和参数量的要求为进化条件,选择经训练的所述多个子网络中的Vg个子网络组成种群;
用所构建的评估指标预测器预测所述Vg个子网络中的每个子网络的评估指标,并筛选出评估指标最优的前Vs个子网络;
使所述Vs个子网络经由变异操作在满足所述进化条件的情况下得到Vv个子网络,并经由交叉操作在满足所述进化条件的情况下得到Vc个子网络,所述变异操作使得子网络的网络结构参数在相应候选参数空间内变化,所述交叉操作使得子网络相互交换各自的部分,所述Vv个子网络和所述Vc个子网络重新组成新的种群;
对新的种群重复进行筛选、变异与交叉的过程,直到达到阈值进化代数为止,并将最后的种群中用所构建的评估指标预测器所预测的评估指标最优的子网络用于所述目标硬件平台。
11.根据权利要求7所述的方法,还包括:
使所述评估指标最优的子网络作为主干,并与头部组装成用于所述目标硬件平台的下游任务的神经网络模型;
利用基于所述下游任务的训练数据训练神经网络模型以更新主干和头部二者的参数,从而获得用于所述下游任务的经训练的神经网络模型。
12.根据权利要求1所述的方法,其中,在训练所述多个子网络时,在每次参数迭代更新中,作为教师网络的子网络中的与作为学生网络的子网络相同的部分通过作为学生网络的子网络的参数动量更新,作为教师网络的子网络中的与作为学生网络的子网络不同的部分通过反向传播更新,作为学生网络的子网络通过反向传播更新。
13.一种为目标硬件平台构建神经网络的装置,包括:
超网络构建模块,被配置为构建超网络,所述超网络的多个网络结构参数中的每个网络结构参数的值被选择为该网络结构参数的候选参数空间所包含的候选参数值中的最大值;
超网络训练模块,被配置为通过自监督学习的方式训练所述超网络;
子网络构建模块,被配置为以经训练的超网络为基础网络,通过分别在所述多个网络结构参数中的每个网络结构参数的候选参数空间中按降序依次选择每个候选参数值来构建多个子网络,其中,所述多个子网络中的最高一级子网络是所述超网络,其中,每个子网络是通过从该子网络的上一级子网络采样得到的,并且其中,每个子网络的一个网络结构参数的值在所述一个网络结构参数的候选参数空间中最接近于并且小于该子网络的上一级子网络的所述一个网络结构参数的值;
子网络训练模块,被配置为通过自监督蒸馏的方式训练所述多个子网络,其中,作为教师网络的子网络是作为学生网络的子网络的上一级子网络;以及
搜索模块,被配置为以满足目标硬件平台关于计算量和参数量的要求为条件对经训练的所述多个子网络进行搜索,并将搜索到的子网络用于所述目标硬件平台。
14.一种为目标硬件平台构建神经网络的计算设备,包括:
一个或多个处理器;以及
存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据权利要求1至12中任一项所述的为目标硬件平台构建神经网络的方法。
15.一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据权利要求1至12中任一项所述的为目标硬件平台构建神经网络的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210780808.0A CN114861890B (zh) | 2022-07-05 | 2022-07-05 | 构建神经网络的方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210780808.0A CN114861890B (zh) | 2022-07-05 | 2022-07-05 | 构建神经网络的方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114861890A CN114861890A (zh) | 2022-08-05 |
CN114861890B true CN114861890B (zh) | 2022-09-09 |
Family
ID=82626033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210780808.0A Active CN114861890B (zh) | 2022-07-05 | 2022-07-05 | 构建神经网络的方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114861890B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115238880B (zh) * | 2022-09-21 | 2022-12-23 | 山东大学 | 输电巡检终端的自适应部署方法、系统、设备及存储介质 |
CN115293337B (zh) * | 2022-10-09 | 2022-12-30 | 深圳比特微电子科技有限公司 | 构建神经网络的方法、装置、计算设备及存储介质 |
CN116402096A (zh) * | 2023-03-24 | 2023-07-07 | 曲阜师范大学 | 一种单目标视觉跟踪神经网络结构的构建方法、装置和设备 |
CN116070119B (zh) * | 2023-03-31 | 2023-10-27 | 北京数慧时空信息技术有限公司 | 基于小样本的多任务组合模型的训练方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097178A (zh) * | 2019-05-15 | 2019-08-06 | 电科瑞达(成都)科技有限公司 | 一种基于熵注意的神经网络模型压缩与加速方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159489B (zh) * | 2019-12-05 | 2022-05-03 | 中国科学院深圳先进技术研究院 | 一种搜索方法 |
CN111967594A (zh) * | 2020-08-06 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种神经网络压缩方法、装置、设备及存储介质 |
CN112200313A (zh) * | 2020-09-18 | 2021-01-08 | 苏州浪潮智能科技有限公司 | 一种深度学习模型推理加速的方法、系统、设备及介质 |
CN112598117A (zh) * | 2020-12-29 | 2021-04-02 | 广州极飞科技有限公司 | 神经网络模型设计方法、部署方法、电子设备及存储介质 |
US20220035878A1 (en) * | 2021-10-19 | 2022-02-03 | Intel Corporation | Framework for optimization of machine learning architectures |
CN114118360A (zh) * | 2021-10-27 | 2022-03-01 | 清华大学 | 神经网络架构通道数搜索方法、装置、设备及存储介质 |
-
2022
- 2022-07-05 CN CN202210780808.0A patent/CN114861890B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110097178A (zh) * | 2019-05-15 | 2019-08-06 | 电科瑞达(成都)科技有限公司 | 一种基于熵注意的神经网络模型压缩与加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114861890A (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114861890B (zh) | 构建神经网络的方法、装置、计算设备及存储介质 | |
Liu et al. | Progressive neural architecture search | |
CN109887282B (zh) | 一种基于层级时序图卷积网络的路网交通流预测方法 | |
CN109120462B (zh) | 机会网络链路的预测方法、装置及可读存储介质 | |
JP6574503B2 (ja) | 機械学習方法および装置 | |
CN106650922B (zh) | 硬件神经网络转换方法、计算装置、软硬件协作系统 | |
CN110826638B (zh) | 基于重复注意力网络的零样本图像分类模型及其方法 | |
US20200167659A1 (en) | Device and method for training neural network | |
CN112382082A (zh) | 一种拥堵区域交通运行状态预测方法及系统 | |
CN112115998B (zh) | 一种基于对抗增量聚类动态路由网络克服灾难性遗忘的方法 | |
CN113570029A (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN114398491A (zh) | 一种基于知识图谱的语义分割图像实体关系推理方法 | |
CN114548591B (zh) | 一种基于混合深度学习模型和Stacking的时序数据预测方法及系统 | |
WO2022083624A1 (zh) | 一种模型的获取方法及设备 | |
CN115661550A (zh) | 基于生成对抗网络的图数据类别不平衡分类方法及装置 | |
CN110289987B (zh) | 基于表征学习的多智能体系统网络抗攻击能力评估方法 | |
Lukasik et al. | Neural architecture performance prediction using graph neural networks | |
CN115080795A (zh) | 一种多充电站协同负荷预测方法及装置 | |
CN114565092A (zh) | 一种神经网络结构确定方法及其装置 | |
CN115017377B (zh) | 用于搜索目标模型的方法、装置和计算设备 | |
Shen et al. | Lasso regression based on halton sequence initialized capuchin search algorithm | |
CN115544307A (zh) | 基于关联矩阵的有向图数据特征提取与表达方法和系统 | |
KR102184395B1 (ko) | 결정트리 및 심층신경망을 이용한 대량의 데이터를 분류하기 위한 장치, 이를 위한 방법 및 이 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체 | |
CN114298290A (zh) | 一种基于自监督学习的神经网络编码方法及编码器 | |
CN116805384A (zh) | 自动搜索方法、自动搜索的性能预测模型训练方法及装置 |
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 |