神经网络的剪枝方法、装置、设备及存储介质与流程

文档序号:23157889发布日期:2020-12-04 13:52阅读:170来源:国知局
神经网络的剪枝方法、装置、设备及存储介质与流程

本申请实施例涉及人工智能的深度学习技术领域,特别涉及一种神经网络的剪枝方法、装置、设备及存储介质。



背景技术:

人工智能(artificialintelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。

人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。本申请主要涉及深度学习中的深度神经网络(deepneuralnetworks,dnns)。

随着深度神经网络的研究范围和研究深度不断拓展,在诸多领域(如语音识别、机器翻译、辅助医疗、自动驾驶等)中,深度神经网络在预测准确性上已经表现出相对于传统方法的绝对优势。

深度神经网络之所以能够达到较高的预测准确性,是因为深度神经网络具备高层信息抽取和多层次表达的能力。通常情况下,深度神经网络的深度与其表达能力呈现一定的相关性,学习深度越深,网络训练效果越好,预测准确性越高。然而,从另一方面来讲,学习深度越深,网络参数也就越多,进而,深度神经网络需要的存储空间也就越大。基于此,诸多深度神经网络模型的压缩技术应运而生,这些技术中包括网络剪枝。网络剪枝是指确保较小性能损失的前提下,将复杂神经网络模型中多余的结构信息或参数信息进行删除以达到模型压缩的目的。目前主流的网络剪枝大多依据神经元的重要性,通过提出一种判断神经元是否重要的度量标准,进而按照该度量标准判断各个神经元是否重要,以将不重要的神经元去除。相关技术中,判断神经元是否重要的度量标准主要是神经元的权重,若某一神经元的权重接近于0,则确定该神经元不重要,进而将该神经元去除。

相关技术中以神经元的权重作为度量标准来进行网络剪枝,主要依据以下两个假设:一是范数的标准差足够大,二是最小的范数接近于0。然而,上述两个假设在实际的深度神经网络中并不完全成立,因而相关技术对于神经元是否重要的判断并不完全准确,极可能出现将重要的神经元去除的情况,深度神经网络的预测准确性也因此受到较大影响。



技术实现要素:

本申请实施例提供了一种神经网络的剪枝方法、装置、设备及存储介质,可用于准确地判断该神经元的重要性,避免去除重要的神经元导致对深度神经网络的预测准确性造成较大的影响,确保了深度神经网络在网络剪枝过程中的稳定性。所述技术方案如下:

一方面,本申请实施例提供了一种神经网络的剪枝方法,所述方法包括:

获取已训练完成的神经网络;

根据所述已训练完成的神经网络确定基神经元,所述基神经元用于重建所述已训练完成的神经网络中的神经元;

根据所述基神经元,确定所述已训练完成的神经网络中的冗余神经元,所述冗余神经元是指所述已训练完成的神经网络中能够通过所述基神经元组合表示的神经元;

去除所述已训练完成的神经网络中的所述冗余神经元,得到剪枝后的神经网络。

另一方面,本申请实施例提供了一种神经网络的剪枝装置,所述装置包括:

神经网络获取模块,用于获取已训练完成的神经网络;

基神经元确定模块,用于根据所述已训练完成的神经网络确定基神经元,所述基神经元用于重建所述已训练完成的神经网络中的神经元;

冗余神经元确定模块,用于根据所述基神经元,确定所述已训练完成的神经网络中的冗余神经元,所述冗余神经元是指所述已训练完成的神经网络中能够通过所述基神经元组合表示的神经元;

冗余神经元去除模块,用于去除所述已训练完成的神经网络中的所述冗余神经元,得到剪枝后的神经网络。

还一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述神经网络的剪枝方法。

还一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述神经网络的剪枝方法。

还一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如上述神经网络的剪枝方法。

本申请实施例提供的技术方案可以带来如下有益效果:

通过根据深度神经网络确定基神经元,然后将深度神经网络中能够被基神经元组合表示的神经元确定为冗余神经元,并去除该冗余神经元,从而实现了对深度神经网络进行网络剪枝,去除深度神经网络中冗余的结构信息的目的。并且,由于本申请实施例中,基神经元用于重建深度神经网络中的神经元,因而基神经元能够较好地代表深度神经网络的网络结构,根据基神经元来确定深度神经网络中某一神经元是否为冗余神经元,可以准确地判断该神经元的重要性,避免去除重要的神经元。由于去除的冗余神经元是根据基神经元确定出的不重要的神经元,虽然去除这些神经元,但这些神经元的输出对深度神经网络影响不大,因而不会对深度神经网络的预测准确性造成较大的影响,确保了深度神经网络在网络剪枝过程中的稳定性。

附图说明

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

图1是本申请一个实施例提供的实施环境的示意图;

图2是本申请一个实施例提供的神经网络剪枝方法的流程图;

图3是本申请一个实施例提供的字典学习的示意图;

图4是本申请一个实施例提供的归一化处理的示意图;

图5是本申请一个实施例提供的重构神经元的示意图;

图6是本申请另一个实施例提供的神经网络剪枝方法的流程图;

图7是本申请一个实施例提供的神经网络剪枝装置的框图;

图8是本申请另一个实施例提供的神经网络剪枝装置的框图;

图9是本申请一个实施例提供的计算机设备的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

请参考图1,其示出了本申请一个实施例提供的实施环境的示意图。该实施环境可以包括:训练设备10和使用设备20。

训练设备10和使用设备20均为计算机设备。可选地,计算机设备为终端设备,如手机、平板电脑、游戏主机、电子书阅读器、多媒体播放设备、可穿戴设备、pc(personalcomputer,个人计算机)等电子设备;或者,计算机设备为服务器。可选地,在计算机设备为服务器的情况下,计算机设备可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。可选地,训练设备10和使用设备20均为终端设备;或者,训练设备10和使用设备20均为服务器;或者训练设备10为终端设备、使用设备20为服务器;或者,训练设备10为服务器、使用设备20为终端设备,本申请实施例对此不作限定。

训练设备10是指具备深度神经网络训练和学习能力的计算机设备。可选地,训练设备10具备深度神经网络获取能力,其可以通过网络30从其它设备处获取深度神经网络,并按照应用需求对其进行训练和学习,例如,训练设备10通过网络30从其它设备处获取卷积神经网络,然后按照一系列训练样本对其训练,以使得该卷积神经网络具备图片识别能力;或者,训练设备10具备深度神经网络构建能力,其可以按照应用需求自行构建深度神经网络,然后对其进行训练和学习,例如,训练设备10为了实现图片识别功能,自行构建卷积神经网络,然后通过一系列训练样本对该卷积神经网络进行训练和学习。

使用设备20是指具备深度神经网络使用需求的计算机设备,如使用设备20中安装运行的客户端22具备深度神经网络的使用需求。可选地,使用设备20按照应用需求,并通过网络30从其它设备处获取深度神经网络,例如,使用设备20具备图片识别需求,其可以通过网络30从其它设备处获取完成训练和学习的图片识别类深度神经网络(如卷积神经网络),并使用该深度神经网络进行图片识别。

在一个示例中,如图1所示,训练设备10构建深度神经网络,并对该深度神经网络进行训练和学习,使用设备20中安装运行的客户端22可以通过网络30从训练设备10处获取完成训练和学习的深度神经网络,并使用该深度神经网络。可选地,该网络30为有线网络,或者无线网络。

需要说明的一点是,本申请实施例中,训练设备10和使用设备20可以为相同的设备,也即,同一计算机设备可以同时具备深度神经网络的训练和学习能力,以及深度神经网络的使用需求。图1仅是为了便于表述,将训练设备10和使用设备20以不同的计算机设备来表示,应理解,这并不构成对本申请技术方案的限定。

深度神经网络相对于传统方法,能够达到较高的预测准确性,这是因为深度神经网络具备高层信息抽取和多层次表达的能力。通常情况下,深度神经网络的深度与其表达能力呈现一定的相关性,学习深度越深,网络训练效果越好,预测准确性越高。然而,从另一方面来讲,学习深度越深,网络参数也就越多,进而,深度神经网络需要的存储空间也就越大。为了减轻计算机设备的存储压力和计算开销,就需要使用更加轻量的深度神经网络来满足应用需求。在一个示例中,轻量化的深度神经网络通过以下至少一种方式获取:

神经网络架构搜索(neuralarchitecturesearch,nas):根据实际的应用需求,尝试直接搜索一个高效的、轻量化的深度神经网络;

网络量化(quantization):将深度神经网络的参数从浮点数转化为更低精度的数据存储和计算形式,并维持接近的处理效果,从而提高计算速度;

网络剪枝:确保较小性能损失的前提下,将复杂神经网络模型中多余的结构信息或参数信息进行删除,以降低计算开销。目前主流的网络剪枝大多依据神经元的重要性,通过提出一种判断神经元是否重要的度量标准,进而按照该度量标准判断各个神经元是否重要,以将不重要的神经元去除。示例性地,判断神经元是否重要的度量标准为神经元的权重,若某一神经元的权重接近于0,则确定该神经元不重要,进而将该神经元去除。

然而,并不是任何情况下,都直接存在与应用需求贴合的深度神经网络,因而神经网络架构搜索的方式受限于现有深度神经网络,某些情况下,并不能直接搜索到轻量化的深度神经网络;另外,通过网络量化的方式达到提高计算速度的效果较为有限,在网络参数较多的情况下,网络量化并不能达到轻量化的需求;此外,以神经元的权重作为度量标准来进行网络剪枝,主要依据于以下两个假设:一是范数的标准差足够大,二是最小的范数接近于0,然而,上述两个假设在实际的深度神经网络中并不完全成立,因而网络剪枝对于神经元是否重要的判断并不完全准确,极可能出现将重要的神经元去除的情况,深度神经网络的预测准确性也因此受到较大影响。

基于此,本申请实施例提供了一种基于字典学习的网络剪枝方法,可用于获取更加轻量化的深度神经网络。下面将结合几个示例对本申请的技术方案进行介绍说明。

请参考图2,其示出了本申请一个实施例提供的神经网络的剪枝方法的流程图。该方法可应用于上述计算机设备中,如应用于图1所示实施例环境中的训练设备10或使用设备20中。该方法可以包括以下几个步骤(110~140):

步骤110,获取已训练完成的神经网络。

已训练完成的神经网络是指完成训练和学习过程的深度神经网络,由上述实施例的介绍说明可知,这些完成训练和学习过程的深度神经网络可能参数较多、结构较为复杂等,需要占用计算机设备较多的计算资源和存储资源,因而需要精简网络结构和网络参数,这就需要计算机设备获取这些深度神经网络并对其进行一系列的处理。

本申请实施例对计算机设备获取已训练完成的神经网络的方式不作限定,可选地,已训练完成的神经网络由计算机设备从其它设备处拉取;或者,已训练完成的神经网络位于计算机设备的本地存储空间中,计算机设备直接从本地存储空间中拉取已训练完成的神经网络即可。例如,该已训练完成的神经网络由该计算机设备训练和学习,在完成训练和学习过程后,计算机设备直接将该已训练完成的神经网络存储在本地存储空间中;又例如,该已训练完成的神经网络由计算机设备从其它设备处拉取并存储在本地存储空间中,计算机设备可以从训练和学习该已训练完成的神经网络的设备中拉取至少一个完成训练的深度神经网络,然后将其存储在本地存储空间中,以便于后续对这些深度神经网络进行处理。

步骤120,根据已训练完成的神经网络确定基神经元,基神经元用于重建已训练完成的神经网络中的神经元。

已训练完成的神经网络中包括至少一个神经元,基神经元即用于重建该至少一个神经元,也即,已训练完成的神经网络中各个神经元可以通过基神经元的组合来表示。可选地,基神经元的数量为一个或多个。可选地,已训练完成的神经网络为多层的网络结构,每一层网络中均包括至少一个神经元,本申请实施例针对已训练完成的神经网络中每一层网络,均确定有对应的基神经元,进而某一层网络中各个神经元可以使用该层网络对应的基神经元的组合来表示。

本申请实施例中,基神经元可以是已训练完成的神经网络中的神经元,在深度神经网络中,由于位于网络同一层的神经元共享输入,因而,同一层的某些神经元可以被该层的其余神经元的组合来表示,该其余神经元即可称为基神经元;或者,基神经元也可以不是已训练完成的神经网络中的神经元,而是通过训练学习等得到的新的神经元,本申请实施例对此不作限定。有关基神经元的确定过程,请参见下述实施例,此处不多赘述。

步骤130,根据基神经元,确定已训练完成的神经网络中的冗余神经元,冗余神经元是指已训练完成的神经网络中能够通过基神经元组合表示的神经元。

通过基神经元可以重构已训练完成的神经网络中的神经元,也即,计算机设备可以组合基神经元来表示已训练完成的神经网络中的神经元。其中,已训练完成的神经网络中的某些神经元可以通过基神经元的组合较好地重构,这部分神经元可以通过基神经元组合表示;而某些神经元不可以通过基神经元的组合较好地重构,这部分神经元与基神经元组合之间并不近似,进而不可以通过基神经元组合来表示。本申请实施例中,将已训练完成的神经网络中能够通过基神经元组合表示的神经元称为冗余神经元。根据上述介绍说明,冗余神经元包括:完全等于基神经元组合的神经元,以及近似等于基神经元组合的神经元(如与基神经元组合之间的误差小于误差阈值)。有关冗余神经元的确定过程,请参见下述方法实施例,此处不多赘述。

步骤140,去除已训练完成的神经网络中的冗余神经元,得到剪枝后的神经网络。

计算机设备在确定了冗余神经元后,可以去除冗余神经元,以实现对已训练完成的神经网络的网络剪枝,得到剪枝后的神经网络。由于冗余神经元是能够被基神经元组合表示的神经元,其既可以完全等于基神经元的组合,也可以近似等于基神经元的组合,例如与基神经元的组合之间的误差小于误差阈值,因此,去除冗余神经元不可避免地会对深度神经网络的处理效果造成影响。为了降低网络剪枝对深度神经网络的影响,在一个示例中,上述步骤140之后还包括:确定剪枝后的神经网络的预测误差值;根据预测误差值,调节剪枝后的神经网络的参数。也即,在进行网络剪枝之后,计算机设备对剪枝后的神经网络的参数进行调节,以确保深度神经网络的预测误差值收敛。由于冗余神经元对深度神经网络的处理效果的影响较小,因此,计算机设备对剪枝后的神经网络微调即可确保深度神经网络恢复至网络剪枝前的处理效果。

去除冗余神经元虽然可以在一定程度上降低深度神经网络需要占用的计算资源和存储资源,但是某些情况下距离理想的效果还是存在偏差,例如,在冗余神经元的数量较少的情况下,去除冗余神经元对深度神经网络需要占用的计算资源和存储资源带来的影响也是较为微弱的,为了达到较好的冗余去除效果,较大程度上降低深度神经网络需要占用的计算资源和存储资源,在一个示例中,上述步骤140之后还包括:获取剪枝后的神经网络的表现参数;确定表现参数是否满足第二条件;在表现参数满足第二条件的情况下,输出剪枝后的神经网络;在表现参数不满足第二条件的情况下,从根据已训练完成的神经网络确定基神经元的步骤再次开始执行,再次开始执行时依据的已训练完成的神经网络为剪枝后的神经网络。

其中,表现参数用于指示剪枝后的神经网络的复杂程度。本申请实施例对表现参数的具体内容不作限定,可选地,表现参数包括以下至少一项:剪枝后的神经网络中的神经元的数量、剪枝后的神经网络需要占用的计算资源、剪枝后的神经网络需要占用的存储资源等。计算机设备获取表现参数后,确定该表现参数是否满足第二条件,在表现参数满足第二条件的情况下,确定剪枝后的神经网络达到较好的去冗余效果,并输出剪枝后的神经网络;而在表现参数不满足第二条件的情况下,确定剪枝后的神经网络没有达到较好的去冗余效果,需要进一步对剪枝后的神经网络进行网络剪枝,也即,计算机设备将剪枝后的神经网络确定为已训练完成的神经网络,然后从根据已训练完成的神经网络确定基神经元的步骤再次开始执行。

本申请实施例对第二条件的具体内容不作限定,可选地,针对表现参数的不同,设置有不同的第二条件。可选地,第二条件为计算机设备预设的。例如,在表现参数包括剪枝后的神经网络中神经元的数量的情况下,第二条件为数量阈值,若剪枝后的神经网络中的神经元小于该数量阈值,则确定表现参数满足第二条件。又例如,在表现参数包括剪枝后的神经网络需要占用的计算资源的情况下,第二条件为计算资源门限值,若剪枝后的神经网络需要占用的计算资源小于该计算资源门限值,则确定表现参数满足第二条件。

综上所述,本申请实施例提供的技术方案,通过根据深度神经网络确定基神经元,然后将深度神经网络中能够被基神经元组合表示的神经元确定为冗余神经元,并去除该冗余神经元,从而实现了对深度神经网络进行网络剪枝,去除深度神经网络中冗余的结构信息的目的。并且,由于本申请实施例中,基神经元用于重建深度神经网络中的神经元,因而基神经元能够较好地代表深度神经网络的网络结构,根据基神经元来确定深度神经网络中某一神经元是否为冗余神经元,可以准确地判断该神经元的重要性,避免去除重要的神经元。由于去除的冗余神经元是根据基神经元确定出的不重要的神经元,虽然去除这些神经元,但这些神经元的输出对深度神经网络影响不大,因而不会对深度神经网络的预测准确性造成较大的影响,确保了深度神经网络在网络剪枝过程中的稳定性。

另外,由于冗余神经元仅为基神经元的组合,其并不一定完全等于基神经元组合,而有可能仅是近似等于基神经元组合,因此,去除冗余神经元可能会对深度神经网络的预测准确性造成一定的影响,为了恢复深度神经网络的预测准确性,本申请实施例通过在深度神经网络进行网络剪枝实现冗余去除处理之后,调节深度神经网络的参数,以使得深度神经网络的预测误差收敛,恢复至较好的预测效果。

此外,本申请实施例通过在深度神经网络进行网络剪枝实现冗余去除处理之后,进一步确定深度神经网络的复杂程度,在深度神经网络的复杂程度满足一定的条件时,输出剪枝处理后的深度神经网络;在深度神经网络的复杂程度不满足该条件时,对深度神经网络进一步进行冗余去除处理,直到深度神经网络的复杂程度满足该条件,从而确保对深度神经网络的冗余去除处理达到期望的效果,充分降低深度神经网络需要占用的计算资源和存储资源。

在一个示例中,上述步骤120包括:对已训练完成的神经网络中的神经元进行字典学习,得到神经元字典,神经元字典中包括至少一个基神经元。

通过分析已训练完成的神经网络中的神经元间的相关性,可以获取基神经元,在基神经元属于已训练完成的神经网络中的神经元时,可以称基神经元为已训练完成的神经网络中最具代表性的神经元。本申请实施例中,计算机设备通过字典学习的方法来分析神经元间的相关性。计算机设备通过字典学习,可以得到一个神经元字典,该神经元字典中包括至少一个基,或称为该神经元字典中包括至少一个基神经元。本申请实施例对字典学习的方法不作限定,可选地,字典学习包括以下至少一种学习方法:原型分析(archetypalanalysis)、分离原型分析(decoupledarchetypalanalysis)、子空间聚类等。

由上述实施例的介绍说明可知,已训练完成的神经网络可以包括多层网络,每一层网络中均包括至少一个神经元,本申请实施例针对多层网络的深度神经网络,提出针对每一层网络,均可以确定该层网络对应的基神经元,以组合表示该层网络中的神经元。基于此,计算机设备通过字典学习的神经元字典中即包括至少一层网络对应的基神经元。其中,每一层网络对应的基神经元可以为1个,也可以为多个。

计算机设备在进行字典学习时,可以先根据已训练完成的神经网络中的神经元,随机确定基神经元,即初始的基神经元,然后通过施加约束条件来调节基神经元的参数,以消除一些可能引发歧义的基神经元,或消除一些后续重建已训练完成的神经网络中的神经元时计算量较大的基神经元等,从而计算机设备最终确定完成学习的神经元字典,该完成学习的神经元字典中包括的基神经元即为计算机设备确定的最优的基神经元。下面对本申请实施例提供的几种约束条件进行介绍说明。

示例性地,已训练完成的神经网络包括n个神经元,n为正整数;上述对已训练完成的神经网络中的神经元进行字典学习,得到神经元字典,包括:确定初始的神经元字典,初始的神经元字典中包括至少一个初始的基神经元;根据初始的神经元字典和已训练完成的神经网络中的神经元,确定初始的第一系数组集合,第一系数组集合包括n个系数组,n个系数组中的第i个系数组用于结合神经元字典组合表示n个神经元中的第i个神经元,i为小于或等于n的正整数;对神经元字典和第一系数组集合进行参数调节处理;在第一系数组集合中的各个系数组内系数之和等于1,且第一系数组集合中的系数大于或等于0的情况下,得到完成学习的神经元字典。

在基神经元组合表示已训练完成的神经网络中的神经元时,需要结合一定的系数,例如,在基神经元为多个的情况下,针对已训练完成的神经网络中的某一神经元,可以通过各个基神经元与其对应的系数相乘后求和得到。初始的基神经元也可以组合表示已训练完成的神经网络中的神经元,则根据初始的神经元字典和已训练完成的神经网络中的神经元可以确定初始的第一系数组集合。第一系数组集合中包括至少一个系数组,由于每一系数组都是用于结合神经元字典来组合表示已训练完成的神经网络中一个的神经元,因此,第一系数组集合中包括的系数组的数量与已训练完成的神经网络中包括的神经元的数量相同,在已训练完成的神经网络中包括n个神经元的情况下,第一系数组集合中也包括n个系数组。可选地,第一系数组集合中各个系数组包括的系数的数量,与神经元字典中基神经元的数量相同。例如,假设神经元字典为z,已训练完成的神经网络中的神经元为x,第一系数组集合为b,则可以得到:x=zb。

由于初始的神经元字典是随机确定的,其有多种可能性,也即,初始的神经元字典并不唯一。为了减少神经元字典的可能性,尽可能消除神经元字典在重构已训练完成的神经网络中的神经元时引发的歧义,计算机设备对神经元字典和第一系数组集合进行参数调节,以使得第一系数组集合中各个系数组内的系数之和等于1,且各个系数均大于或等于0。在第一系数组集合满足上述约束条件时,计算机设备得到完成学习的神经元字典,该神经元字典中包括的基神经元即可较好地组合表示已训练完成的神经网络中的神经元。

示例性地,已训练完成的神经网络包括n个神经元,n为正整数;神经元字典包括m个基神经元,m为正整数;上述对已训练完成的神经网络中的神经元进行字典学习,得到神经元字典,包括:确定初始的神经元字典,初始的神经元字典中包括初始的m个基神经元;根据初始的神经元字典和已训练完成的神经网络中的神经元,确定初始的第一系数组集合,第一系数组集合包括n个系数组,n个系数组中的第i个系数组用于结合神经元字典组合表示n个神经元中的第i个神经元,i为小于或等于n的正整数;根据初始的神经元字典和已训练完成的神经网络中的神经元,确定初始的第二系数组集合,第二系数组集合中包括m个系数组,m个系数组中的第k个系数组用于结合n个神经元构建m个基神经元中的第k个基神经元,k为小于或等于m的正整数;对神经元字典、第一系数组集合和第二系数组集合进行参数调节处理;在第一系数组集合中的各个系数组内系数之和以及第二系数组集合中的各个系数组内系数之和均等于1、且第一系数组集合中的系数和第二系数组集合中的系数均大于或等于0的情况下,得到完成学习的神经元字典。

为了进一步消除神经元字典在重构已训练完成的神经网络中的神经元时引发的歧义,计算机设备还可以施加更多的约束条件。本申请实施例中,计算机设备根据初始的神经元字典和已训练完成的神经网络,可以确定第二系数组集合,该第二系数组集合即为已训练完成的神经网络构建初始的神经元字典时的系数。由于第二系数组集合中每一系数组都是用于结合已训练完成的神经网络来构建神经元字典中的一个基神经元,因此,第二系数组集合中包括的系数组的数量与基神经元的数量相同,在神经元字典中包括m个基神经元的情况下,第二系数组集合中也包括m个系数组。可选地,第二系数组集合中各个系数组包括的系数的数量,与已训练完成的神经网络中神经元的数量相同。例如,假设神经元字典为z,已训练完成的神经网络中的神经元为x,第一系数组集合为b,第二系数组集合为a,则可以得到:x=zb=xab。

在确定了第一系数组集合和第二系数组集合之后,计算机设备即可对神经元字典、第一系数组集合和第二系数组集合进行参数调节,以使得第一系数组集合中各个系数组内的系数之和以及第二系数组集合中各个系数组内的系数之和均等于1,且第一系数组集合和第二系数组集合中各个系数均大于或等于0。在第一系数组集合和第二系数组集合满足上述约束条件时,计算机设备得到完成学习的神经元字典,该神经元字典中包括的基神经元即可更好地组合表示已训练完成的神经网络中的神经元。

图3是本申请一个实施例提供的字典学习的示意图。如图3(a)所示,已训练完成的神经网络中包括多个神经元310。如图3(b)所示,计算机设备根据这些神经元310,随机确定初始的神经元字典,该初始的神经元字典中包括多个初始的基神经元320,该基神经元320可以结合第一系数组集合来表示神经元310,针对基神经元320组成的封闭区域内的神经元310,其在第一系数组集合中对应的系数组内系数之和为1;针对基神经元320组成的封闭区域外的神经元310,其在第一系数组集合中对应的系数组内系数之和大于1。因此,计算机设备需要调节第一系数组集合和神经元字典,以使得神经元310全部位于基神经元320组成的封闭区域内或封闭区域的边界。如图3(c)所示,计算机设备通过进行参数调节,使得第一系数组集合中各个系数组内系数之和为1,也即,神经元310全部位于基神经元320组成的封闭区域内,但这种情况下,基神经元320组成的封闭区域可能过大,从而会浪费计算资源,因此,计算机设备设置更多的约束条件。神经元310可以结合第二系数组集合来构建神经元字典,在图3(c)设置的约束条件的基础上,计算机设备可以约束第二系数组集合中各个系数组内系数之和为1。如图3(d)所示,通过对第一系数组集合和第二系数组集合同时施加约束条件,计算机设备可以得到更优的神经元字典,该神经元字典中的基神经元320对应了神经元310的极值点。

由于已训练完成的神经网络中可能存在较多的神经元,这种情况下计算机设备进行字典学习的复杂度可能较高,为了降低学习的复杂度,本申请实施例中,要求已训练完成的神经网络中的神经元位于单位球(unitsphere)上。若已训练完成的神经网络中的某些神经元不满足位于单位球上的要求,则将这些神经元映射到单位球上。也即,上述对已训练完成的神经网络中的神经元进行字典学习,得到神经元字典之前,还包括:对已训练完成的神经网络中的神经元进行归一化处理,得到归一化处理后的神经元,归一化处理后的神经元位于单位球上;其中,归一化处理后的神经元用于进行字典学习得到神经元字典。

本申请实施例对归一化处理的方式不作限定,可选地,归一化处理包括以下至少一种:l1归一化(l1normalization)、l2归一化(l2normalization)、球极平面投影(stereographicprojection)。在一个示例中,为了避免神经元在进行单位球映射时出现数据崩塌(多个神经元被映射到单位球上的同一点)的情况,计算机设备可以采用球极平面投影的方式。

如图4(a)所示,已训练完成的神经网络中的神经元400分布在圆环410上。如图4(b)所示,若直接通过l2归一化的方式来进行归一化处理,则映射后的神经元分布在单位球420中的部分区域430中,其中有些神经元映射到区域430的同一点中,出现数据崩塌的情况。为了避免数据崩塌,如图4(c)所示,采用球极平面投影的方式,假设已训练完成的神经网络中的某一神经元400需要映射到单位球上,则连接该神经元400与单位球的极点422,进而神经元400与极点422的连线与单位球的交点424即为神经元420映射后的点。如图4(d)所示,通过球极平面投影的方式,神经元400均可以一一映射至单位球420上,并且不会出现重叠的情况。然而,考虑到目前深度神经网络批量数据正则化(batchnormalization)的存在,神经元的范数的大小是没有意义的,因此,计算机设备可以直接对神经元进行l2归一化,而不必要进行球极平面投影的方式。

综上所述,本申请实施例提供的技术方案,通过对已训练完成的神经网络进行字典学习得到基神经元,相比于任意确定基神经元,本申请实施例确保了基神经元与已训练完成的神经网络匹配,以使得后续基神经元可以较为准确地重构已训练完成的神经网络中的神经元。并且,本申请实施例在字典学习过程中,对学习的神经元字典施加多种约束,以消除神经元字典的多种可能性,减少神经元字典重构已训练完成的神经网络中的神经元时可能引发的歧义,确保学习到较优的神经元字典。另外,本申请实施例通过对已训练完成的神经网络中的神经元进行归一化处理,以将神经元映射到单位球上,降低了字典学习的复杂度。

在一个示例中,已训练完成的神经网络包括n个神经元,n为正整数;上述步骤130包括:根据基神经元构建n个神经元;确定n个重建误差,n个重建误差中的第t个重建误差是指通过基神经元构建n个神经元中的第t个神经元时的误差,t为小于或等于n的正整数;将n个重建误差中满足第一条件的重建误差对应的神经元,确定为冗余神经元。

已训练完成的神经网络中包括n个神经元,计算机设备可以根据基神经元来重构这n个神经元,也即,计算机设备可以结合一定的系数组合基神经元,以表示已训练完成的神经网络中的神经元。例如,如图5所示,其示出了本申请实施例提供的通过decoupledarchetypalanalysis这一字典学习方法得到的基神经元来重建待处理神经网络中的神经元的示意图,其中,图5(a)是三维空间中重建已训练完成的神经网络中的神经元的示意图,图5(b)是二维空间中重建已训练完成的神经网络中的神经元的示意图。如图5所示,通过decoupledarchetypalanalysis学习得到的基神经元510构成一个凸包,通过基神经元510重构已训练完成的神经网络中的神经元520,得到重构的神经元530,该重构的神经元530为神经元520在基神经元510所构成的凸包上的投影。

由上述实施例的介绍说明可知,计算机设备可以结合第一系数组集合b和基神经元z来重构n个神经元x,重构的n个神经元为zb。针对n个神经元中的每一个神经元,均可以确定该神经元对应的重构误差,也即通过基神经元构建该神经元时的误差,从而计算机设备可以得到n个重建误差。假设重构的n个神经元为zb,已训练完成的神经网络中的神经元为x,则重构误差可以表示为||x–zb||。

计算机设备在确定了n个重建误差后,可以将n个重建误差中满足第一条件的重建误差对应的神经元,确定为冗余神经元。本申请实施例对第一条件的内容不作限定,可选地,第一条件包括较小的s个重建误差,s为小于或等于n的正整数,例如,计算机设备将n个重建误差中较小的s个重建误差对应的神经元确定为冗余神经元;或者,第一条件包括重建误差阈值b,b为正整数,例如,计算机设备将n个重建误差中小于或等于重建误差阈值b的重建误差对应的神经元确定为冗余神经元。本申请实施例对第一条件的确定时机不作限定,可选地,第一条件是计算机设备预设的,或者,第一条件是计算机设备结合已训练完成的神经网络中神经元的数量实时确定的。

示例性地,在第一条件包括较小的s个重建误差的情况下,上述将n个重建误差中满足第一条件的重建误差对应的神经元,确定为冗余神经元,包括:对n个重建误差进行从小至大的排序,得到排序后的重建误差;将排序后的重建误差中前s个重建误差对应的神经元,确定为冗余神经元;或者,对n个重建误差进行从大至小的排序,得到排序后的重建误差;将排序后的重建误差中后s个重建误差对应的神经元,确定为冗余神经元。

可选地,本申请实施例中,计算机设备除了依据重建误差确定冗余神经元之外,也可以依据或结合其余参考因素来确定冗余神经元。示例性地,计算机设备确定n个神经元分别与基神经元之间的距离,得到n个距离;将n个距离中满足第二条件的距离对应的神经元中,重建误差满足第一条件的重建误差对应的神经元,确定为冗余神经元。也即,计算机设备结合重建误差和各个神经元与基神经元之间的距离来确定冗余神经元,在某一神经元与基神经元之间的距离满足第二条件,且对应的重建误差满足第一条件的情况下,才将该神经元确定为冗余神经元。本申请实施例对第二条件的具体内容不作限定,可选地,第二条件包括距离大于距离阈值;或者,第二条件包括较小的a个距离,a为小于或等于n的正整数。

需要说明的一点是,在基神经元属于已训练完成的神经网络中的神经元的情况下,基神经元可以称为已训练完成的神经网络中最具代表性的神经元,其可以较好的表示已训练完成的神经网络的网络结构等,因而,在确定了基神经元之后,也可以不确定冗余神经元,而是从已训练完成的神经网络中除基神经元之外的神经元中随机选择一些神经元去除,由于保留了基神经元,已训练完成的神经网络的网络结构等也被较好的保留,从而去除这些神经元不会对神经网络的处理效果造成较大的影响。

综上所述,本申请实施例提供的技术方案,通过根据基神经元重建已训练完成的神经网络中的神经元时的重建误差来确定冗余神经元,从而提供了一种衡量深度神经网络中的神经元的冗余程度的度量标准,有助于快速有效地确定已训练完成的神经网络中冗余的神经元。并且,本申请实施例中,冗余神经元是指能够被基神经元组合的神经元,也即,冗余神经元的重建误差较小,去除重建误差较小的神经元不会对深度神经网络的网络结构等造成较大的影响,确保了深度神经网络的稳定性。

请参考图6,其示出了本申请一个实施例提供的神经网络的剪枝方法的流程图。该方法可应用于上述计算机设备中,如应用于图1所示实施例环境中的训练设备10或使用设备20中。该方法可以包括以下几个步骤:

步骤610,获取已训练完成的神经网络。本申请实施例中,已训练完成的神经网络是指完成训练和学习过程的深度神经网络。

步骤620,确定已训练完成的神经网络是否大于计算量门限。若已训练完成的神经网络大于计算量门限,执行下述步骤630;若已训练完成的神经网络小于或等于计算量门限,执行下述步骤670。

步骤630,对已训练完成的神经网络中的神经元进行字典学习,得到神经元字典。神经元字典中包括至少一个基神经元。通过分析已训练完成的神经网络中的神经元间的相关性,可以获取基神经元,本申请实施例中,计算机设备通过字典学习的方法来分析神经元间的相关性。

步骤640,根据基神经元,确定已训练完成的神经网络中的冗余神经元。冗余神经元是指已训练完成的神经网络中能够通过基神经元组合表示的神经元。

步骤650,去除已训练完成的神经网络中的冗余神经元,得到剪枝后的神经网络。计算机设备在确定了冗余神经元后,可以去除冗余神经元,以实现对已训练完成的神经网络的网络剪枝,得到剪枝后的神经网络。

步骤660,调节剪枝后的神经网络的参数。在进行网络剪枝之后,对剪枝后的神经网络的参数进行调节,以确保深度神经网络的预测误差值收敛。在步骤660之后,计算机设备再次执行上述步骤620。

步骤670,输出深度神经网络以及网络相关的参数。在上述步骤610获取的已训练完成的神经网络的计算量小于或等于计算量门限的情况下,直接输出已训练完成的神经网络;在上述步骤660通过网络剪枝后得到的剪枝后的神经网络的计算量小于或等于计算量门限的情况下,输出剪枝后的神经网络。

下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。

请参考图7,其示出了本申请一个实施例提供的神经网络剪枝装置的框图。该装置具有实现上述神经网络剪枝方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是计算机设备,也可以设置在计算机设备中。该装置700可以包括:神经网络获取模块710、基神经元确定模块720、冗余神经元确定模块730和冗余神经元去除模块740。

神经网络获取模块710,用于获取已训练完成的神经网络。

基神经元确定模块720,用于根据所述已训练完成的神经网络确定基神经元,所述基神经元用于重建所述已训练完成的神经网络中的神经元。

冗余神经元确定模块730,用于根据所述基神经元,确定所述已训练完成的神经网络中的冗余神经元,所述冗余神经元是指所述已训练完成的神经网络中能够通过所述基神经元组合表示的神经元。

冗余神经元去除模块740,用于去除所述已训练完成的神经网络中的所述冗余神经元,得到剪枝后的神经网络。

在一个示例中,上述基神经元确定模块720,用于:对所述已训练完成的神经网络中的神经元进行字典学习,得到神经元字典,所述神经元字典中包括至少一个所述基神经元。

在一个示例中,所述已训练完成的神经网络包括n个神经元,所述n为正整数;如图8所示,上述基神经元确定模块720,包括:初始化单元721,用于确定初始的神经元字典,所述初始的神经元字典中包括至少一个初始的基神经元;第一集合确定单元723,用于根据所述初始的神经元字典和所述已训练完成的神经网络中的神经元,确定初始的第一系数组集合,所述第一系数组集合包括n个系数组,所述n个系数组中的第i个系数组用于结合所述神经元字典组合表示所述n个神经元中的第i个神经元,所述i为小于或等于所述n的正整数;参数调节单元725,用于对所述神经元字典和所述第一系数组集合进行参数调节处理;字典确定单元727,用于在所述第一系数组集合中的各个系数组内系数之和等于1,且所述第一系数组集合中的系数大于或等于0的情况下,得到完成学习的神经元字典。

在一个示例中,所述已训练完成的神经网络包括n个神经元,所述n为正整数;所述神经元字典包括m个基神经元,所述m为正整数;如图8所示,上述基神经元确定模块720,包括:初始化单元721,用于确定初始的神经元字典,所述初始的神经元字典中包括初始的m个基神经元;第一集合确定单元723,用于根据所述初始的神经元字典和所述已训练完成的神经网络中的神经元,确定初始的第一系数组集合,所述第一系数组集合包括n个系数组,所述n个系数组中的第i个系数组用于结合所述神经元字典组合表示所述n个神经元中的第i个神经元,所述i为小于或等于所述n的正整数;第二集合确定单元729,用于根据所述初始的神经元字典和所述已训练完成的神经网络中的神经元,确定初始的第二系数组集合,所述第二系数组集合中包括m个系数组,所述m个系数组中的第k个系数组用于结合所述n个神经元构建所述m个基神经元中的第k个基神经元,所述k为小于或等于所述m的正整数;参数调节单元725,用于对所述神经元字典、所述第一系数组集合和所述第二系数组集合进行参数调节处理;字典确定单元727,用于在所述第一系数组集合中的各个系数组内系数之和以及所述第二系数组集合中的各个系数组内系数之和均等于1、且所述第一系数组集合中的系数和所述第二系数组集合中的系数均大于或等于0的情况下,得到完成学习的神经元字典。

在一个示例中,如图8所示,所述装置700还包括:归一化模块750,用于对所述已训练完成的神经网络中的神经元进行归一化处理,得到归一化处理后的神经元,所述归一化处理后的神经元位于单位球上;其中,所述归一化处理后的神经元用于进行所述字典学习得到所述神经元字典。

在一个示例中,所述已训练完成的神经网络包括n个神经元,所述n为正整数;如图8所示,上述冗余神经元确定模块730,包括:神经元重构单元732,用于根据所述基神经元构建所述n个神经元;重建误差确定单元734,用于确定n个重建误差,所述n个重建误差中的第t个重建误差是指通过所述基神经元构建所述n个神经元中的第t个神经元时的误差,所述t为小于或等于所述n的正整数;冗余神经元确定单元736,用于将所述n个重建误差中满足第一条件的重建误差对应的神经元,确定为所述冗余神经元。

在一个示例中,如图8所示,所述冗余神经元确定单元736,用于:对所述n个重建误差进行从小至大的排序,得到排序后的重建误差;将所述排序后的重建误差中前s个重建误差对应的神经元,确定为所述冗余神经元,所述s为小于所述n的正整数;或者,对所述n个重建误差进行从大至小的排序,得到排序后的重建误差;将所述排序后的重建误差中后s个重建误差对应的神经元,确定为所述冗余神经元,所述s为小于所述n的正整数。

在一个示例中,如图8所示,所述装置700还包括:预测误差确定模块762,用于确定所述剪枝后的神经网络的预测误差值;网络参数调节模块764,用于根据所述预测误差值,调节所述剪枝后的神经网络的参数。

在一个示例中,如图8所示,所述装置700还包括:参数获取模块772,用于获取所述剪枝后的神经网络的表现参数,所述表现参数用于指示所述剪枝后的神经网络的复杂程度;确定模块774,用于确定所述表现参数是否满足第二条件;网络输出模块776,用于在所述表现参数满足所述第二条件的情况下,输出所述剪枝后的神经网络;所述基神经元确定模块720,用于在所述表现参数不满足所述第二条件的情况下,从根据所述已训练完成的神经网络确定基神经元的步骤再次开始执行,所述再次开始执行时依据的已训练完成的神经网络为所述剪枝后的神经网络。

综上所述,本申请实施例提供的技术方案,通过根据深度神经网络确定基神经元,然后将深度神经网络中能够被基神经元组合表示的神经元确定为冗余神经元,并去除该冗余神经元,从而实现了对深度神经网络进行网络剪枝,去除深度神经网络中冗余的结构信息的目的。并且,由于本申请实施例中,基神经元用于重建深度神经网络中的神经元,因而基神经元能够较好地代表深度神经网络的网络结构,根据基神经元来确定深度神经网络中某一神经元是否为冗余神经元,可以准确地判断该神经元的重要性,避免去除重要的神经元。由于去除的冗余神经元是根据基神经元确定出的不重要的神经元,虽然去除这些神经元,但这些神经元的输出对深度神经网络影响不大,因而不会对深度神经网络的预测准确性造成较大的影响,确保了深度神经网络在网络剪枝过程中的稳定性。

需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

请参考图9,其示出了本申请一个实施例提供的计算机设备的结构框图。该计算机设备可用于执行上述神经网络剪枝方法,可选地,该计算机设备为终端设备;或者,该计算机设备为服务器。具体来讲:

计算机设备900包括中央处理单元(centralprocessingunit,cpu)901、包括随机存取存储器(randomaccessmemory,ram)902和只读存储器(readonlymemory,rom)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。计算机设备900还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o(inputoutputsystem)系统)906,和用于存储操作系统913、应用程序914和其他程序模块915的大容量存储设备907。

