掌桥专利:专业的专利平台
掌桥专利
首页

神经网络的压缩方法及装置、存储介质及电子设备

文献发布时间:2023-06-19 11:57:35


神经网络的压缩方法及装置、存储介质及电子设备

技术领域

本发明涉及人工智能技术领域,特别是涉及一种神经网络的压缩方法及装置、存储介质及电子设备。

背景技术

随着人工智能技术的发展,在各个工程应用或科学研究领域,神经网络已成为了机器学习算法中常见的工具之一。

在实际的应用过程中,以常规方法构建的神经网络的结构较为复杂,为了适应嵌入式计算及边缘计算等场景,常常需要对神经网络进行压缩,以得到对应的小型神经网络。

现有压缩神经网络的方法,常常采用知识蒸馏的方式实现,通过将已完成训练的大型神经网络的输出作为标签数据,以此训练一个小型神经网络。发明人通过研究发现,通过该方法压缩得到的神经网络的精度较低,难以具备原有神经网络的学习效果。

发明内容

有鉴于此,本发明实施例提供了一种神经网络的压缩方法,以解决压缩得到神经网络的精度较低,难以具备原有神经网络的学习效果的问题。

本发明实施例还提供了一种神经网络的压缩装置,用以保证上述方法实际中的实现及应用。

为实现上述目的,本发明实施例提供如下技术方案:

一种神经网络的压缩方法,包括:

确定已训练完成的第一神经网络,及所述第一神经网络对应的各个预构建的第二神经网络,每个所述第二神经网络的结构复杂度小于所述第一神经网络的结构复杂度;

按照预设的训练周期,分别对每个所述第二神经网络进行训练,以使每个所述第二神经网络的输出结果接近所述第一神经网络的输出结果;

在进入当前的训练周期时,将样本数据分别输入各个目标神经网络,所述各个目标神经网络包括所述第一神经网络和各个所述第二神经网络,每个所述目标神经网络由多个子结构串联构成;

获取当前每个所述目标神经网络的输出张量,以及每个所述目标神经网络中每个子结构的输出张量;

依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度;每个所述第二神经网络对应的各个损失度表征,所述第二神经网络对应的输出结果与所述第一神经网络的输出结果的相似程度;

依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度;

判断所述总损失度是否收敛,若所述总损失度未收敛,则调整当前各个第二神经网络的模型参数,并进入下一个训练周期;

若所述总损失度已收敛,则在当前的各个第二神经网络中确定目标第二神经网络,将所述目标第二神经网络作为所述第一神经网络对应的压缩神经网络。

上述的方法,可选的,所述依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度,包括:

确定每个所述第二神经网络对应的第一损失度,每个所述第二神经网络对应的第一损失度为,所述第二神经网络的输出张量与所述第一神经网络的输出张量之间的欧式距离;

针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络;

依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度,并将每个所述子结构对应的损失度作为所述第二神经网络对应的第二损失度。

上述的方法,可选的,所述第一神经网络的子结构个数大于每个所述第二神经网络的子结构个数,各个所述第二神经网络的子结构个数依次递减,所述针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络的过程,包括:

将所述第一神经网络确定为首个第二神经网络所对应的第三神经网络;

确定目标网络集合,所述目标网络结合中包括除首个第二神经网络外的各个第二神经网络;

确定所述目标网络集合中每个第二神经网络对应的第四神经网络,所述第二神经网络对应的第四神经网络为所述第二神经网络的前一个第二神经网络;

将每个所述第四神经网络确定为其对应的第二神经网络所对应的第三神经网络。

上述的方法,可选的,所述依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度,包括:

在所述第三神经网络对应的各个子结构中,确定所述第二神经网络的每个子结构对应的目标子结构;

确定所述第二神经网络的每个子结构对应的第三输出张量和第四输出张量,每个所述子结构对应的所述第三输出张量为所述子结构的输出张量,每个所述子结构对应的所述第四输出张量为,所述子结构对应的目标子结构的输出张量;

针对所述第二神经网络的每个所述子结构,基于其对应的所述第三输出张量和所述第四输出张量计算KL散度,并将所述KL散度作为所述子结构对应的损失度。

上述的方法,可选的,所述依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度,包括:

确定每个所述第二神经网络当前对应的计算权重;

依据各个所述计算权重、各个所述第二神经网络对应的各个损失度和预设的损失计算策略,进行加权和运算,并将运算结果作为当前的总损失度。

上述的方法,可选的,还包括:

若所述总损失度未收敛,则判断所述总损失度是否小于第一预设阈值;

若所述总损失度小于所述第一预设阈值,则依据预设的权重调整策略,更新各个所述第二神经网络对应的计算权重。

上述的方法,可选的,所述判断所述总损失度是否收敛,包括:

获取目标总损失度,所述目标总损失度为上一个训练周期中确定的总损失度;

确定当前的总损失度相对于所述目标总损失度的偏差,并判断所述偏差是否小于第二预设阈值;

若所述偏差小于所述第二预设阈值,则确定当前的总损失度已收敛。

一种神经网络的压缩装置,包括:

第一确定单元,用于确定已训练完成的第一神经网络,及所述第一神经网络对应的各个预构建的第二神经网络,每个所述第二神经网络的结构复杂度小于所述第一神经网络的结构复杂度;

