一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于修剪神经网络的方法和设备与流程

2022-07-20 06:48:44 来源:中国专利 TAG:

用于修剪神经网络的方法和设备
1.描述
2.根据权利要求1的前序部分,本发明涉及用于修剪神经网络的方法和设备。特别地,本发明描述了用于修剪神经网络的方法和设备,使得它们可以在带宽受限的信道上传送、存储在容量受限的介质上或者部署到资源受限的装置。例如,本发明可以在用于人工智能(ai)应用(即,神经网络应用)的硬件优化芯片组中实现,诸如在众多智能手机中使用的麒麟980 cpu、a12仿生cpu和骁龙845芯片组等。
3.近来,因为神经元多层相连,所以神经网络(nn)可以解决极具挑战性的任务。将神经网络的复杂性定义为其可学习参数的数量,通常具有数万个神经元的架构以及数亿级别的参数的复杂性。例如,8层alexnet内存占用超过240mb内存,而19层vggnet内存占用超过500mb。
4.这种复杂性可能会限制神经网络在诸如用于参数表示的可用内存、推断时间或用于共享网络模型的传输带宽的资源受限的工业场景中的部署。所述工业场景的示例可以是为由智能手机执行的诸如相机场景和对象识别、人工智能辅助夜间拍摄、智能自拍模糊和增强现实等的改进特征而进行的神经网络的部署。在便携式或嵌入式装置上部署nn已经成为日益关注的问题。
5.在文献中提出了几种不同的方法,以解决当在资源受限的装置上部署神经网络时带来的内存需求、模型复杂性和能量消耗的问题。这些方法可以分为三大类:改变模型结构、参数量化和权重修剪。
6.改变神经网络的模型结构允许从一种架构移向另一架构,例如,通过强制精确的神经元连接或者通过共享权重,可以减少参数的数量或网络的复杂性。
7.量化允许减少各个参数的位表示,因此可以减少存储和使用神经网络所需的内存。
8.修剪技术旨在学习稀疏神经网络拓扑,即具有少许非零参数或总共具有更少的神经元的神经网络。
9.例如,近来由e.tartaglione、s.a.fiandrotti和g.francini在文章“learning sparse neural networks via sensitivity-driven regularization(经由敏感度驱动的正则化学习稀疏神经网络)”中提出了一种技术,该文章发表在2018年的advances in neural information processing systems(神经信息处理系统的进展)第3878-3888页。上述作者已经引入了将神经网络的较不敏感的参数选择性地趋向零的正则化项,较不敏感的参数即对网络输出具有小的重要性,并且因此可以在不影响网络性能的情况下被修剪。这种方法对于在网络中减少非零参数的数量是有效的。
10.在上述文章中描述的技术方案具有以下缺点。
11.这种方法的第一缺点是,其旨在针对各个神经元独立地最小化非零参数的数量,因此,所学习的神经网络的稀疏拓扑通常缺乏这样的结构,该结构妥协实际压缩神经网络的可能性。
12.这种方法的另一缺点是,存储和访问由该方法提供的所得的修剪的神经网络的随
机稀疏结构,意味着内存访问成本和处理开支中的显著惩罚。
13.本发明旨在通过提供用于修剪神经网络的方法和设备来解决这些和其他问题,使得

)获得结构非常紧凑的神经网络,并且

)在学习任务性能中具有有限的(或没有)惩罚。
14.本发明公开了用于修剪神经网络的改进的方法和设备,其允许基于神经元敏感度正则化函数将神经元的参数向零联合改进,相对于现有技术中的已知技术,不仅实现模型压缩,还实现结构简化。以这种方式,所提出的发明能够有效地简化用于资源受限的装置的神经网络。此外,所公开的框架能够例如与用于多媒体应用的神经网络压缩的任何标准结合使用。
15.在下文中将参照附图通过非限制性实施例详细描述本发明,其中:
[0016]-图1表示本领域已知的示例性神经网络;
[0017]-图2参照图1的神经网络,例示根据本发明实施例的修剪处理;
[0018]-图3示意性示出根据本发明实施例的用于修剪神经网络的设备的框图;
[0019]-图4示出例示根据本发明实施例的用于修剪神经网络的方法的流程图;
[0020]-图5示出来自用于手写数字识别的mnist数据集的一些示例;
[0021]-图6汇总根据本发明实施例由申请人提供的一些结果;
[0022]-图7例示表示根据现有技术的神经网络(诸如图1的神经网络)的一些参数的矩阵;
[0023]-图8例示表示根据本发明实施例的神经网络(诸如图2的神经网络)的一些参数的矩阵。
[0024]
在描述中,任何对“实施例”的参照将指示关于本发明的实现方式所描述的特定配置、结构或特征被包括在至少一个实施例中。因此,可能出现于本描述的不同部分中的短语“在实施例中”以及其他类似短语不一定都与同一实施例相关。此外,任何特定配置、结构或特征可以以任何被认为合适的方式组合在一个以上的实施例中。因此,以下的参照只是为了简便而使用,并不限制各种实施例的保护范围或延续。
[0025]
参照图1,神经网络100包括多个神经元105,并且可以由加权图表示,在加权图中,各个神经元105由图的节点表示,并且两个所述神经元105之间的连接106可以由图的边表示。连接106可以由权重即神经网络100的参数表征,其可以例如表示为由根据ieee754标准编码为四个或八个字节的实数。神经元105被组织在n层110、120、130中,其中n是整数。该图的拓扑表征神经网络100,例如属于两个相邻层110、120、130中的神经元105可以完全连接,即如图1所示,层110、120、130的各个神经元105具有到其相邻层110、120、130的每个神经元105的连接106。
[0026]
考虑n作为标记所述神经网络100的层的索引,输入层110可以由n=0标识,而输出层130可以由n=n标识。隐藏层120可以以1与n-1之间的索引n的值来标识。n层的每一层都由xn个神经元105组成,在卷积层的情况下也称为滤波器或核。对于标记为x
ni
的第n层110、120、130的第i个神经元105,可以定义其输出值y
ni
、其输入值向量y
n-1
、其权重向量w
ni
及其偏置参数b
ni

