首页 / 专利库 / 电脑编程 / 算法 / 自学习算法 / 基于稀疏学习与遗传算法相结合的神经网络剪枝方法

基于稀疏学习与遗传算法相结合的神经网络剪枝方法

阅读:377发布:2020-05-08

专利汇可以提供基于稀疏学习与遗传算法相结合的神经网络剪枝方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于稀疏学习与遗传 算法 相结合的神经网络 剪枝 方法,主要解决神经网络对存储资源和计算资源消耗大的问题。其实现方案是;通过稀疏学习的方式训练神经网络,得到稀疏化的网络结构;利用 遗传算法 以及一种动态可调节的评价因子对训练好的神经网络中潜在的子网络进行启发式搜索,并在适应度函数的引导下自动搜索出符合需求的最佳子网络;将得到的最佳子网络进行再训练得到最终剪枝结果。本发明减少了神经网络对存储资源和计算资源消耗,保证了剪枝后网络的 精度 ,能实现可调节剪枝,可用于神经网络的压缩。,下面是基于稀疏学习与遗传算法相结合的神经网络剪枝方法专利的具体信息内容。

1.一种基于稀疏学习与遗传算法相结合的神经网络剪枝方法,其特征在于,包括如下:
(1)利用稀疏学习的方式训练神经网络:
(1a)将神经网络各通道中缩放因子的正则作为惩罚项添加到训练的损失函数中,得到新的损失函数fnew(x);
(1b)利用训练数据集和随机梯度下降算法训练神经网络,直到(1a)中新的损失函数收敛;
(2)利用遗传算法搜索最佳子网络:
(2a)设置最大迭代次数,设置通道压缩率为R%,计算训练后神经网络的总参数量p0和计算量c0;
(2b)设置10组权重,每组包括两个比值不同的权重;
(2c)将10组权重编码为10条二进制码,对这些二进制码进行交叉和变异操作产生若干条新的二进制码;
(2d)对(2c)中所有二进制码进行解码,将每条二进制码解码为一组权重;
(2e)对(2d)中的每组权重,利用该组权重计算一组评价因子,每组评价因子中评价因子的个数等于神经网络的通道总数,且评价因子与神经网络中的通道是一一对应的关系;
(2f)将(2e)中的每组评价因子按照从小到大的顺序重新排列,挑选排序后排名前R%的评价因子,并将其所对应的通道从神经网络中删除,从而获得每个子网络;
(2g)测试(2f)中的每个子网络的准确率ηj,纪录每个子网络的参数量pj和计算量cj,并利用ηj,pj和cj算出每个子网络的适应度fj;
(2h)根据(2g)中的适应度,从对所有子网络中筛选出10个子网络,保留这些子网络在(2d)中对应的10组权重,并判断当前迭代次数是否达到(2a)中所设置的最大迭代次数,若达到最大迭代次数,则将具有最大适应度的子网络作为最佳子网络输出,否则,返回(2c);
(3)利用训练数据集和随机梯度下降算法对(2h)中的最佳子网络进行训练,得到训练好的最佳子网络,完成对神经网络的剪枝。
2.根据权利要求1所述的方法,其特征在于:(1a)中新的损失函数,其表达式如下:
fnew(x)=fold(x)+λs·Rs(γ),
其中,fold(x)表示原始的交叉熵损失函数,x表示输入的训练数据,λs表示一个缩放系数,Rs(γ)表示惩罚项,该惩罚项的具体表达式如下:
其中,N表示神经网络的总层数,nl表示神经网络中第l层的总通道数,γl,i表示神经网络中第l层第i个通道的缩放因子,|γl,i|表示γl,i的绝对值,ε表示一个常数约束项。
3.根据权利要求1所述的方法,其特征在于:(1b)利用训练数据集和随机梯度下降算法训练神经网络,其实现如下:
(1b1)从公开数据网站分别下载训练数据集和测试数据集,并将下载的数据转换为张量格式;
(1b2)将张量格式的数据x输入到神经网络,并计算损失函数fnew(x);
(1b3)分别计算损失函数fnew(x)中交叉熵损失fold(x)和惩罚项Rs(γ)关于神经网络中参数的偏导,再利用以下公式更新神经网络中的参数:
其中,θ表示更新前神经网络中的参数,θ'表示更新后神经网络中的参数,μ表示一个步长因子,λs表示一个缩放系数;
(1b4)重复(1b2)-(1b3),直到损失函数fnew(x)收敛。
4.根据权利要求1所述的方法,其特征在于:(2a)中神经网络的参数量p0,通过以下公式获得:
其中,N表示神经网络的总层数,nl表示神经网络中第l层的总通道数,kw和kh分别表示神经网络通道中二维卷积核的宽度和长度。
5.根据权利要求1所述的方法,其特征在于:(2a)中神经网络的计算量c0,通过以下公式获得:
其中,N表示神经网络的总层数,nl表示神经网络中第l层的总通道数,kw和kh分别表示神经网络通道中二维卷积核的宽度和长度, 和 分别表示神经网络第l层的输出特征图的宽度和长度。
6.根据权利要求1所述的方法,其特征在于:(2b)中设置10组权重,是先在0到1的范围内,按照从小到大的顺序均匀抽取10个随机数分别作为10组权重中的第一权重;再在1到0的范围内,按照从大到小的顺序均匀抽取10个随机数分别作为10组权重中的第二权重,得到每组中两个比值不同的权重。
7.根据权利要求1所述的方法,其特征在于:(2e)中利用每组权重计算每一组的评价因子,通过如下公式计算:
其中, 表示第j组评价因子中对应神经网络第l层第i个通道的评价因子, 和 分别表示第j组权重中的第一和第二权重,βl,i表示神经网络中第l层第i个通道的偏置因子。
8.根据权利要求1所述的方法,其特征在于:(2g)中计算子网络的适应度,公式如下:
其中,fj表示第j个子网络的适应度,ηj表示第j个子网络的准确率,pj和cj分别表示第j个子网络的参数量和计算量,W表示一个用来调整适应度的权重因子,当需要子网络具有更少的参数量时,将W设置在[0.5,1]范围内,当需要子网络具有更少的计算量时,将W设置在[0,0.5]范围内。
9.根据权利要求1所述的方法,其特征在于:(3)中利用训练数据集和随机梯度下降算法训练最佳子网络,其实现如下:
(3a)计算损失函数fnew(x)中交叉熵损失fold(x)关于子网络中参数的偏导,再利用以下公式更新子网络中的参数:
其中,表示更新前子网络中的参数, 表示更新后子网络中的参数,μ表示一个步长因子;
(3b)重复(3a),直到损失函数fnew(x)收敛。