训练单元,用于按照预设的训练周期,分别对每个所述第二神经网络进行训练,以使每个所述第二神经网络的输出结果接近所述第一神经网络的输出结果;

输入单元,用于在进入当前的训练周期时,将样本数据分别输入各个目标神经网络,所述各个目标神经网络包括所述第一神经网络和各个所述第二神经网络,每个所述目标神经网络由多个子结构串联构成;

获取单元,用于获取当前每个所述目标神经网络的输出张量,以及每个所述目标神经网络中每个子结构的输出张量;

第二确定单元,用于依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度;每个所述第二神经网络对应的各个损失度表征,所述第二神经网络对应的输出结果与所述第一神经网络的输出结果的相似程度;

第三确定单元,用于依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度;

第一判断单元,用于判断所述总损失度是否收敛,若所述总损失度未收敛,则调整当前各个第二神经网络的模型参数,并进入下一个训练周期;

第四确定单元,用于若所述总损失度已收敛,则在当前的各个第二神经网络中确定目标第二神经网络,将所述目标第二神经网络作为所述第一神经网络对应的压缩神经网络。

上述的装置,可选的,所述第二确定单元,包括:

第一确定子单元,用于确定每个所述第二神经网络对应的第一损失度,每个所述第二神经网络对应的第一损失度为,所述第二神经网络的输出张量与所述第一神经网络的输出张量之间的欧式距离;

第二确定子单元,用于针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络;

第三确定子单元,用于依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度,并将每个所述子结构对应的损失度作为所述第二神经网络对应的第二损失度。

上述的装置,可选的,所述第一神经网络的子结构个数大于每个所述第二神经网络的子结构个数,各个所述第二神经网络的子结构个数依次递减,所述第二确定子单元,包括:

第四确定子单元,用于将所述第一神经网络确定为首个第二神经网络所对应的第三神经网络;

第五确定子单元,用于确定目标网络集合,所述目标网络结合中包括除首个第二神经网络外的各个第二神经网络;

第六确定子单元,用于确定所述目标网络集合中每个第二神经网络对应的第四神经网络,所述第二神经网络对应的第四神经网络为所述第二神经网络的前一个第二神经网络;

第七确定子单元,用于将每个所述第四神经网络确定为其对应的第二神经网络所对应的第三神经网络。

上述的装置,可选的,所述第三确定子单元,包括:

第八确定子单元,用于在所述第三神经网络对应的各个子结构中,确定所述第二神经网络的每个子结构对应的目标子结构;

第九确定子单元,用于确定所述第二神经网络的每个子结构对应的第三输出张量和第四输出张量,每个所述子结构对应的所述第三输出张量为所述子结构的输出张量,每个所述子结构对应的所述第四输出张量为,所述子结构对应的目标子结构的输出张量;

计算子单元,用于针对所述第二神经网络的每个所述子结构,基于其对应的所述第三输出张量和所述第四输出张量计算KL散度,并将所述KL散度作为所述子结构对应的损失度。

上述的装置,可选的,所述第三确定单元,包括:

第十确定子单元,用于确定每个所述第二神经网络当前对应的计算权重;

运算子单元,用于依据各个所述计算权重、各个所述第二神经网络对应的各个损失度和预设的损失计算策略,进行加权和运算,并将运算结果作为当前的总损失度。

上述的装置,可选的,还包括:

第二判断单元,用于若所述总损失度未收敛,则判断所述总损失度是否小于第一预设阈值;

更新单元,用于若所述总损失度小于所述第一预设阈值,则依据预设的权重调整策略,更新各个所述第二神经网络对应的计算权重。

上述的装置,可选的,所述第一判断单元,包括:

获取子单元,用于获取目标总损失度,所述目标总损失度为上一个训练周期中确定的总损失度;

判断子单元,用于确定当前的总损失度相对于所述目标总损失度的偏差,并判断所述偏差是否小于第二预设阈值;

第十一确定子单元,用于若所述偏差小于所述第二预设阈值,则确定当前的总损失度已收敛。

一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的神经网络的压缩方法。

一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行如上述的神经网络的压缩方法。

基于上述本发明实施例提供的一种神经网络的压缩方法,包括:按预设的训练周期,基于已训练的第一神经网络,分别对各个结构相对简单的第二神经网络进行训练,以使每个第二神经网络的输出结果接近第一神经网络的输出结果。第一神经网络和第二神经网络等各个神经网络由多个子结构串联构成,在每个训练周期中,依据各个神经网络的输出张量和各个神经网络的各个子结构的输出张量,确定每个第二神经网络对应的各个损失度,各个损失度表征第二神经网络与第一神经网络的输出结果之间的相似程度,继而确定总损失度,若总损失度未收敛,则调整各个第二神经网络的模型参数并进入下一个训练周期,直至总损失度收敛时,在当前的各个第二神经网络中确定目标第二神经网络,将目标第二神经网络作为第一神经网络对应的压缩神经网络。通过本发明实施例提供的方法,在训练过程中,结合神经网络的最终输出和中间输出,对第二神经网络的训练进行监督,使得第二神经网络能够有效接近第一神经网络,掌握第一神经网络的学习能力,将完成训练后的第二神经网络作为第一神经网络对应的压缩神经网络,可提高压缩神经网络的精度。其次,可同时训练多个神经网络,可根据需求选择最适合应用场景的神经网络,应用十分灵活且压缩训练效率高,训练成本较低。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种神经网络的压缩方法的方法流程图;