基本输入/输出系统906包括有用于显示信息的显示器908和用于用户输入信息的诸如鼠标、键盘之类的输入设备909。其中显示器908和输入设备909都通过连接到系统总线905的输入输出控制器910连接到中央处理单元901。基本输入/输出系统906还可以包括输入输出控制器910以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器910还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备907通过连接到系统总线905的大容量存储控制器(未示出)连接到中央处理单元901。大容量存储设备907及其相关联的计算机可读介质为计算机设备900提供非易失性存储。也就是说,大容量存储设备907可以包括诸如硬盘或者cd-rom(compactdiscread-onlymemory,只读光盘)驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom(erasableprogrammablereadonlymemory,可擦除可编程只读存储器)、eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、闪存或其他固态存储其技术,cd-rom、dvd(digitalvideodisc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器904和大容量存储设备907可以统称为存储器。

根据本申请的各种实施例,计算机设备900还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备900可以通过连接在系统总线905上的网络接口单元911连接到网络912,或者说,也可以使用网络接口单元911来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括计算机程序,该计算机程序存储于存储器中,且经配置以由一个或者一个以上处理器执行,以实现上述神经网络剪枝方法。

在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集在被计算机设备的处理器执行时以实现上述神经网络剪枝方法。

可选地,该计算机可读存储介质可以包括:rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取记忆体)、ssd(solidstatedrives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括reram(resistancerandomaccessmemory,电阻式随机存取记忆体)和dram(dynamicrandomaccessmemory,动态随机存取存储器)。

在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述神经网络剪枝方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。

以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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