说明书全文

基于稀疏学习与遗传算法相结合的神经网络剪枝方法

技术领域

[0001] 本发明属于计算机技术领域,主要涉及一种神经网络的剪枝方法,可用于神经网络的压缩。

背景技术

[0002] 随着深度学习的发展,神经网络在科研以及工业应用领域都取得了较好的成果,但是相较于传统算法,实施神经网络需要消耗大量的存储资源和计算资源,因此神经网络在设备上使用时将产生较大的能耗,这不符合节能理念,同时也限制了神经网络在功耗有限的移动端设备上的使用。神经网络剪枝作为一种压缩神经网络的方法,通过去除神经网络中的冗余成分减少神经网络的存储消耗及计算消耗,从而达到降低运行神经网络时的功耗的目的。
[0003] 目前,神经网络剪枝方法主要分为两大类,即非结构化剪枝与结构化剪枝。其中:
[0004] 非结构化剪枝,是通过去除神经网络中的非重要权重达到压缩神经网络的目的,但这类方法中所去除权重的位置是无序的,因此破环了神经网络原有的数据结构,使得剪枝结果在目前的通用设备上无法获得实际效果。
[0005] 结构化剪枝方法,是通过去除神经网络中的非重要通道达到压缩神经网络的目的,由于去除通道不会破坏神经网络的数据结构,因此这类方法能够很好的运用到现有计算设备上,但是结构化剪枝方法对于神经网络中冗余成分的定位不如非结构化方法精确,所以此类方法对于神经网络的压缩率较低且对神经网络的性能影响较大。

发明内容