图2为本发明实施例提供的一种神经网络的压缩方法的又一方法流程图;

图3为本发明实施例提供的一种神经网络的压缩方法的另一方法流程图;

图4为本发明实施例提供的一种神经网络的压缩方法中各个神经网络的结构示意图;

图5为本发明实施例提供的一种神经网络的压缩装置的结构示意图;

图6为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由背景技术可知,目前对神经网络进行压缩的常用方法之一便是知识蒸馏,知识蒸馏是一种基于“教师-学生网络”思想的训练方法,其原理为将已经训练好的模型(教师网络)中包含的知识,蒸馏提取到另一个模型(学生网络)里去。发明人进行研究发现在此过程中仅以大型神经网络的输出作为标签数据对小型神经网络进行训练,相当于人为设计一个小型模型进行重新训练,而中间没有任何过渡阶段,小型神经网络难以稳定学习到大型神经网络的能力,由此得到的小型神经网络精度较低。此外,对神经网络进行压缩的常用方法一方面还有网络结构搜索的方式,通过这一方式进行神经网络压缩的经济成本较高,另一方面则为模型剪枝的方式,通过人为设定参数指标,通过该参数指标对大型神经网络中的内部结构进行删减,以达到模型压缩,此过程中以人为指定的指标进行删减,受人为主观影响较大,亦难以稳定得到有效的压缩模型。

本发明实施例提供一种神经网络的压缩方法,所述方法可应用于多种系统平台,其执行主体可以为计算机终端或各种移动设备的处理器,所述方法的方法流程图如图1所示,包括:

S101:确定已训练完成的第一神经网络,及所述第一神经网络对应的各个预构建的第二神经网络,每个所述第二神经网络的结构复杂度小于所述第一神经网络的结构复杂度;

本发明实施例提供的方法中,可根据具体的深度学习需求,预构建一个模型规模较大,结构复杂度较高的深度神经网络,预先对其进行训练,以得到一个学习效果良好的神经网络。将预先已完成训练的该结构较为复杂的神经网络作为第一神经网络。并预先构建结构复杂度小于第一神经网络的各个神经网络,将其作为第二神经网络,也就是每个第二神经网络的模型结构相较于第一神经网络的模型结构相对简单,其计算量相较于第一神经网络的计算量少。

本发明实施例提供的方法中,构建有多个第二神经网络,各个第二神经网络的结构复杂度可互不相同,可根据实际的压缩需求分别构建对应不同压缩比率的第二神经网络。

需要说明的是,在实际的应用中,可根据需求选择所需构建的第二神经网络的个数,除了可构建多个第二神经网络外,也可仅构建一个第二神经网络,当仅有一个第二神经网络时,则将训练后的该第二神经网络作为压缩神经网络。第二神经网络的个数不影响本发明实施例提供的方法实现功能。另外,在实际的工程应用中,可根据实际选择的神经网络类型构建各个神经网络,例如可采用ResNet101或Xception7等神经网络模型架构,具体的模型类型不影响本发明实施例提供的方法实现功能。其次,可根据实际的构建需求,确定各个神经网络中的内部结构,如各层级结构、残差跳跃连接、激活函数、卷积核大小或通道数等等内容,不影响本发明实施例提供的方法实现功能。

S102:按照预设的训练周期,分别对每个所述第二神经网络进行训练,以使每个所述第二神经网络的输出结果接近所述第一神经网络的输出结果;

本发明实施例提供的方法中,基于知识蒸馏的原理,以第一神经网络作为教师网络,以第二神经网络作为学生网络,按照预设的训练周期分别对每个第二神经网络进行训练,在每个训练周期中以第一神经网络监督各个第二神经网络,通过训练使得在相同输入样本的情况下,第二神经网络的输出结果能够接近第一神经网络的输出结果,这个输出结果包括神经网络的最终输出,也包括中间各个子结构的输出。

S103:在进入当前的训练周期时,将样本数据分别输入各个目标神经网络,所述各个目标神经网络包括所述第一神经网络和各个所述第二神经网络,每个所述目标神经网络由多个子结构串联构成;

本发明实施例提供的方法中,预先将每个目标神经网络的网络结构划分为各个子结构串联的结构。子结构的选取,可以在网络结构当中选取适合作为特征以比对的结构作为一个子结构,也可以随机选取子结构。目标神经网络的各个子结构串联则得到完整的目标神经网络,输入目标神经网络的数据,首先进入第一个子结构,经第一个子结构处理后可得到第一个子结构的输出,而第一个子结构的输出则为第二个子结构的输入,依次经过各个子结构的处理,最后一个子结构的输出则为该目标神经网络的输出。

在进入每个训练周期的时候,可将样本输入每个目标神经网络,依次经过目标神经网络中各个子结构的处理,每个子结构会产生对应的输出张量,亦会产生目标神经网络的最终输出张量。

