Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020133364 - NEURAL NETWORK COMPRESSION METHOD AND APPARATUS

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18  

附图

1   2   3   4   5   6  

说明书

发明名称 : 一种神经网络压缩方法及装置

技术领域

[0001]
本申请涉及神经网络领域,尤其涉及一种神经网络压缩方法及装置。

背景技术

[0002]
随着智能芯片的不断发展,深度学习技术已经越来越多地应用到了人们身边的智能设备之中,比如手机、智能家居设备、可穿戴设备、车载设备等。但是深度学习模型(也即神经网络模型)对于硬件资源的消耗仍然是巨大的,例如存储空间、内存、中央处理器(central processing unit,CPU)/神经网络处理器(network processing unit,NPU)计算资源、电池续航等方面。例如,对于嵌入式设备而言,即使采用了专门用于加速深度学习的NPU,硬件资源也非常有限,难以承载多个模型的业务需求,严重制约了智能设备的性能和用户体验。
[0003]
为了解决上述问题,对深度学习模型的压缩技术应运而生。该类技术可在精度可容许的下降范围内,剔除模型权重参数的大量冗余,大幅缩小模型体积。目前权值稀疏化是常用的压缩技术。具体的,权值稀疏化通过丢弃一部分小权重连接(权值置为0)来实现权值稀疏化,从而剔除冗余和加速运算。权值稀疏化不仅可以通过裁剪掉模型冗余权值来缩小模型体积,更重要的是,通过剔除一部分较小权值,可以剪除模型多余的弱性能分支,并通过后续训练加强性能优越的剩余分支,从而提升模型的最终精度。
[0004]
目前权值稀疏化的运用中,最常用的方法是基于权值阈值将小于阈值的部分权值置零,进行权值稀疏化。然而在实际应用中,权值阈值的配置比较盲目,通常是依赖人为经验设定,并且需要经过试探性地对多个设定值进行反复训练,以选择一个模型精度较好的设定值。
[0005]
显然,上述方法实现模型稀疏化的过程耗时较长,权值阈值容易受人为因素影响,导致模型性能不稳定。也就是说上述方法在实现模型压缩时并不灵活。
[0006]
发明内容
[0007]
本申请实施例提供了一种神经网络压缩方法及装置,用以解决现有技术中模型压缩不灵活的问题。
[0008]
第一方面,本申请提供了一种神经网络压缩方法,根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数;对所述裁剪后的神经网络模型进行多次训练,在第t次训练过程中,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1至q中的任意一个正数,所述q为多次训练的总次数。
[0009]
通过上述方法,可以自适应地调整每次裁剪的权重阈值,也就是说可以灵活进行神经网络压缩,可以避免人为设定权值阈值带来的人为因素的影响,从而可以增强神经网络模型性能稳定性。
[0010]
在一种可能的设计中,根据初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,获取所述初始神经网络模型的所述第i层的初始权值;然后根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差;最后根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[0011]
通过上述方式,可以准确地确定每一层的初始权值阈值,以使对初始神经网络的每一层的权值进行裁剪。
[0012]
在一种可能的设计中,所述第i层的初始权值阈值可以符合以下公式:
[0013]
T i=μ i-λ·σ i
[0014]
其中,T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[0015]
通过上述公式可以准确地确定每一层的初始权值阈值,以使对初始神经网络的每一层的权值进行裁剪。
[0016]
在一种可能的设计中,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,可以符合以下公式:
[0017]
[0018]
其中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[0019]
通过上述方法,可以在每一次训练过程中自适应地得到每一层的权值阈值,从而可以灵活进行神经网络压缩。
[0020]
在一种可能的设计中,根据任一层的权值阈值对所述任一层的权值进行裁剪,具体方法可以为:将所述任一层的权值中小于所述任一层的权值阈值的权值置零,以及将所述任一层的权值中大于或者等于所述任一层的权值阈值的权值保持不变。这样可以成功完成每一层的权值裁剪。
[0021]
第二方面,本申请还提供了一种神经网络压缩装置,该神经网络压缩装置具有实现上述第一方面方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
[0022]
在一个可能的设计中,所述神经网络压缩装置的结构中可以包括权值裁剪单元和训练单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
[0023]
在一个可能的设计中,所述神经网络压缩装置的结构中可以包括处理器和存储器,所述处理器被配置为执行上述提及的方法。所述存储器与所述处理器耦合,其保存所述神经网络压缩装置必要的程序指令和数据。
[0024]
第三方面,本申请还提供了一种计算机存储介质,所述计算机存储介质中存储有计算 机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机执行上述第一方面提及的任一种方法。
[0025]
第四方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提及的任一种方法。
[0026]
第五方面,本申请还提供了一种芯片,所述芯片与存储器耦合,用于读取并执行存储器中存储的程序指令,以实现上述第一方面提及的任一种方法。