[0027]
各个神经元105具有其自己的激活函数g
ni
(
·
),在一些仿射函数f
ni
(
·
)之后应用,仿射函数可以是卷积、点积或它们的任意组合。神经元的输出由以下关系式给出
[0028]yni
=g
ni
[f
ni
({w
ni
,b
ni
};y
n-1
)].
ꢀꢀꢀꢀ
(1)
[0029]
所述神经网络100的模型m包括与神经网络100相关的参数{w
ni
,b
ni
}、激活函数g
ni
、仿射函数f
ni
和神经网络100的图的拓扑。参数化两个相邻层110、120、130之间的连接130的权重可以表示为具有xn×
x
n-1
个元素w
nij
的矩阵,其中索引i、j分别对应于第n层标记为x
ni
的神经元105和第(n-1)层标记为x
(n-1)j
的神经元105。然而,第n层110、120、130的偏置可以表示为具有xn个元素的向量。参数{w
ni
,b
ni
}的量如何随着所述神经网络100的神经元105和层110、120、130的数量的增长而线性增加是清楚的。
[0030]
在部署神经网络100之前,需要对其进行训练。它的训练可以通过数据集d来执行,数据集d表示神经网络100必须处理的任务,诸如手写数字识别、语音识别、图像识别等。通常,所述数据集d包括诸如对(dk;vk)的大量示例,各个对包括输入值dk及其对应的目标值vk。例如,在手写数字的情况下,输入值dk可以是手写数字的灰度图像,其中图像的各个像素的亮度被编码为0-255范围内的数字,而目标值vk可以是对应的ascii代码索引。例如,图5示出来自已知的mnist数据集的一些图像,mnist数据集以60k训练加上大小为28
×
28灰度的手写数字的10k测试图像组成。数据集d通常被随机划分为第一训练集u和第一验证集v,使得可以通过使用与第一训练集u相关的信息来训练神经网络100,以在所述第一验证集v上实现一些令人满意的第一性能水平a。第一性能水平a可以通过根据预定度量的值的集合来定义,例如,神经网络100可允许的最大误差。
[0031]
通常,通过针对模型m的一些给定参数{w
ni
,b
ni
}定义损失函数l来执行神经网络100的训练。例如,损失函数l可以由以下关系式定义
[0032][0033]
其中k是在学习时期t,在第一训练集u的示例对上运行的索引,yk是由具有dk作为输入值并且vk是其各个示例的对应目标值的神经网络100获得的输出。因此,神经网络100的训练通常通过运行本领域已知的具有误差梯度反向传播算法的梯度下降,通过最小化模型m的参数{w
ni
,b
ni
}上的损失函数l来执行。
[0034]
在上述训练过程期间,模型m参数{w
ni
,b
ni
}根据梯度下降更新规则(3)从学习时期t演变到时期t 1,使得实现第一性能水平a。
[0035][0036]
作为训练过程的结果,参数{w
ni
,b
ni
}被训练。
[0037]
如前所述,参数{w
ni
,b
ni
}的量随着所述神经网络100的神经元105和层110、120、130的数量线性增加。此外,在训练过程之后收集权重向量w
ni
的矩阵通常是密集的,即它们具有少许的零元素,而在根据引用的现有技术的修剪过程之后,所述矩阵通常是非结构化的,即它们具有随机分布的非零元素。图7示出具有96
×
96个元素的矩阵700的示例,其表示在根据上述现有技术的训练和修剪过程之后,例如按行布置的层110、120、130中的所有神经元的权重向量w
ni
,其中黑点表示非零权重并且白点表示零权重。由于在训练过程之后权重向量w
ni
的密集或非结构化模式,这些矩阵的压缩是无效的,因此难以在资源受限的装置的情况中利用诸如所述神经网络100的神经网络进行操作。
[0038]
所提出的发明允许有效地简化用于资源受限的装置的神经网络,以及用于多媒体应用的神经网络的压缩。
[0039]
参照图2,参照神经网络100描述根据本发明实施例的修剪处理,以获得所得的修剪的神经网络200。
[0040]
在本发明中描述的用于修剪神经网络的方法允许学习网络拓扑,该网络拓扑不仅是稀疏的,而且各个层具有更少的神经元,或者对于卷积层等同地具有更少的滤波器。更少的神经元简化了在内存受限的装置上获得网络拓扑的紧凑表示的任务。作为另一优点,受益于更好地利用了缓存局部性和内存访问模式,更小且更密集的模型还可以加速网络执行。
[0041]
根据本发明,执行将与至少一个较不敏感的神经元108相关的参数驱向零的更新规则。这允许在以下步骤中修剪至少一个较不敏感的神经元108,即将其由连接107表示的所有相关的参数置零,诸如其偏置及其所有权重。所得的修剪后的神经网络200具有数量减少的神经元105和对应的连接106,因此非零参数{w
ni
,b
ni
}的数量减少,这允许例如通过更小的矩阵(即,具有数量减少的行或列)来表示它们。
[0042]
相反,由e.tartaglione等人在上述引用的文章中描述的方法公开了仅修剪(即置零)神经网络100的权重w
nij
的方法,结果获得数量减少的参数{w
ni
,b
ni
}。应当注意,由e.tartaglione等人描述的方法可以在神经网络100中的一些神经元105的所有连接106(即,所有权重w
nij
)被意外修剪时关闭它们。然而,这种现象是副作用,不受引用的本领域的已知方法的控制。
[0043]
图3示出例示根据本发明实施例的用于修剪神经网络100的设备300的框图。所述设备300可以包括输入装置310、存储装置320、通信装置330、输出装置340和处理装置350,它们可以例如通过允许在所述输入装置310、存储装置320、通信装置330和处理装置340之间交换信息的通信总线301可操作地连接。或者,在没有所述通信总线301的情况下,输入装置310、存储装置320、通信装置330、输出装置340和处理装置350可以通过星形架构可操作地连接。
[0044]
输入装置310适于从用户读取输入信息,诸如数据和/或指令。所述输入信息可以包括例如参数{w
ni
,b
ni
}、所述神经网络100的模型m、数据集d、第一性能水平a和将由所得的修剪后的神经网络200实现的第二性能水平a*。这种输入装置310可以包括例如键盘、触摸屏、存储装置和根据usb、蓝牙、火线、sata、scsi标准等的接口,等等。
[0045]
存储装置320适于存储信息和用于执行根据本发明实施例的方法的指令集合。将参照图4详细描述所述方法。存储的信息可以与参数{w
ni
,b
ni
}、所述神经网络100的模型m、数据集d、第一性能水平a、第二性能水平a*和所述所得的修剪后的神经网络200的修剪后的模型m*相关,其按照用于修剪神经网络100的方法获得。修剪后的模型m*包括作为用于修剪神经网络100的方法的结果的修剪后的参数{w*
ni
,b*
ni
}。所述修剪后的参数{w*
ni
,b*
ni
}可以表示为稀疏矩阵,即它们具有少许非零元素。此外,所述稀疏矩阵是结构化的,即它们的元素不是随机分布的,这允许有利地有效压缩所述修剪后的参数{w*
ni
,b*
ni
}。根据本领域已知的任何技术,修剪后的参数{w*
ni
,b*
ni
}的压缩可以是无损的或有损的。例如,在无损压缩的情况下,修剪后的参数{w*
ni
,b*
ni
}可以通过算术编码技术来编码,或者在有损压缩的情况下,可以通过码本来量化等。图8示出具有500
×
800个元素的矩阵800的示例,其表示在根据本发明实施例的修剪过程之后,例如按行布置的层110、120、130中的所有神经元的权重向量w*
ni
,其中黑点表示非零权重并且白点表示零权重。这种存储装置320可以包括例如基
于半导体电子和/或光电和/或磁技术的易失性和/或非易失性存储单元。
[0046]
通信装置330用于向诸如膝上电脑、智能手机、远程服务器等的另一设备发送与修剪后的模型m*相关的信息。与修剪后的模型m*相关的所述信息可以是例如按照由本发明描述的方法获得的修剪后的参数{w*
ni
,b*
ni
}。这种通信装置330可以包括例如根据wi-fi、gsm、lte、以太网标准等的收发器。
[0047]
输出装置340适于向所述用户提供诸如经处理的数据的输出信息。所述经处理的数据可以包括例如所述所得的修剪后的神经网络200的修剪后的参数{w*
ni
,b*
ni
}和/或修剪后的模型m*。这种输出装置340可以包括例如屏幕、触摸屏、存储装置和根据usb、蓝牙、火线、sata、scsi标准等的接口。
[0048]
处理装置350适于处理数据并执行由存储装置320存储的指令集合。这种处理装置340可以包括例如基于arm架构或x64架构的中央处理单元(cpu)和/或图形处理单元(gpu)。这种处理装置340可以例如由类似arduino的微控制器来实现,或者可以由诸如cpld、fpga的专用硬件组件来实现,或者可以由诸如intel nervana神经网络处理器等的专用(purpose-built)芯片组来实现。处理装置350可以控制由输入装置310、存储装置320、通信装置330和输出装置340执行的操作。
[0049]
此外,图3所示的框图仅是示例性的,它允许理解本发明如何工作以及本领域的技术人员如何实现它。本领域的技术人员理解这些图表没有限制意义,其中所示的功能、相互关系和信息可以以许多等同的方式布置;例如,看似由不同逻辑块执行的操作可以由硬件和软件资源的任意组合来执行,也可以由相同资源实现不同或所有块。
[0050]
参照图4,描述参照图3的框图的修剪神经网络100的方法。
[0051]
在步骤400,由所述处理装置350执行初始化阶段。在这个阶段,处理装置350获取所述输入信息,所述输入信息可以已经由存储装置320存储,或者可以由所述输入装置310取得然后由存储装置320存储。所述输入信息可以包括与神经网络100相关的参数{w
ni
,b
ni
}、所述神经网络100的模型m、代表神经网络100必须处理的任务的数据集d、以及将由所得的修剪后的神经网络200实现的第二性能水平a*。参数{w
ni
,b
ni
}可以包括与标记为x
ni
的至少一个神经元105相关的权重向量w
ni
和/或偏置b
ni