S104:获取当前每个所述目标神经网络的输出张量,以及每个所述目标神经网络中每个子结构的输出张量;

本发明实施例提供的方法中,当每个目标神经网络对输入的样本数据进行处理后,可从每个目标神经网络的输出节点获取该神经网络的输出张量,以及从目标神经网络中的每个子结构的输出节点获取该子结构的输出张量。

S105:依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度;每个所述第二神经网络对应的各个损失度表征,所述第二神经网络对应的输出结果与所述第一神经网络的输出结果的相似程度;

本发明实施例提供的方法中,将第一神经网络的输出张量及其各个子结构的输出张量作为监督信号,也就是当做真实值,以每个第二神经网络的输出张量及其各个子结构的输出张量作为学习信号,也就是当做预测值,以确定每个第二神经网络对应的各个损失度,每个所述第二神经网络对应的各个损失度包括该第二神经网络的输出张量对应的损失度和其每个子结构的输出张量所对应的损失度。

各个损失度可采用损失函数进行计算,常见的损失函数有均方误差、KL散度(Kullback–Leibler divergence)等等,也可以采用度量距离的公式作为损失函数,例如欧氏距离、曼哈顿距离等等。通常损失度越小,表征相似程度越高。需要说明的是,损失度的具体确定方式,可根据实际的工程应用需求进行选择,不影响本发明实施例提供的方法实现功能。

S106:依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度;

本发明实施例提供的方法中,按照预设的计算方式计算所有第二神经网络对应的所有损失度的总和,得到当前总损失度,例如,可采用直接相加求和的方式计算,也可以根据实际需求采用加权求和的方式进行计算等等。总损失度表征当前各个第二神经网络与第一神经网络的总相似程度。

S107:判断所述总损失度是否收敛,若所述总损失度未收敛,则调整当前各个第二神经网络的模型参数,并进入下一个训练周期;

本发明实施例提供的方法中,可通过预设的收敛策略,判断当前的总损失度是否收敛,也就是判断直至当前的训练过程,各个第二神经网络的总损失度是否趋于稳定,具体的,可通过与之前训练周期得到的总损失度进行比较以判断变化。需要说明的是,若当前训练周期为第一个训练周期,则可以将总损失度与较大的预设数值进行比较,也可以通过设置,在第一个训练周期时,确定总损失度未收敛,因为在第一个训练周期中,至此步骤的各个第二神经网络尚未经过样本训练的调参,各个第二神经网络尚未进行学习。

本发明实施例提供的方法中,若经判断当前的总损失度未收敛,则依据深度学习的反向梯度传播算法更新各个第二神经网络中的模型参数,例如更新各个第二神经网络中各层的连接权值等等。而第一神经网络不参与模型参数的更新。

S108:若所述总损失度已收敛,则在当前的各个第二神经网络中确定目标第二神经网络,将所述目标第二神经网络作为所述第一神经网络对应的压缩神经网络。

本发明实施例提供的方法中,若经判断当前的总损失度已收敛,也就是至此的训练过程,总损失度已趋于稳定,那么则结束训练,在当前的各个第二神经网络中,根据实际应用场景平衡模型的大小、运算速度和精度,选择一个最符合应用需求的目标第二神经网络,将其作为第一神经网络对应的压缩神经网络。例如若应用于高算力平台,则可以选择其中模型结构相对较大的第二神经网络,而若应用于低算力平台,则可选择其中模型结构相对较小的第二神经网络。

基于本发明实施例提供的方法,通过已训练完成的第一神经网络监督各个结构复杂度相对较低的第二神经网络进行训练,在训练过程中,结合各个神经网络输出张量和各个子结构的输出张量,确定每个第二神经网络的各个损失度,继而确定总损失度,通过判断总损失度是否收敛确定是否继续训练过程,在总损失度已收敛时,在当前的各个第二神经网络中确定目标第二神经网络,将其作为第一神经网络对应的压缩神经网络。应用本发明实施例提供的方法,在训练过程中结合各个神经网络的最终输出和各个中间输出进行训练的监督,能够有效全面地监督各个第二神经网络的学习效果是否接近第一神经网络,使得完成训练的各个第二神经网络能够有效掌握第一神经网络的学习能力,从中选择神经网络作为压缩神经网络,可有效提高第一神经网络对应的压缩神经网络的精度。其次,可同时训练多个神经网络,可根据需求选择最适合应用场景的神经网络,应用十分灵活且压缩训练效率高,训练成本较低。

为了更好地说明本发明实施例提供的方法,在图1所示方法的基础上,结合图2,本发明实施例提供了又一种神经网络的压缩方法,其中步骤S105中所提及的依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度的过程,包括:

S201:确定每个所述第二神经网络对应的第一损失度,每个所述第二神经网络对应的第一损失度为,所述第二神经网络的输出张量与所述第一神经网络的输出张量之间的欧式距离;

本发明实施例提供的方法中,针对每一个第二神经网络,计算该第二神经网络的输出张量与第一神经网络的输出张量之间的欧式距离,将计算结果作为该第二神经网络对应的第一损失度。所述第一损失度表征该第二神经网络的输出张量与第一神经网络的输出张量的相似程度。欧式距离指的是欧几里得度量,是一种常见的距离度量,常用于多维空间中两点之间或多点之间的距离表示,在此不作具体说明。