附图说明

[0027]
图1为本申请实施例提供的一种神经网络的示意图;
[0028]
图2为本申请实施例提供的一种计算机装置的结构图;
[0029]
图3为本申请实施例提供的一种神经网络压缩方法的流程图;
[0030]
图4为本申请实施例提供的一种神经网络压缩方法的示例的流程图;
[0031]
图5为本申请实施例提供的一种神经网络压缩装置的结构示意图;
[0032]
图6为本申请实施例提供的一种神经网络压缩装置的结构图。

具体实施方式

[0033]
下面将结合附图对本申请作进一步地详细描述。
[0034]
本申请实施例提供一种神经网络压缩方法及装置,用以解决现有技术中模型压缩不灵活的问题。其中,本申请所述方法和装置基于同一发明构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
[0035]
以下,对本申请中的神经网络进行解释说明,以便于本领域技术人员理解:
[0036]
神经网络是模仿动物神经网络行为特征,类似于大脑神经突触连接的结构进行数据处理。神经网络作为一种数学运算模型,由大量的节点(或称为神经元)之间相互连接构成。神经网络由输入层、隐藏层、输出层组成,例如图1所示。其中,输入层为神经网络的输入数据;输出层为神经网络的输出数据;而隐藏层由输入层和输出层之间众多节点连接组成的,用于对输入数据进行运算处理。其中,隐藏层可以由一层或多层构成。神经网络中隐藏层的层数、节点数与该神经网络实际解决的问题的复杂程度、输入层的节点以及输出层的节点的个数有着直接关系。
[0037]
在本申请实施例中,执行神经网络压缩方法的可以但不限于是处理器,其中,当神经网络压缩装置为处理器时,所述处理器可以为计算机装置中的处理器,也可以为其他设备(例如芯片系统)中的处理器,还可以为单独存在的处理器。在本申请实施例中,以计算机装置中的处理器执行神经网络压缩方法为例进行说明。
[0038]
为了更加清晰地描述本申请实施例的技术方案,下面结合附图,对本申请实施例提供的神经网络压缩方法及装置进行详细说明。
[0039]
图2示出了本申请实施例提供的神经网络压缩方法适用的一种可能的计算机装置的结构图。参阅图2所示,所述计算机装置中包括:处理器210、存储器220、通信模块230、输入单元240、显示单元250、电源260等部件。本领域技术人员可以理解,图2中示出的计算机装置的结构并不构成对计算机装置的限定,本申请实施例提供的计算机装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0040]
下面结合图2对计算机装置的各个构成部件进行具体的介绍:
[0041]
所述通信模块230可以通过无线连接或物理连接的方式连接其他设备,实现计算机装置的数据发送和接收。可选的,所述通信模块230可以包含射频(radio frequency,RF)电路、无线保真(wireless fidelity,WiFi)模块、通信接口,蓝牙模块等任一项或组合,本申请实施例对此不作限定。
[0042]
所述存储器220可用于存储程序指令和数据。所述处理器210通过运行存储在所述存储器220的程序指令,从而执行计算机装置的各种功能应用以及数据处理。其中,所述程序指令中存在可使所述处理器210执行本申请以下实施例提供的神经网络压缩方法的程序指令。
[0043]
可选的,所述存储器220可以主要包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、各种应用程序,以及程序指令等;存储数据区可存储神经网络等各种数据。此外,所述存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0044]
所述输入单元240可用于接收用户输入的数据或操作指令等信息。可选的,所述输入单元240可包括触控面板、功能键、物理键盘、鼠标、摄像头、监控器等输入设备。
[0045]
所述显示单元250可以实现人机交互,用于通过用户界面显示由用户输入的信息,提供给用户的信息等内容。其中,所述显示单元250可以包括显示面板251。可选的,所述显示面板251可以采用液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置。
[0046]
进一步的,当输入单元中包含触控面板时,该触控面板可覆盖所述显示面板251,当所述触控面板检测到在其上或附近的触摸事件后,传送给所述处理器210以确定触摸事件的类型从而执行相应的操作。
[0047]
所述处理器210是计算机装置的控制中心,利用各种接口和线路连接以上各个部件。所述处理器210可以通过执行存储在所述存储器220内的程序指令,以及调用存储在所述存储器220内的数据,以完成计算机装置的各种功能,实现本申请实施例提供的神经网络压缩方法。
[0048]
可选的,所述处理器210可包括一个或多个处理单元。在一种可实现方式中,所述处理器210可集成应用处理器和调制解调处理器,其中,所述应用处理器主要处理操作系统、用户界面和应用程序等,所述调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到所述处理器210中。在本申请实施例中,所述处理单元可以对神经网络进行压缩。其中,示例性的,所述处理器210可以是中央处理器(central processing unit,CPU),图形处理器(Graphics Processing Unit,GPU)或者CPU和GPU的组合。所述处理器210还可以是网络处理器(network processor unit,NPU)、张量处理器(tensor processing unit,TPU)等等支持神经网络处理的人工智能(artificial intelligence,AI)芯片。所述处理器210还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD),数字信号处理器件(digital sgnal processing,DSP)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
[0049]
所述计算机装置还包括用于给各个部件供电的电源260(比如电池)。可选的,所述电源260可以通过电源管理系统与所述处理器210逻辑相连,从而通过电源管理系统实现对所述计算机装置的充电、放电等功能。
[0050]
尽管未示出,所述计算机装置还可以包括摄像头、传感器、音频采集器等部件,在此不再赘述。
[0051]
本发明实施例提供的一种神经网络压缩方法,适用于图2所示的计算机装置及图1所示的神经网络。该方法可以有所述计算机装置中的处理器执行。参阅图3所示,所述方法的具体流程可以包括:
[0052]
步骤301:处理器根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数。
[0053]
众所周知,神经网络模型有很多层,即所述m为大于1的正整数。对神经网络进行训练或者基于神经网络模型对数据进行处理时,通常是分层训练或处理的。例如,在步骤301中的过程,对初始神经网络模型进行剪裁时,是对所述初始神经网络模型的各个层分别进行相同的操作,也就是说一层一层的,对每一层均根据该层的初始权值阈值对该层的初始权值进行剪裁。
[0054]
在一种可选的实施方式中,所述处理器在根据所述初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,可以先获取所述初始神经网络模型的所述第i层的初始权值;然后根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差,并根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[0055]
示例性的,所述第i层的初始权值阈值可以符合以下公式一:
[0056]
T i=μ i-λ·σ i 公式一
[0057]
其中,在上述公式一中T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[0058]
在一种可选的实施方式中,所述第i层的初始权值的均值可以符合以下公式二:
[0059]
[0060]
其中,在上述公式二中,ω in为所述初始神经网络模型第i层的权值;P i为所述神经网络模型第i层的权值的个数,P i为大于1的正整数。
[0061]
在一种可选的实施方式中,所述第i层的初始权值的标准差σ i可以符合以下公式三:
[0062]
[0063]
在一种可选的实施方式中,所述处理器在获取所述初始神经网络模型第i层的初始权值之前,需要对神经网络进行训练,得到神经网络的所有权值,进而得到所述初始神经网络模型。示例性的,对所述神经网络进行训练,得到所述神经网络中的所有权值,具体可以为:通过数据输入和神经网络模型构建,得到神经网络的结构和神经网络中的所有权值。
[0064]
在一种可选的实施方式中,所述处理器根据所述第i层的初始权值阈值,对所述第i 层的初始权值进行剪裁时,具体过程可以是,所述处理器将所述第i层中小于所述第i层的初始权值阈值的权值置零,将所述第i层中不小于所述第i层的初始权值阈值的权值保持不变。需要说明的是,经过上述剪裁过程,只是将第i层中的一些权值置零,并不是将相应的分支删除,也就是说神经网络模型中权值置零的分支依然存在,只是权值为零而已。同理后续涉及到的权值置零原理(即剪裁方法)相同,具体的后续不再详细说明。
[0065]
步骤302、所述处理器对所述裁剪后的神经网络模型进行多次训练,在第t次训练过程中,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1至q中的任意一个正数,所述q为多次训练的总次数。
[0066]
基于步骤301,在所述处理器将初始神经网络所有层的权值进行裁剪之后,所述处理器执行步骤302。
[0067]
在一种可选的实施方式中,所述处理器根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,可以符合以下公式四:
[0068]
[0069]
其中,在上述公式四中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[0070]
在一种可选的实施方式中,在每一次训练过程中,所述处理器根据所述第t次训练时第i层的的权值阈值对所述第t次训练时第i层当前的权值进行裁剪时,具体可以符合以下公式五:
[0071]
[0072]
其中,在上述公式五中,ω t in为第t次训练时第i层的权值。
[0073]
通过上述公式五可以明显看出,所述处理器是将所述第i层中权值的绝对值小于相应的权值阈值时置零,否则保持不变,具体原理与步骤301中涉及的对初始神经网络模型中每一层权值进行剪裁的原理类似,具体可以相互参见。
[0074]
通过上述对每一层的权值进行裁剪后,在对神经网络模型训练(如前向推理与反向传播更新)时,可以将等于0的权值排除在矩阵运算之外,例如,当某次矩阵运算时,如果输入的权值向量为零向量,就可以直接略过该次运算,以使达到运算加速的效果。
[0075]
可以理解的是,上述训练过程是一个循环过程,每一次训练的权值均是对上一次训练后得到的权值进行处理,并且每一次训练中每一层的权值阈值均是基于上一次训练时该层的权值阈值得到的。其中每一次训练均是对神经网络模型的所有层的权值进行处理之后,再进行下一次训练,直至训练结果满足一定条件后训练结束。示例性的,训练结果满足一定条件可以为权值阈值收敛等等。通过上述训练方法,在神经网络压缩过程中,权值阈值 不再是依赖认为设定,也不需要再反复试探训练,而是可以根据实际剪裁情况自适应性地调整权值阈值,这样可以灵活地实现对神经网络进行压缩,而不受人为因素的影响,可以使最终得到的神经网络模型比较稳定。
[0076]
需要说明的是,在步骤302中,第一次训练是第一次对所述剪裁后的神经网络模型进行训练,当t取1,第t-1次(即第0次)训练得到的神经网络模型第i层的权值阈值即为对初始神经网络模型剪裁过程第i层所用的初始权值阈值。也就是说第一次训练时第i层的权值阈值是基于第i层对应的初始权值阈值得到的。
[0077]
采用本申请实施例提供的神经网络压缩方法,处理器可以自适应地调整每次裁剪的权重阈值,也就是说可以灵活进行神经网络压缩,可以避免人为设定权值阈值带来的人为因素的影响,从而可以增强神经网络模型性能稳定性。
[0078]
基于以上实施例,本申请实施例还提供了一种神经网络压缩方法的示例,适用于图2所示的计算机装置及图1所示的神经网络。参阅图4所示该示例的具体流程可以包括如下步骤:
[0079]
步骤401:处理器从初始神经网络模型中获取一层的初始权值。
[0080]
步骤402:所述处理器根据获取的该层的初始权值确定该层的初始权值的均值和方差。
[0081]
步骤403:所述处理器根据该层的初始权值的均值和方差,确定该层的初始权值阈值。
[0082]
步骤404:所述处理器根据该层的初始权值阈值对该层的初始权值进行裁剪。
[0083]
步骤405:所述处理器将该层的初始权值更新成该层裁剪后的权值(也即所述处理器将裁剪后的权值写回神经网络模型)。
[0084]
步骤406:所述处理器判断当前是否已对所述初始神经网络模型的所有层的权值进行了裁剪,若是,则执行步骤407进入神经网络模型训练过程,否则执行步骤401。
[0085]
步骤407:所述处理器获取当前神经网络模型的一层的权值对应的梯度以及上一次训练时该层的权值阈值。
[0086]
步骤408:所述处理器根据该层的权值对应的梯度和上一次训练时该层的权值阈值,确定当前次训练时该层的权值阈值。
[0087]
需要说明的是,第一次训练时该层的权值阈值是基于对初始神经网络模型该层的权值进行剪裁时该层的初始阈值确定的。
[0088]
步骤409:所述处理器根据确定的该层的权值阈值剪裁该层当前的权值。
[0089]
步骤410:所述处理器更新神经网络模型中该层的权值。(即所述处理器将裁剪后的该层的权值写回神经网络模型)。
[0090]
步骤411:所述处理器判断当次训练是否处理完所有层的权值,若是则进入步骤412,否则重复执行步骤407。
[0091]
步骤412:所述处理器完成一次神经网络模型训练。
[0092]
步骤413:所述处理器判断神经网络模型训练是否结束,若是则结束,否则执行步骤407。
[0093]
基于上述示例,处理器可以自适应地调整每次裁剪的权重阈值,也就是说可以灵活进行神经网络压缩,可以避免人为设定权值阈值带来的人为因素的影响,从而可以增强神经网络模型性能稳定性。
[0094]
基于上述实施例,本申请实施例还提供了一种神经网络压缩装置,用于实现图3和图4所示的实施例提供神经网络压缩方法。参阅图5所示,所述神经网络压缩装置500中包括:权值剪裁单元501和训练单元502,其中:
[0095]
所述权值裁剪单元501用于根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数;
[0096]
所述训练单元502用于对所述裁剪后的神经网络模型进行多次训练;
[0097]
所述权值裁剪单元501还用于在所述训练单元502进行第t次训练过程中,根据所述训练单元502第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1至q中的任意一个正数,所述q为多次训练的总次数。
[0098]
在一种可选的实施方式中,所述神经网络压缩装置还可以包括如图5中所示的权值获取单元503和阈值确定单元504,具体的:
[0099]
所述权值获取单元503用于在所述权值裁剪单元501根据初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,获取所述初始神经网络模型的所述第i层的初始权值;所述阈值确定单元504用于根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差;根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[0100]
其中示例性的,所述权值获取单元503和所述阈值确定单元504的功能也可以由所述权值裁剪单元501直接实现,本申请对此不作限定。
[0101]
在一种可选的实施方式中,所述第i层的初始权值阈值可以符合以下公式:
[0102]
T i=μ i-λ·σ i
[0103]
其中,T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[0104]
在一种可选的实施方式中,所述权值裁剪单元501在根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值时,可以符合以下公式:
[0105]
[0106]
其中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[0107]
在一种可选的实施方式中,所述权值裁剪单元501在根据任一层的权值阈值对所述任一层的权值进行裁剪时具体用于:将所述任一层的权值中小于所述任一层的权值阈值的权值置零,以及将所述任一层的权值中大于或者等于所述任一层的权值阈值的权值保持不变。
[0108]
采用本申请实施例提供的神经网络压缩装置,可以自适应地调整每次裁剪的权重阈值,也就是说可以灵活进行神经网络压缩,可以避免人为设定权值阈值带来的人为因素的 影响,从而可以增强神经网络模型性能稳定性。
[0109]
要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0110]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0111]
基于以上实施例,本申请实施例还提供了一种神经网络压缩装置,所述神经网络压缩装置,用于实现图3或图4所示的神经网络压缩方法。参阅图6所示,所述神经网络压缩装置600可以包括:处理器601和存储器602,其中:
[0112]
所述处理器601可以是CPU,GPU或者CPU和GPU的组合。所述处理器601还可以是NPU、TPU等等支持神经网络处理的AI芯片。所述处理器601还可以进一步包括硬件芯片。上述硬件芯片可以是ASIC,PLD,DSP或其组合。上述PLD可以是CPLD,FPGA,GAL或其任意组合。需要说明的是,所述处理器601不限于上述列举的情况,所述处理器601可以是能够实现神经网络运算的任何处理器件。
[0113]
所述处理器601以及所述存储器602之间相互连接。可选的,所述处理器601以及所述存储器602通过总线603相互连接;所述总线603可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0114]
一种实现方式中,所述处理器601用于实现本申请图3所示的实施例提供的神经网络压缩方法时,具体可以执行图3所示的以上实施例中的步骤301、步骤302中的操作,以及可以执行步骤301和302中的其他操作,涉及的具体描述可以相互参照,此处不再赘述。
[0115]
另一种实现方式中,所述处理器601用于实现本申请图4所示的实施例提供的神经网络压缩方法时,具体可以执行图4所示的以上实施例中的步骤401-步骤413中的操作,具体可以相互参照,此处不再赘述。
[0116]
所述存储器602,用于存放程序和数据等。具体地,程序可以包括程序代码,该程序代码包括计算机操作的指令。存储器602可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器601执行存储器602所存放的程序,实现上述功能,从而实现如图3或图4所示的神经网络压缩方法。
[0117]
需要说明的是,当图6所示的神经网络压缩装置可以应用于计算机装置时,所述神经 网络压缩装置可以体现为图2所示的计算机装置。此时,所述处理器601可以与图2中示出的处理器210相同,所述存储器602可以与图2中示出的存储器220相同。
[0118]
综上所述,采用本申请实施例提供的神经网络压缩方法及装置,可以自适应地调整每次裁剪的权重阈值,也就是说可以灵活进行神经网络压缩,可以避免人为设定权值阈值带来的人为因素的影响,从而可以增强神经网络模型性能稳定性。
[0119]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0120]
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0121]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0122]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0123]
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0124]
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