[0052]
在本发明的优选实施例中,所述输入信息可以包括已经根据本领域已知的诸如梯度下降算法的任何技术训练好的所述参数{w
ni
,b
ni
}。
[0053]
在步骤410,由所述处理装置350执行分离阶段。在这个阶段期间,处理装置350生成所述数据集d的分区,以获得通常彼此分离的第二训练集u’和第二验证集v’,它们可以由所述存储装置320存储。优选地,所述第二训练集u’和第二验证集v’可以随机生成,例如数据集d可以随机采样。
[0054]
在步骤420,由所述处理装置350执行正则化阶段。在这个阶段期间,处理装置350通过使用数据集d,根据训练算法来训练神经网络100,即训练模型m。例如,训练可以通过使用第二训练集u’,由所述梯度下降算法来执行。在这个阶段期间,参数{w
ni
,b
ni
}根据基于神经敏感度度量s的正则化更新规则从学习时期t演化到时期t 1,以将与神经网络100的至少一个较不敏感的神经元108相关的参数驱向零。神经敏感度度量s基于神经网络100的至少一个神经元105的预激活信号,即激活函数g
ni
的输入值。预激活信号可以取决于标记为x
ni
的神经元105的输入值向量y
n-1
和参数{w
ni
,b
ni
}。这允许在接下来的步骤430中修剪至少一
个较不敏感的神经元108,即将其由连接107表示的所有相关参数置零,诸如偏置b
ni
和其权重向量w
ni

