一种基于剪枝顺序主动学习的模型压缩方法与流程

文档序号:17466453发布日期:2019-04-20 05:32阅读:298来源:国知局
一种基于剪枝顺序主动学习的模型压缩方法与流程

本发明属于神经网络模型技术领域,尤其涉及一种基于剪枝顺序主动学习的模型压缩方法。



背景技术:

近年来,随着深度神经网络的蓬勃发展,学术圈和工业界共同目睹了深度学习在计算机视觉、自然语言处理等众多领域的重大突破。卷积神经网络(cnn)在某些视觉领域的表现力,甚至超过了人类的视觉处理能力。

尽管深度网络在视觉领域取得重大的突破,但模型的大小和计算量却成为其在实际应用中的瓶颈。深度网络应用在现实场景,需要依附硬件的快速计算能力、大量存储空间和电池容量。大规模神经网络可以高效地运行在机房的服务器中,由gpu快速计算,却难以应用在资源有限的移动设备和低频cpu,比如智能手机、可穿戴装备等。受此限制,深度学习的众多科研成果难以转化到实际可应用的场景。为了解决这个难题,近年来研究人员提出了很多模型压缩的方法,旨在压缩模型大小,提高模型运行速度,且尽量保持模型精度不变,从而实现将压缩后的模型移植到小型设备中使用。模型压缩的本质,是产生一个小型模型,使它和大规模网络有着同样的表现力。这对研究人员来说是一个极大的挑战,大规模网络是经过专家学者精心设计并验证有效的网络结构,学习到的每一个参数都对网络整体的表现做出贡献,不恰当的舍弃某些参数势必会损害模型效果。实际场景如果需要一个极其小的模型,则需要平衡模型复杂度和模型效果之间的关系,适当做出某方面舍弃

主流的模型压缩方法分为几个分支,第一类是“神经网络修剪”,包括稀疏化剪枝和结构化剪枝两个方法。剪枝方法的重点在评估网络连接权重,剪掉对网络影响较小的权重,并且通过重训练来恢复模型的精度。稀疏化剪枝零散地剪掉网络中低重要性连接,可以很大程度上压缩模型大小,减小内存开销;但受限于底层库的实现,在网络加速上仍存在困难。而结构化剪枝可以很好地保持卷积核结构的规则形状,通常以卷积核作为剪枝基本单位;结构化剪枝后的网络模型,结构规则且完整,可以直接按照传统卷积方法进行加速处理。另一类是“神经网络参数转移和共享”,即通过参数量化、低阶估计或者知识萃取等方式压缩网络模型。神经网络参数转移和共享的方法通常作为模型剪枝的后续压缩步骤,可以进一步压缩网络模型;单独使用无法在保持模型精度的情况下大规模压缩网络体积。第三类是“神经网络结构设计”,通过人为设计新的网络结构,或者机器自动搜索设计网络结构的方法,直接设计一款小型神经网络。自动设计网络可以释放人工劳动,给特定场景,特定数据的任务量身定做最合适的网络结构,但是该方法的复杂度非常高,需要消耗大量的计算资源,否则无法达到既定目标。

从目前的情况来看,结构化剪枝是在压缩网络体积和提高模型运行速度两方面最有效的方法。现有的结构化剪枝技术主要包括采用顺序剪枝或者全局剪枝两种方式。顺序剪枝预先设定了剪枝顺序,按照从前到后、从后到前的方式逐层剪枝,在每一层按照一定比例减去相对不重要的卷积核。全局剪枝方式设定一个重要性阈值,在每一轮剪枝过程中,小于该阈值的该网络所有卷积核被同时剪掉。实际上,深度模型压缩是一个系统级别的任务,需要根据全局模型做出剪枝决策。现有方法将研究重点放在评估卷积核重要性上,但剪枝策略过于简单,导致效果并不理想。然而,有一个重要的现象被忽视,每个卷积层有着不同的重要性:如果在一个重要的卷积层上减去极少数卷积核,整体模型的精度也可能会大幅下降;反之,如果在一个不重要的卷积层上,即使剪去大量卷积核,也可几乎不对精度造成影响,按照顺序剪枝或者全局剪枝的方式显然没有考虑到各个卷积层的重要性对剪枝结果产生的影响。