[0006] 本发明的目的在于针对上述现有技术的不足,提出一种基于稀疏学习与遗传算法相结合的神经网络剪枝方法,以提高结构化剪枝的压缩率,减少剪枝对网络性能的影响。
[0007] 本发明的技术方案是:通过稀疏学习的方式训练神经网络,得到稀疏化的网络结构;利用遗传算法以及一种动态可调节的评价因子对训练好的神经网络中潜在的子网络进行启发式搜索,并在适应度函数的引导下自动搜索出符合需求的最佳子网络;将得到的最佳子网络进行再训练得到最终剪枝结果。其实现步骤包括如下:
[0008] (1)利用稀疏学习的方式训练神经网络:
[0009] (1a)将神经网络各通道中缩放因子的正则作为惩罚项添加到训练的损失函数中,得到新的损失函数fnew(x);
[0010] (1b)利用训练数据集和随机梯度下降算法训练神经网络,直到(1a)中新的损失函数收敛;
[0011] (2)利用遗传算法搜索最佳子网络:
[0012] (2a)设置最大迭代次数,设置通道压缩率为R%,计算训练后神经网络的总参数量p0和计算量c0;
[0013] (2b)设置10组权重,每组包括两个比值不同的权重;
[0014] (2c)将10组权重编码为10条二进制码,对这些二进制码进行交叉和变异操作产生若干条新的二进制码;
[0015] (2d)对(2c)中所有二进制码进行解码,将每条二进制码解码为一组权重;
[0016] (2e)对(2d)中的每组权重,利用该组权重计算一组评价因子,每组评价因子中评价因子的个数等于神经网络的通道总数,且评价因子与神经网络中的通道是一一对应的关系;
[0017] (2f)将(2e)中的每组评价因子按照从小到大的顺序重新排列,挑选排序后排名前R%的评价因子,并将其所对应的通道从神经网络中删除,从而获得每个子网络;
[0018] (2g)测试(2f)中的每个子网络的准确率ηj,纪录每个子网络的参数量pj和计算量cj,并利用ηj,pj和cj算出每个子网络的适应度fj;
[0019] (2h)根据(2g)中的适应度,从对所有子网络中筛选出10个子网络,保留这些子网络在(2d)中对应的10组权重,并判断当前迭代次数是否达到(2a)中所设置的最大迭代次数,若达到最大迭代次数,则将具有最大适应度的子网络作为最佳子网络输出,否则,返回(2c);
[0020] (3)利用训练数据集和随机梯度下降算法对(2h)中的最佳子网络进行训练,得到训练好的最佳子网络,完成对神经网络的剪枝。
[0021] 本发明具有如下优点:
[0022] 1.网络精度损失小
[0023] 本发明利用稀疏学习的方式训练神经网络,使得神经网络中大部分参数趋近于零,因此大部分参数对网络性能影响很小,所以裁剪掉这些参数几乎不会对神经网络的精度造成影响,使得本发明降低了剪枝带来的精度损失。
[0024] 2.网络压缩率高
[0025] 本发明利用遗传算法对潜在的子网络进行搜索,在保证网络准确率的情况下自动搜索具有更少参数量和计算量的子网络,并且由于网络是通过稀疏学习的方法进行训练的,因此在相同精度下可以裁剪掉更多的参数,提高了的压缩率。
[0026] 3.剪枝可调节
[0027] 本发明利用遗传算法对神经网络中潜在的子网络进行启发式搜索,通过改变适应度的计算方式改变搜索的方向改变最终搜索结果,使得本发明能根据实际需求调节剪枝。
[0028] 仿真结果表明,本发明能有效压缩神经网络并产生很小的精度损失。在基于CIFAR10,CIFAR100和ImageNet数据集的分类任务中对神经网络参数量的平均压缩率达到57.7%,对计算量的平均压缩率达到49.4%,且精度与压缩前持平;在基于VOC2007数据集的检测任务中对神经网络参数量的压缩率达到43.8%,对计算量的压缩率达到30.2%,且精度损失不到3%。
附图说明
[0029] 图1为本发明的实现流程图
[0030] 图2为本发明的仿真结果图。

具体实施方式