[0055]
所述正则化更新规则可以将与至少一个较不敏感的神经元108相关的权重向量w
ni
(即所有权重w
nij
)驱向零;正则化更新规则可以写作例如以下关系式
[0056][0057]
正则化更新规则(4)的第一项和第二项对应于本领域已知的更新规则,而第三项对应于用于属于标记为x
ni
的神经元105的权重w
nij
的惩罚项。所述惩罚项与标记为x
ni
的神经元105的神经非敏感度度量成正比,其可以被定义为标记为x
ni
的所述神经元105的所述神经敏感性度量s
ni
的补偿。因此,所述神经非敏感度度量可以写作例如以下关系式
[0058][0059]
神经敏感度度量s
ni
被定义,以评估是否应该从神经网络100修剪标记为x
ni
的神经元105。为此,标记为x
ni
的神经元105的神经敏感度度量s
ni
基于标记为x
ni
的神经元105的预激活信号,预激活信号可以取决于输入值向量y
n-1
及其参数{w
ni
,b
ni
}。
[0060]
标记为x
ni
的神经元105的预激活信号,可以利用标记为x
ni
的所述神经元105的突触后电位函数p
ni
在给定其输入值向量y
n-1
及其参数{w
ni
,b
ni
}的情况下确定。突触后电位函数p
ni
(
·
)可以写作例如以下关系式
[0061]
p
ni
=f
ni
({w
ni
,b
ni
};y
n-1
).
ꢀꢀꢀ
(6)
[0062]
因此,标记为x
ni
的神经元105的所述神经敏感度度量s
ni
可以写作例如以下关系式
[0063][0064]
这种定义允许评估标记为x
ni
的神经元105对神经网络100的输出yn的贡献,其中xn是输出层130中的神经元105的数量,y
nj
是输出层130中的第j个神经元105的输出,并且p
ni
(
·
)是标记为x
ni
的神经元105的所述突触后电位函数。
[0065]
当标记为x
ni
的神经元105的神经敏感度度量s
ni
很小时,即s
ni