技术实现要素:

为了解决上述技术问题,本发明提供一种基于剪枝顺序主动学习的模型压缩方法,包括:

s1.利用lstm学习网络时序特征,做出每一网络层是否需要剪枝的决策;

s2.在选定的网络层对该网络层的网络层参数进行评估和裁剪,并提出恢复机制对剪枝后模型精度进行即刻恢复;

s3.对剪枝后的模型利用导师网络进行加速重训练;

s4.根据剪枝后重训练的模型的表现力和复杂度,得到反馈激励r,用增强学习方法更新lstm;

s5.选取反馈激励最高的5个模型作为新一轮lstm的输入,重复步骤1-步骤4,直至lstm不再产生更优的剪枝决策时终止训练过程,得到最优的剪枝后模型。

进一步的,所述步骤s1包括:

(1)首先将神经网络模型用字符串表示出来,作为lstm的输入,具体方式为:

用(mi,ni)表示神经网络的第i个节点ξi,其中,m表示节点类型,取值于{0,1,2},分别代表卷积,池化和全连接操作;n表示节点属性值,当该节点为卷积时,n代表该层卷积核数量;当该节点为池化时,n代表池化步长;当该节点为全连接时,n代表该层神经元数量;

(2)获取lstm剪枝决策,具体包括:

在每个时刻,一个主节点和它的下一个节点作为多层lstm的输入,该输入可表示为[mi,ni,mi+1.ni+1];lstm利用softmax函数对当前输入的主节点做出是否剪枝的决策,辅助节点只提供辅助信息,不对其进行剪枝预测。

进一步的,所述网络层包括卷积层和/或全连接层;卷积层的网络层参数为卷积核,全连接层的网络层参数为全连接参数。

进一步的,在步骤s2中,在卷积层对卷积核进行评估和裁剪的方法包括:

通过计算第i+1个卷积层中每个通道集的l2范数,得到重要性分数sj,具体如以下公式:

sj=||ci+1,j||2,s.t.j∈[1,xi]

其中,ci+1,j表示第i+1个卷积层的第j个通道集,s.t.代表subjectto的缩写,xi表示在第i个卷积层的卷积核数量;

根据压缩率,选择并裁剪第i+1个卷积层中重要性分数sj最小的通道集和它们对应的第i个卷积层中的卷积核。

进一步的,所述恢复机制包括:选择第i+1个卷积层的一部分卷积核并按照一定比例放大卷积核参数,具体如以下公式:

其中,fi+1,j表示第i+1个卷积层的第j个卷积核;表示剪枝过的第i+1个卷积层的第j个卷积核;a是一个超参数,用来选择偏差值较大的卷积核。

进一步的,在步骤s3中,采用知识萃取的方法加速重训练过程,将lstm的输入模型作为老师网络,剪枝后的模型作为学生网络,学生网络学习老师网络输出的各类别分类概率z,z相比于训练标签包含丰富的知识,包含类别间相似性和差异性。

进一步的,在步骤s4中,反馈激励r由如下公式计算得到:

r=performance-λ×complexity

其中,表现力performance由模型在验证集的准确率或者训练集的损失表示;复杂度complexity由模型flops或者参数量大小表示;λ是一个超参数,需要通过实验的交叉验证来选择最优值。

与现有技术相比,本发明的有益效果在于:

本发明提供的基于剪枝顺序主动学习的模型压缩方法提出了一个端到端的基于顺序主动学习的剪枝框架,可以主动学习网络各层的重要性,生成剪枝优先级,做出合理的剪枝决策,解决了已有简单顺序剪枝方法的不合理问题,优先在影响力最小的网络层剪枝,从简到难逐步剪枝,最小化剪枝过程的模型精度损失;同时以模型最终损失为导向,多角度、高效、灵活快速地评估卷积核重要性,以保证全流程模型压缩的正确性和有效性,为后续的大模型移植到便携设备提供技术支撑。实验结果表明,本发明提供的基于剪枝顺序主动学习的模型压缩方法在多个数据集、多模型结构下表现领先,可以在保证模型精度的情况下,极大压缩模型体积,具有很强的实际应用前景。