S202:针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络;

本发明实施例提供的方法中,针对每一个第二神经网络,在各个目标神经网络中确定其对应的第三神经网络,对于每个第二神经网络,以其对应的第三神经网络的各个子结构的输出张量对其各个子结构的输出张量进行监督。具体的,可以采用第一神经网络作为每个第二神经网络对应的第三神经网络,也可以将第一神经网络作为其中一个第二神经网络对应的第三神经网络,而其他每个第二神经网络可以在各个第二神经网络中确定其对应的第三神经网络,每个第二神经网络均可直接或间接对应至第一神经网络即可,例如第二神经网络A对应第一神经网络,第二神经网络B对应第二神经网络A,第二神经网络C对应第二神经网络B,则第二神经网络B可视为通过第二神经网络A间接对应至第一神经网络,第二神经网络C可视为通过第二神经网络B和第二神经网络A间接对应至第一神经网络。

S203:依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度,并将每个所述子结构对应的损失度作为所述第二神经网络对应的第二损失度。

本发明实施例提供的方法中,针对每一个第二神经网络,基于该第二神经网络的各个子结构的输出张量,与其对应的第三神经网络的各个子结构的输出张量,确定该第二神经网络中每个子结构对应的损失度。具体的,对于第二神经网络中的每个子结构,可在第三神经网络中确定其对应的一个子结构,并针对第二神经网络中的每个子结构,通过其输出张量与其对应的子结构的输出张量计算该子结构对应的损失度。第二神经网络中的每个子结构对应的损失度表征该子结构的输出张量与其对应的子结构的输出张量的相似程度。每个第二神经网络对应多个第二损失度,具体的第二损失度的个数与其子结构的个数相同。

基于本发明实施例提供的方法,以第二神经网络的输出张量与第一神经网络的输出张量之间的欧氏距离表征第二神经网络的第一损失度,计算较为简单快捷,可提高训练效率。

进一步的,在图2所示方法的基础上,结合图3和图4,本发明实施例提供了另一种神经网络的压缩方法,本发明实施例提供的方法中,所述第一神经网络的子结构个数大于每个所述第二神经网络的子结构个数,各个所述第二神经网络的子结构个数依次递减,其中,如图3所示,步骤S202中所提及的针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络的过程,包括:

S301:将所述第一神经网络确定为首个第二神经网络所对应的第三神经网络;

本发明实施例提供的方法中,以子结构个数的由多至少的顺序给各个第二神经网络赋予了顺序,将各个第二神经网络中子结构个数最多,子结构个数仅小于第一神经网络的第二神经网络视为首个第二神经网络,将其对应的第三神经网络确定为第一神经网络。

本发明实施例提供的方法中的各个神经网络的结构,可参见图4所示结构示意图,其中包含一个第一神经网络和两个第二神经网络,各个神经网络的子结构个数依次减一,第一神经网络的子结构个数为四个,第二神经网络A的子结构个数为三个,第二神经网络B的子结构个数为两个。其中,第二神经网络A对应的第三神经网络则为第一神经网络。

S302:确定目标网络集合,所述目标网络结合中包括除首个第二神经网络外的各个第二神经网络;

本发明实施例提供的方法中,在各个第二神经网络中,以除首个第二神经网络外的各个第二神经网络组成目标网络集合。在具体的应用过程中,该目标网络集合中可包含多个第二神经网络,也可能仅包含一个第二神经网络。

如图4所示结构,第二神经网络B则为目标网络结合中的神经网络,需要说明的是,图4所示结构仅为更好地说明本发明的方法所提供的一种结构示意,其中仅示出了两个第二神经网络,并非对具体第二神经网络的个数进行限制。

S303:确定所述目标网络集合中每个第二神经网络对应的第四神经网络,所述第二神经网络对应的第四神经网络为所述第二神经网络的前一个第二神经网络;

本发明实施例提供的方法中,针对目标网络集合中的每个第二神经网络,将其前一个第二神经网络确定为其对应的第四神经网络,对于目标网络集合中的首个第二神经网络,其前一个神经网络则为所有第二神经网络中的首个第二神经网络。如图4所示结构,第二神经网络A则为第二神经网络B对应的第四神经网络。

S304:将每个所述第四神经网络确定为其对应的第二神经网络所对应的第三神经网络。

本发明实施例提供的方法中,针对目标网络集合中的每个第二神经网络,将其对应的第四神经网络作为其对应的第三神经网络,如第二神经网络B对应的第三神经网络为第二神经网络A。

基于本发明实施例提供的方法,可通过各个第二神经网络进行中间信号的监督,使得第一神经网络的学习能力依次传递,各个第二神经网络的子结构个数较少,可减少中间数据的计算量。另外,可同时训练多个结构复杂度不同的模型。

为了更好地说明本发明实施例提供的方法,在图2所示方法的基础上,本发明实施例提供了又一种神经网络的压缩方法,其中,步骤S203中所提及的依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度的过程,包括:

在所述第三神经网络对应的各个子结构中,确定所述第二神经网络的每个子结构对应的目标子结构;

本发明实施例提供的方法中,针对每个第二神经网络,在其对应的第三神经网络的各个子结构中,确定其每个子结构对应的目标子结构。