0,那么标记为x
ni
的所述神经元105对输出层130中的第j个神经元105的输出y
nj
产生很小的贡献,因此其参数趋向零对所述神经网络100的输出几乎没有干扰。类似地,当标记为x
ni
的神经元105的神经非敏感度度量增加时,即表示标记为x
ni
的所述神经元105对输出层130没有贡献,因此根据如上述关系式(4)中的示例所示的正则化更新规则,其参数可以被驱向零。所述正则化更新规则可以例如与梯度下降算法一起迭代执行。
[0066]
根据本发明的目的,这允许在第二阶段中修剪较不敏感的神经元108,而不是修剪单个连接106,即独立修剪神经元参数,因此从所述神经网络100获得具有结构化稀疏的所得的修剪后的神经网络200。
[0067]
在本发明的另一实施例中,可以执行局部正则化更新规则来代替由关系式(4)提供的所述正则化更新规则。根据定义(7),神经敏感度度量s表示输出层130中给定神经元105的全局影响的度量。所述定义考虑了参与计算的所有先前的神经元105。在本实施例中,提供了局部神经敏感度度量的定义,其仅独立地基于各个神经元105的预激活信号和输出
1.0.1以python实现。模型的训练通过使用学习率η=0.1在20个学习时期上使用随机梯度下降(sgd)技术来执行。由于sgd通过从随机选择的数据子集计算的梯度估计来代替从整个数据集计算的实际梯度,因此sgd可以被视为梯度下降算法的随机近似。对于神经敏感度度量和局部神经敏感度度量都采用λ=10-5
,在这种情况下,修剪测试的lenet-5神经网络所需的时期在2000的数量级。
[0079]
通过完全未被修剪的原始网络中的参数的数量与在应用了根据本发明实施例的方法之后的剩余参数的数量之间的比率来测量测试的模型的修剪的参数的量。还报告了修剪之后剩余神经元或卷积层的滤波器的数量。
[0080]
表600示出了根据本发明实施例执行的修剪技术(线610)与根据现有技术执行的修剪技术(线620)之间的比率
[0081]
利用神经敏感度度量(proposed-lb)和局部神经敏感度度量(proposed-local)修剪的参数的数量几乎是通过现有技术(tartaglione等人)修剪的参数的数量的两倍。对理解本发明的优点最重要的是,观察被修剪的神经元的数量,与proposed-local相比,proposed-lb修剪了更多的神经元,并且两者都比参照tartaglione等技术修剪了更多的神经元。这是来自神经敏感度度量公式的全局信息与局部神经敏感度度量公式相比的效果。
[0082]
总而言之,所获得的结果表明,在本发明中描述的方法在修剪参数和修剪神经元这两方面都优于现有技术的修剪方案。
[0083]
因此,根据如上提供的描述,本发明的优点显而易见。
[0084]
根据本发明的用于修剪神经网络的方法和设备,有利地允许通过基于神经元敏感度度量的正则化函数来学习紧凑的网络拓扑,这促进了结构化稀疏架构。
[0085]
本发明的另一优点是,它允许在学习任务中获得具有有限的(或没有)惩罚的非常紧凑的神经网络。
[0086]
本发明的另一优点是,在没有任何规定的情况下,它可以有利地应用于任何神经网络模型。
[0087]
本描述已经解决了一些可能的变型,但是显而易见,本领域技术人员还可以实现其他实施例,其中一些元素可以以其他技术上等同的元素来替换。因此,本发明不限于本文描述的示例性示例,而是可以在不脱离如以下权利要求书中阐述的基本发明思想的情况下,对等同部件和元素进行许多变型、改进或替换。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献