附图说明

图1为基于剪枝顺序主动学习的模型压缩方法的流程图。

具体实施方式

下面以仅针对卷积层进行剪枝为例来对本发明提供的模型压缩方法进行详细地说明。

一种基于剪枝顺序主动学习的模型压缩方法,如图1所示,包括:

s1.利用lstm(longshort-termmemory)学习网络时序特征,做出每一卷积层是否需要剪枝的决策;

s2.在选定的卷积层对卷积核进行评估和裁剪,卷积核评估方法考虑到前后两个卷积层的关联性,采用非数据驱动的方法快速评估卷积核重要性,并提出恢复机制对剪枝后模型精度进行即刻恢复;

s3.对剪枝后的模型利用导师网络进行加速重训练;

s4.计算剪枝后重训练的模型的表现力和复杂度,得到反馈激励r,用增强学习方法更新lstm;

s5.将剪枝后重训练的模型在本地进行保存,选取反馈激励最高的5个模型作为新一轮lstm的输入,重复步骤1-步骤4,直至lstm不再产生更优的剪枝决策时终止训练过程,得到最优的剪枝后模型。通过反复迭代,lstm能够更好的分析网络模型结构,提出正确的剪枝顺序,使得整个剪枝过程精准有效。

其中,步骤s1包括:

(1)首先将神经网络模型用字符串表示出来,作为lstm的输入,具体方式为:

用(mi,ni)表示神经网络的第i个节点ξi,其中,m表示节点类型,取值于{0,1,2},分别代表卷积,池化和全连接操作;n表示节点属性值,当该节点为卷积时,n代表该层卷积核数量;当该节点为池化时,n代表池化步长;当该节点为全连接时,n代表该层神经元数量;采用上述方式,将每一个节点用两个数值来表示,则一个神经网络都可以用字符串表示出来;

其中,卷积可以进行剪枝操作,称为主节点;而其他节点始终保持不变,称作辅助节点,用于提供神经网络的辅助信息;

(2)获取lstm剪枝决策,具体包括:

在每个时刻,一个主节点和它的下一个节点(包括主节点和辅助节点)作为多层lstm的输入,该输入可表示为[mi,ni,mi+1.ni+1];lstm利用softmax函数对当前输入的主节点做出是否剪枝的决策,辅助节点只提供辅助信息,不对其进行剪枝预测;对于一个有n个主节点的网络结构,lstm输入共包含n个时刻,即重复上述步骤n次;辅助节点同主节点一同作为每个时刻的lstm输入,但不能得到剪枝决策,只是作为辅助信息帮助lstm更好的理解整个网络。

在步骤s2中,对卷积核进行评估和裁剪具体包括:

定义一个超参数rprune,在需要剪枝的卷积层i去掉(rprune×xi)卷积核,xi表示在第i个卷积层的卷积核数量。

一个卷积操作可由三元组<ii,wi,oi>表示,其中代表第i个卷积的输入张量,包括通道数xi-1,高度h,宽度w,表示实数集;卷积核张量其中卷积核形状为k×k,输入张量的通道数为xi-1;输出张量oi的通道数为xi。

从卷积核的角度来看,wi包含xi个卷积核从通道的角度来看,wi包含xi-1个通道集

当某一卷积层第j个卷积核被剪掉时,它下一卷积层对应的第j个通道集ci+1,j变得无效,也需要同时被剪掉;而网络中其他卷积层不受剪枝的影响,结构保持不变。

第i个卷积层被剪掉卷积核后,第i+1个卷积层的输出偏差转移到最终的损失函数,直接导致了网络精度的损失;去除重要性低的第i层卷积核,以及对应的第i+1通道集,可以使输出偏差δoi+1最小;由于在两个卷积层之间通常存在激活函数,批正则或者池化操作,相比于第i层的卷积核fi,第i+1层通道集ci+1对输出值oi+1有更直接的影响;因此可以通过评估第i+1层通道集的重要性,来间接评估第i层卷积核的重要性。