例如图4所示结构,各个神经网络的子结构个数依次减一,图中以虚线相连接的两个子结构之间具有对应关系,每一个第二神经网络中的各个子结构与其前一个神经网络中,除末尾子结构外的各个子结构,按照串联顺序一一对应。对于第二神经网络A,第一神经网络为其对应的第三神经网络,对于其子结构A-1,对应的目标子结构为子结构1,子结构A-2对应的目标子结构为子结构2,子结构A-3对应的目标子结构为子结构3。对于第二神经网络B,第二神经网络A为其对应的第三神经网络,对于其子结构B-1,对应的目标子结构为子结构A-1,子结构B-2对应的目标子结构为子结构A-2。

确定所述第二神经网络的每个子结构对应的第三输出张量和第四输出张量,每个所述子结构对应的所述第三输出张量为所述子结构的输出张量,每个所述子结构对应的所述第四输出张量为,所述子结构对应的目标子结构的输出张量;

本发明实施例提供的方法中,针对每个第二神经网络的每个子结构,将其输出张量作为其对应的第三输出张量,将其对应的目标子结构的输出张量作为其对应的第四输出张量。针对每个子结构,基于其对应的第三输出张量和第四输出张量计算其对应的损失度。如图4所示结构中,对于子结构A-1,其对应的第三输出张量则为子结构A-1的输出张量,其对应的第四输出张量为子结构1的输出张量,对于子结构B-1,其输出张量为第三输出张量,子结构A-1的输出张量为第四输出张量,同理确定第二神经网络A和第二神经网络B中每个子结构对应的第三输出张量和第四输出张量。

针对所述第二神经网络的每个所述子结构,基于其对应的所述第三输出张量和所述第四输出张量计算KL散度,并将所述KL散度作为所述子结构对应的损失度。

本发明实施例提供的方法中,针对每个子结构,以其对应的第三输出张量与第四输出张量计算KL散度,将计算结果作为该子结构对应的损失度。KL散度又称相对熵,是描述两个概率分布P和Q之间的差异的一种方法,P表示真实分布,Q表示P的拟合分布。KL散度是一种现有的损失函数,在此不作详细说明。本发明实施例中的KL散度计算中,将第三输出张量作为Q,第四输出张量作为P。如图4所示结构中,针对子结构A-1,则以子结构1的输出张量为P,以子结构A-1的输出张量为Q,计算KL散度,将计算结果作为子结构A-1对应的损失度。针对子结构B-1,以子结构B-1的输出张量为Q,以子结构A-1的输出张量为P,计算KL散度,将计算结构作为子结构B-1对应的损失度,同理确定第二神经网络A和第二神经网络B中每个子结构对应的损失度。

基于本发明实施例提供的方法,以第二神经网络的子结构的输出张量与其对应目标子结构的输出张量计算KL散度,得到损失度,以概率分布的方式确定两个输出张量之间的相似性,可提高判断相似程度的准确性,有利于改善子结构的学习效果,继而提高第二神经网络的精度。

进一步的,在图1所示方法的基础上,本发明实施例提供了又一种神经网络的压缩方法,其中,步骤S106所提及的依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度的过程,包括:

确定每个所述第二神经网络当前对应的计算权重;

本发明实施例提供的方法中,每个第二神经网络对应一个计算权重,这个权重可以为预先设定的固定数值,也可以为一个根据需求不断调整的权重值。每个第二神经网络对应的计算权重对应其参与总损失度计算的重要程度。各个第二神经网络对应的计算权重的总和为一,每个第二神经网络对应的计算权重大于零。

依据各个所述计算权重、各个所述第二神经网络对应的各个损失度和预设的损失计算策略,进行加权和运算,并将运算结果作为当前的总损失度。

本发明实施例提供的方法中,可根据预设的损失计算策略,和每个第二神经网络对应的计算权重,对各个第二神经网络的各个损失度进行加权和运算,将运算结果作为总损失度。具体的,可以将各个第二神经网络对应的第一损失度按照各个第二神经网络对应的计算权重,加权相加,而将所有第二神经网络对应的所有第二损失度直接相加,也就是每个第二损失度的权重均为一,最终将这两个和运算结果相加,得到总损失度。

例如参照图4所示结构,可按照下列公式计算总损失度:

Loss=λ*lossA+(1-λ)*lossB+C

其中,Loss表示当前的总损失度,lossA表示第二神经网络A对应的第一损失度,lossB表示第二神经网络B对应的第一损失度,λ表示第二神经网络A当前对应的计算权重,“1-λ”则为第二神经网络B当前的计算权重,C表示所有第二损失度的和,也就是第二神经网络A对应的各个第二损失度以及第二神经网络B对应的各个第二损失度的总和,在以KL散度表征第二损失度的情况下,则为所有第二神经网络的所有子结构的输出张量与其目标子结构的输出张量的KL散度的总和。

需要说明的是,在第二神经网络的个数大于两个的情况下,关于权重的设置,原理等同于上述计算公式,将结构复杂度最低的第二神经网络对应的计算权重设置为(1-λ),而其他每个第二神经网络对应的计算权重均设置为[λ/(n-1)],n为第二神经网络的个数。