[0031] 下面结合附图对本发明的实施例和效果做进一步的详细描述。
[0032] 参照图1,本实例的实现步骤如下:
[0033] 步骤1,利用稀疏学习训练神经网络。
[0034] (1.1)利用神经网络所有通道中的缩放因子构造惩罚项,其公式如下:
[0035]
[0036] 其中,Rs(γ)表示惩罚项,N表示神经网络的总层数,nl表示神经网络中第l层的总通道数,γl,i表示神经网络中第l层第i个通道的缩放因子,|γl,i|表示γl,i的绝对值,ε表示一个常数约束项;
[0037] (1.2)在神经网络原有的交叉熵损失函数fold(x)的基础上将惩罚项Rs(γ)添加到损失函数中,得到新的损失函数fnew(x):
[0038] fnew(x)=fold(x)+λs·Rs(γ),
[0039] 其中,fold(x)表示原始的交叉熵损失函数,x表示输入的训练数据,λs表示一个缩放系数;
[0040] (1.3)从公开数据网站分别下载训练数据集和测试数据集,并将下载的数据转换为张量格式;
[0041] (1.4)将张量格式的数据x输入到神经网络,并计算损失函数fnew(x);
[0042] (1.5)分别计算损失函数fnew(x)中交叉熵损失fold(x)和惩罚项Rs(γ)关于神经网络中参数的偏导,再利用以下公式更新神经网络中的参数:
[0043]
[0044] 其中,θ表示更新前神经网络中的参数,θ'表示更新后神经网络中的参数,μ表示一个步长因子,λs表示一个缩放系数;
[0045] (1.6)重复(1.4)-(1.5),直到损失函数fnew(x)收敛,得到训练好的神经网络。
[0046] 步骤2,利用遗传算法从训练好的神经网络中搜索子网络。
[0047] (2.1)设置最大迭代次数,设置通道压缩率为R%,计算训练后神经网络的总参数量p0和总计算量c0:
[0048]
[0049]
[0050] 其中,N表示神经网络的总层数,nl表示神经网络中第l层的总通道数,kw和kh分别表示神经网络通道中二维卷积核的宽度和长度, 和 分别表示神经网络第l层的输出特征图的宽度和长度;
[0051] (2.2)设置10组权重,每组包括两个权重:
[0052] 首先,在0到1的范围内,按照从小到大的顺序均匀抽取10个随机数分别作为10组权重中的第一权重;
[0053] 然后,在1到0的范围内,按照从大到小的顺序均匀抽取10个随机数分别作为10组权重中的第二权重,得到每组中两个比值不同的权重;
[0054] (2.3)将10组权重编码为10条二进制码;再将任意两条二进制码以50%的概率交叉产生新的二进制码;最后将任意一条二进制码以10%的概率进行变异,产生更多新的二进制码;
[0055] (2.4)将(2.3)中所有二进制码解码,每条二进制码都被解码为一组权重;
[0056] (2.5)对(2.4)中的每组权重,利用该组权重计算一组评价因子,每组评价因子中评价因子的个数等于神经网络的通道个数,其中,每个评价因子的计算公式如下:
[0057]
[0058] 其中, 表示第j组评价因子中对应神经网络第l层第i个通道的评价因子, 和分别表示第j组权重中的第一和第二权重,γl,i和βl,i分别表示神经网络中第l层第i个通道的缩放因子和偏置因子;
[0059] (2.6)将(2.5)中的每组评价因子按照从小到大的顺序重新排列,挑选排序后排名前R%的评价因子,并将其所对应的通道从神经网络中删除,获得每个子网络;
[0060] (2.7)测试(2.6)中的每个子网络的准确率ηj,按照(2.1)中的计算量和参数量的计算公式,分别算出每个子网络的参数量pj和计算量cj,再利用以下公式计算每个子网络的适应度:
[0061]
[0062] 其中,fj表示第j个子网络的适应度,W表示一个用来调整适应度计算的权重因子,当需要参数量更小的子网络时,将W设置在0.5~1范围内,当需要计算量更小的子网络时,将W设置在0~0.5范围内;
[0063] (2.8)将(2.7)中获得的所有子网络的适应度求和作为总适应度fsum,计算每个子网络的适应度fj与总适应度fsum的比值作为每个子网络被选择的概率;
[0064] (2.9)根据各子网络被选的概率以轮盘赌的方法选择10个子网络,并判断10个子网络中是否包含所有子网络中适应度最大的子网络:
[0065] 如果不包含,则将已选中的10个子网络中适应度最小的子网络替换为适应度最大的子网络;
[0066] 如果包含,则判断当前是否已经达到(2.1)中所设置的最大迭代次数:
[0067] 若达到最大迭代次数,则将具有最大适应度子网络作为最佳子网络输出,[0068] 否则,返回(2.3)。
[0069] 步骤3,训练最佳子网络。
[0070] (3.1)将(1.3)中张量格式的数据x输入到子网络,并计算损失函数fnew(x);
[0071] (3.2)计算损失函数fnew(x)中交叉熵损失fold(x)关于子网络中参数的偏导,再利用以下公式对子网络中的参数进行更新:
[0072]
[0073] 其中, 表示更新前子网络中的参数, 表示更新后子网络中的参数,μ表示一个步长因子;
[0074] (3.3)重复(3.1)-(3.2),直到损失函数fnew(x)收敛,获得训练好的子网络,完成神经网络的剪枝。
[0075] 本发明的效果通过以下仿真进一步说明
[0076] 1.仿真实验条件:
[0077] 本发明仿真实验的操作系统为Ubuntu,软件平台为Pytorch,GPU采用英伟达TITAN Xp;
[0078] 本发明仿真实验所使用的数据集包括:CIFAR10,CIFAR100,ImageNet,VOC2007;
[0079] 本发明仿真实验所涉及的神经网络包括:vggA,vgg16,vgg19,resnet20,resnet50,resnet164,yolo-v3。
[0080] 2.仿真实验内容:
[0081] 仿真1,神经网络的训练仿真实验:
[0082] 利用CIFAR100数据集分别以传统训练方式和本发明中稀疏学习的训练方式训练分类神经网络vgg19,结果如图2所示,其中,图2(a)为传统训练方式得到的神经网络中的参数分布图,图2(b)为本发明中稀疏学习的训练方式得到的神经网络中的参数分布图;图2中横坐标表示神经网络中参数的绝对值,纵坐标表示绝对值相同的参数的数量。
[0083] 从图2(a)可以看出传统训练方式得到的神经网络其参数绝大部分不为0,而图2(b)中以稀疏学习的训练方式得到的神经网络其参数绝大部分等于0,裁剪绝对值为0的参数不影响网络的精度,表明本发明对神经网络进行剪枝时的精度损失很少。
[0084] 仿真2,检查神经网络的剪枝仿真实验:
[0085] 利用本发明以及VOC2007数据集对检测神经网络yolo-v3进行训练并完成剪枝,结果如表1所示。
[0086] 表1.检测神经网络剪枝结果表
[0087]
[0088] 其中,参数量的计数单位‘M’表示106个浮点数,‘FPS’表示神经网络每秒处理的图像的数量。
[0089] 从表1中可以看到,本发明对检测神经网络参数量的压缩率为43.8%,对计算量的压缩率为30.2%,且剪枝后所获得的子网络其准确率仅比原网络低不到3%,表明本发明可以有效压缩检测神经网络并产生很小的精度损失。
[0090] 仿真3,分类神经网络的剪枝仿真实验:
[0091] 利用本发明以及CIFAR10数据集分别对分类神经网络vgg16,vgg19,resnet20,resnet164进行训练并完成剪枝;利用本发明以及CIFAR100数据集分别对分类神经网络vgg16,vgg19,resnet20,resnet164进行训练并完成剪枝;利用本发明以及ImageNet数据集分别对分类神经网络vggA,vgg16,resnet50进行训练并完成剪枝,结果如表2所示。
[0092] 表2.分类神经网络剪枝结果表
[0093]
[0094]
[0095] 其中,参数量的计数单位‘M’表示106个浮点数,计算量的计数单位‘B’表示109次浮点运算。
[0096] 从表2中可以看到,本发明对分类神经网络参数量的最高压缩率为91.1%,最低压缩率为22.3%,平均压缩率为57.7%;对分类神经网络计算量的最高压缩率为60.4%,最低压缩率为23.1%,平均压缩率为49.4%;且剪枝后所获得的子网络其错误率与原网络基本一致,表明本发明可以有效压缩分类神经网络并产生很小的精度损失。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