本发明利用l2范数来评估通道集的重要性,因为l2范数除了考虑到数值大小外,还考虑了数值间差异;通道集的l2范数和可以在一定程度上体现输出特征值的大小,l2较小的通道集倾向于产生弱激活的输出,而绝对值较大的倾向于产生强激活的输出。

通过计算第i+1个卷积层中每个通道集的l2范数,得到重要性分数sj,具体如以下公式:

sj=||ci+1,j||2,s.t.j∈[1,xi]

其中,ci+1,j表示第i+1个卷积层的第j个通道集,s.t.代表subjectto的缩写,xi表示在第i个卷积层的卷积核数量;

根据压缩率,选择并裁剪第i+1个卷积层中重要性分数sj最小的通道集和它们对应的第i个卷积层中的卷积核。

在步骤s2中,在对通道集和卷积核进行剪枝后,fi+1变成ci+1变成模型参数的减少势必造成精度的损失。为了减少损失,最小化输出偏差δoi+1,在对一个卷积核进行剪枝后,立刻使用恢复机制,以恢复部分损失。

恢复机制具体包括:

选择第i+1层的一部分卷积核并按照一定比例放大卷积核参数,具体如以下公式:

其中,fi+1,j表示第i+1个卷积层的第j个卷积核;表示剪枝过的第i+1个卷积层的第j个卷积核;a是一个超参数,用来选择偏差值较大的卷积核。最优a将通过交叉验证的方式获得。

在步骤s3中,为了提高模型重训练的效率,采用知识萃取的方法加速重训练过程。将lstm的输入模型作为老师网络,剪枝后的模型作为学生网络,学生网络学习老师网络输出的各类别分类概率z。z相比于训练标签包含丰富的知识,包含类别间相似性和差异性。因此剪枝后的模型可以在学习同样多知识内容的条件下,节省训练时间。

如下公式呈现了剪枝后的模型训练的损失函数g,利用l2范数,最小化老师和学生的输出分类概率。

将基于数据标签的交叉熵损失函数f(x,y,θ)和基于导师的损失函数g(x,z,θ)做加权结合,得到最终的损失函数l,参见如下公式。

l=βf(x,y,θ)+g(x,z,θ)

其中,x表示数据,y表示数据标签,θ表示模型参数,β为权重超参数,通过实验得到最优值。

步骤s4包括:

(1)按照以下公式计算反馈激励r:

r=performance-λ×complexity

其中,表现力performance由模型在验证集的准确率或者训练集的损失表示;复杂度complexity由模型flops(浮点运算次数)或者参数量大小表示;λ是一个超参数,需要通过实验的交叉验证来选择最优值。

(2)使用增强学习中标准的策略梯度算法来训练lstm,使其产生更好的剪枝决策,具体如下:

关于具体如何使用增强学习中标准的策略梯度算法训练lstm以及公式中各部分的具体含义可以参考ronaldj.williams于1992年在machinelearning期刊上发布的《simplestatisticalgradient-followingalgorithmsforconnectionistreinforcementlearning》(8(3-4):229–256,1992.)。

在本发明提供的模型压缩方法中,根据神经网络的结构特征,也可以仅对全连接层进行剪枝,或同时对卷积层和全连接层进行剪枝。在全连接层中裁剪的对象是全连接参数。

效果评价

通过在图像分类领域的三个标准数据集cifar10、cifar100、mnist,三个常用网络结构vgg、resnet、三层全连接网络上的实验,本发明提供的基于剪枝顺序主动学习的模型压缩方法表现出了有效性。具体来说,在cifar10数据集中,vgg19网络的压缩率在基本保持精度不变的情况下可达到84.7%,resnet的压缩率可达34.1%,同时精度提升0.56%;cifar100数据集中;vgg19网络的压缩率在保持精度不变的情况下可达到70.1%;mnist数据集中,三层全连接网络的压缩率在基本保持精度不变的情况下可达到87.27%。vgg19在cifar10的实验同时表明lstm指导剪枝可以很好地表现网络各层的敏感度。并且本发明提供的基于剪枝顺序主动学习的模型压缩方法经实验验证优于基于卷积核的非数据驱动方法。以上实验结果均领先于目前已有剪枝方法,证明了本发明提供的基于剪枝顺序主动学习的模型压缩方法的有效性。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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