基于本发明实施例提供的方法,采用加权求和的方式计算当前的总损失度,有利于根据实际的训练需求确定各个第二神经网络的比重,便于关注重点第二神经网络的训练效果。

进一步的,在图1所示方法的基础上,本发明实施例提供了另一种神经网络的压缩方法,在本发明实施例提供的方法中,还包括:

若所述总损失度未收敛,则判断所述总损失度是否小于第一预设阈值;

本发明实施例提供的方法中,可以预先设定阈值,在当前训练周期的总损失度未收敛的情况下,将当前的总损失度与该预设阈值进行比较。该预设阈值可以为一个相对较小的数值。

若所述总损失度小于所述第一预设阈值,则依据预设的权重调整策略,更新各个所述第二神经网络对应的计算权重。

本发明实施例提供的方法中,若经判断当前的总损失度小于该阈值时,可根据预设的权重调整策略,调整各个第二神经网络对应的计算权重,以在下一个训练周期中,以调整后的权重计算总损失度。例如在上述实施例所提出的公式的基础上,以第二神经网络A的当前计算权重的平方对其计算权重进行更新,也就是令λ*=λ

基于本发明实施例提供的方法,当总损失度小于预设的范围时,可根据实际需求调整各个第二神经网络对应的权重,关注重点神经网络的训练状况。有利于在达到一定精度的情况下,将监督重点转移至其中模型结构最小的神经网络上,寻求精度与结构复杂度的平衡,获得精度高且结构小的神经网络。

为了更好地说明本发明实施例提供的方法,在图1所示方法的基础上,本发明实施例提供了又一种神经网络的压缩方法,其中,步骤S107所提及的判断所述总损失度是否收敛的过程,包括:

获取目标总损失度,所述目标总损失度为上一个训练周期中确定的总损失度;

本发明实施例提供的方法中,在每个训练周期中对总损失度进行记录。在当前的训练周期中,可获取上一个训练周期中所记录的总损失度。

确定当前的总损失度相对于所述目标总损失度的偏差,并判断所述偏差是否小于第二预设阈值;

本发明实施例提供的方法中,根据实际的训练需求预设阈值,当训练过程中的总损失度变化处于该阈值范围内,则视其趋于稳定。将当前的总损失度与上一个训练周期的总损失进行比较,计算两者之间的偏差,也就是两者之间的差异,将该偏差值与预设阈值进行大小比较。

若所述偏差小于所述第二预设阈值,则确定当前的总损失度已收敛。

本发明实施例提供的方法中,若当前的总损失度与目标总损失度之间的偏差小于该预设阈值,则确定当前的总损失度已收敛,也就是相邻训练周期的总损失度的变化小于预设范围,总损失度的变化已趋于稳定。

基于本发明实施例提供的方法,以相邻的两个训练周期的总损失度之间的差异,确定总损失度的变化趋势,较为方便快捷,有利于提高训练效率。

与图1所示的神经网络的压缩方法相对应的,本发明实施例还提供了一种神经网络的压缩装置,用于对图1中所示方法的具体实现,其结构示意图如图5所示,包括:

第一确定单元401,用于确定已训练完成的第一神经网络,及所述第一神经网络对应的各个预构建的第二神经网络,每个所述第二神经网络的结构复杂度小于所述第一神经网络的结构复杂度;

训练单元402,用于按照预设的训练周期,分别对每个所述第二神经网络进行训练,以使每个所述第二神经网络的输出结果接近所述第一神经网络的输出结果;

输入单元403,用于在进入当前的训练周期时,将样本数据分别输入各个目标神经网络,所述各个目标神经网络包括所述第一神经网络和各个所述第二神经网络,每个所述目标神经网络由多个子结构串联构成;

获取单元404,用于获取当前每个所述目标神经网络的输出张量,以及每个所述目标神经网络中每个子结构的输出张量;

第二确定单元405,用于依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度;每个所述第二神经网络对应的各个损失度表征,所述第二神经网络对应的输出结果与所述第一神经网络的输出结果的相似程度;

第三确定单元406,用于依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度;

第一判断单元407,用于判断所述总损失度是否收敛,若所述总损失度未收敛,则调整当前各个第二神经网络的模型参数,并进入下一个训练周期;

第四确定单元408,用于若所述总损失度已收敛,则在当前的各个第二神经网络中确定目标第二神经网络,将所述目标第二神经网络作为所述第一神经网络对应的压缩神经网络。

基于本发明实施例提供的装置,通过已训练完成的第一神经网络监督各个结构复杂度相对较低的第二神经网络进行训练,在训练过程中,结合各个神经网络输出张量和各个子结构的输出张量,确定每个第二神经网络的各个损失度,继而确定总损失度,通过判断总损失度是否收敛确定是否继续训练过程,在总损失度已收敛时,在当前的各个第二神经网络中确定目标第二神经网络,将其作为第一神经网络对应的压缩神经网络。应用本发明实施例提供的装置,在训练过程中结合各个神经网络的最终输出和各个中间输出进行训练的监督,能够有效全面地监督各个第二神经网络的学习效果是否接近第一神经网络,使得完成训练的各个第二神经网络能够有效掌握第一神经网络的学习能力,从中选择神经网络作为压缩神经网络,可有效提高第一神经网络对应的压缩神经网络的精度。其次,可同时训练多个神经网络,可根据需求选择最适合应用场景的神经网络,应用十分灵活且压缩训练效率高,训练成本较低。