权利要求书

[权利要求 1]
一种神经网络压缩方法,其特征在于,包括: 根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数; 对所述裁剪后的神经网络模型进行多次训练,在第t次训练过程中,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1至q中的任意一个正数,所述q为多次训练的总次数。
[权利要求 2]
如权利要求1所述的方法,其特征在于,根据初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,所述方法还包括: 获取所述初始神经网络模型的所述第i层的初始权值; 根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差; 根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[权利要求 3]
如权利要求1或2所述的方法,其特征在于,所述第i层的初始权值阈值符合以下公式: T i=μ i-λ·σ i 其中,T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[权利要求 4]
如权利要求1-3任一项所述的方法,其特征在于,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,符合以下公式: 其中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[权利要求 5]
如权利要求1-4任一项所述的方法,其特征在于,根据任一层的权值阈值对所述任一层的权值进行裁剪,包括: 将所述任一层的权值中小于所述任一层的权值阈值的权值置零,以及将所述任一层的权值中大于或者等于所述任一层的权值阈值的权值保持不变。
[权利要求 6]
一种神经网络压缩装置,其特征在于,包括: 权值裁剪单元,用于根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数; 训练单元,用于对所述裁剪后的神经网络模型进行多次训练; 所述权值裁剪单元,还用于在所述训练单元进行第t次训练过程中,根据所述训练单元第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1至q中的任意一个正数,所述q为多次训练的总次数。
[权利要求 7]
如权利要求6所述的装置,其特征在于,还包括: 权值获取单元,用于在所述权值裁剪单元根据初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,获取所述初始神经网络模型的所述第i层的初始权值; 阈值确定单元,用于根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差;根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[权利要求 8]
如权利要求6或7所述的装置,其特征在于,所述第i层的初始权值阈值符合以下公式: T i=μ i-λ·σ i 其中,T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[权利要求 9]
如权利要求6-8任一项所述的装置,其特征在于,所述权值裁剪单元根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,符合以下公式: 其中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[权利要求 10]
如权利要求6-9任一项所述的装置,其特征在于,所述权值裁剪单元,在根据任一层的权值阈值对所述任一层的权值进行裁剪时,具体用于: 将所述任一层的权值中小于所述任一层的权值阈值的权值置零,以及将所述任一层的权值中大于或者等于所述任一层的权值阈值的权值保持不变。
[权利要求 11]
一种神经网络压缩装置,其特征在于,包括: 存储器,用于存储程序指令; 处理器,用于与所述存储器耦合,调用所述存储器中的程序指令,执行以下操作: 根据初始神经网络模型的第i层的初始权值阈值,对所述第i层的初始权值进行裁剪,得到裁剪后的神经网络模型,所述i取遍1至m中的任意一个正整数,所述m为所述神经网络模型的总层数; 对所述裁剪后的神经网络模型进行多次训练,在第t次训练过程中,根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,根据所述第t次训练时第i层的权值阈值对所述第t次训练时第i层当前的权值进行裁剪;所述t取遍1 至q中的任意一个正数,所述q为多次训练的总次数。
[权利要求 12]
如权利要求11所述的装置,其特征在于,所述处理器,还用于: 根据初始神经网络模型的第i层的初始权值阈值对所述第i层的初始权值进行裁剪之前,获取所述初始神经网络模型的所述第i层的初始权值; 根据所述第i层的初始权值确定所述第i层的初始权值的均值和标准差; 根据所述第i层的初始权值的均值和标准差,确定所述第i层的初始权值阈值。
[权利要求 13]
如权利要求11或12所述的装置,其特征在于,所述第i层的初始权值阈值符合以下公式: T i=μ i-λ·σ i 其中,T i为所述初始神经网络模型第i层的初始权值阈值;μ i为第i层的初始权值的均值;σ i为第i层的初始权值的标准差;λ为设定值,λ≥0。
[权利要求 14]
如权利要求11-13任一项所述的装置,其特征在于,所述处理器根据第t-1次训练得到的神经网络模型第i层的权值阈值确定第t次训练时第i层的权值阈值,符合以下公式: 其中, 为第t次训练时第i层的权值阈值; 为第t-1次训练时第i层的权值阈值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度均值; 为第t-1次训练得到的神经网络模型第i层中不为零的权值的梯度;N i为第t-1次训练得到的神经网络模型第i层中不为零的权值的个数,N i为大于1的正整数。
[权利要求 15]
如权利要求11-14任一项所述的装置,其特征在于,所述处理器,在根据任一层的权值阈值对所述任一层的权值进行裁剪时,具体用于: 将所述任一层的权值中小于所述任一层的权值阈值的权值置零,以及将所述任一层的权值中大于或者等于所述任一层的权值阈值的权值保持不变。
[权利要求 16]
一种包含指令的计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1-5任一项所述的方法。
[权利要求 17]
一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机程序,所述计算机程序被计算机执行时,使得所述计算机执行如权利要求1-5任一项所述的方法。
[权利要求 18]
一种芯片,其特征在于,所述芯片与存储器耦合,用于读取并执行所述存储器中存储的程序指令,以实现如权利要求1-5任一项所述的方法。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]  
[ 图 5]  
[ 图 6]