在上述装置的基础上,本发明实施例提供的装置中,所述第二确定单元405,包括:

第一确定子单元,用于确定每个所述第二神经网络对应的第一损失度,每个所述第二神经网络对应的第一损失度为,所述第二神经网络的输出张量与所述第一神经网络的输出张量之间的欧式距离;

第二确定子单元,用于针对每个所述第二神经网络,在各个所述目标神经网络中,确定所述第二神经网络对应的第三神经网络;

第三确定子单元,用于依据所述第二神经网络的各个子结构的输出张量,以及所述第三神经网络的各个子结构的输出张量,确定所述第二神经网络的每个所述子结构对应的损失度,并将每个所述子结构对应的损失度作为所述第二神经网络对应的第二损失度。

在上述装置的基础上,本发明实施例提供的装置中,所述第一神经网络的子结构个数大于每个所述第二神经网络的子结构个数,各个所述第二神经网络的子结构个数依次递减,所述第二确定子单元,包括:

第四确定子单元,用于将所述第一神经网络确定为首个第二神经网络所对应的第三神经网络;

第五确定子单元,用于确定目标网络集合,所述目标网络结合中包括除首个第二神经网络外的各个第二神经网络;

第六确定子单元,用于确定所述目标网络集合中每个第二神经网络对应的第四神经网络,所述第二神经网络对应的第四神经网络为所述第二神经网络的前一个第二神经网络;

第七确定子单元,用于将每个所述第四神经网络确定为其对应的第二神经网络所对应的第三神经网络。

在上述装置的基础上,本发明实施例提供的装置中,所述第三确定子单元,包括:

第八确定子单元,用于在所述第三神经网络对应的各个子结构中,确定所述第二神经网络的每个子结构对应的目标子结构;

第九确定子单元,用于确定所述第二神经网络的每个子结构对应的第三输出张量和第四输出张量,每个所述子结构对应的所述第三输出张量为所述子结构的输出张量,每个所述子结构对应的所述第四输出张量为,所述子结构对应的目标子结构的输出张量;

计算子单元,用于针对所述第二神经网络的每个所述子结构,基于其对应的所述第三输出张量和所述第四输出张量计算KL散度,并将所述KL散度作为所述子结构对应的损失度。

在上述装置的基础上,本发明实施例提供的装置中,所述第三确定单元406,包括:

第十确定子单元,用于确定每个所述第二神经网络当前对应的计算权重;

运算子单元,用于依据各个所述计算权重、各个所述第二神经网络对应的各个损失度和预设的损失计算策略,进行加权和运算,并将运算结果作为当前的总损失度。

在上述装置的基础上,本发明实施例提供的装置中,还包括:

第二判断单元,用于若所述总损失度未收敛,则判断所述总损失度是否小于第一预设阈值;

更新单元,用于若所述总损失度小于所述第一预设阈值,则依据预设的权重调整策略,更新各个所述第二神经网络对应的计算权重。

在上述装置的基础上,本发明实施例提供的装置中,所述第一判断单元407,包括:

获取子单元,用于获取目标总损失度,所述目标总损失度为上一个训练周期中确定的总损失度;

判断子单元,用于确定当前的总损失度相对于所述目标总损失度的偏差,并判断所述偏差是否小于第二预设阈值;

第十一确定子单元,用于若所述偏差小于所述第二预设阈值,则确定当前的总损失度已收敛。

本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的神经网络的压缩方法。

本发明实施例还提供了一种电子设备,其结构示意图如图6所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:

确定已训练完成的第一神经网络,及所述第一神经网络对应的各个预构建的第二神经网络,每个所述第二神经网络的结构复杂度小于所述第一神经网络的结构复杂度;

按照预设的训练周期,分别对每个所述第二神经网络进行训练,以使每个所述第二神经网络的输出结果接近所述第一神经网络的输出结果;

在进入当前的训练周期时,将样本数据分别输入各个目标神经网络,所述各个目标神经网络包括所述第一神经网络和各个所述第二神经网络,每个所述目标神经网络由多个子结构串联构成;

获取当前每个所述目标神经网络的输出张量,以及每个所述目标神经网络中每个子结构的输出张量;

依据每个所述目标神经网络的输出张量及其各个子结构的输出张量,确定每个所述第二神经网络对应的各个损失度;每个所述第二神经网络对应的各个损失度表征,所述第二神经网络对应的输出结果与所述第一神经网络的输出结果的相似程度;

依据各个所述第二神经网络对应的各个损失度,确定当前的总损失度;

判断所述总损失度是否收敛,若所述总损失度未收敛,则调整当前各个第二神经网络的模型参数,并进入下一个训练周期;

若所述总损失度已收敛,则在当前的各个第二神经网络中确定目标第二神经网络,将所述目标第二神经网络作为所述第一神经网络对应的压缩神经网络。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 深度神经网络模型压缩方法及装置、电子设备、存储介质
  • 神经网络压缩方法、装置、电子设备及存储介质
技术分类

06120113115688