CN114091668A - 基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 - Google Patents
基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 Download PDFInfo
- Publication number
- CN114091668A CN114091668A CN202111387877.7A CN202111387877A CN114091668A CN 114091668 A CN114091668 A CN 114091668A CN 202111387877 A CN202111387877 A CN 202111387877A CN 114091668 A CN114091668 A CN 114091668A
- Authority
- CN
- China
- Prior art keywords
- neural network
- pruning
- micro
- layer
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Feedback Control In General (AREA)
Abstract
本发明提出一种基于可微决策器和知识蒸馏的神经网络剪枝方法及系统,包括:对神经网络进行预训练;为预训练后的神经网络中的每一层卷积层构建可微决策器,对网络中的每一层进行采样并截断,得到每一层的剪枝率;对神经网络进行剪枝,得到剪枝后的网络;使用知识蒸馏方法对神经网络进行优化;对优化后的神经网络进行训练,恢复其准确度。通过在神经网络中的每一层卷积层构建可微决策器,并优化可微决策器的可训练参数,不需要人类专家的经验和人工的设计,减少人工的参与,实现快速自动化准确的神经网络结构搜索,得到神经网络的剪枝率,对神经网络进行剪枝,得到最优的神经网络结构并节省大量时间。
Description
技术领域
本发明涉及深度学习领域,更具体地,涉及一种基于可微决策器和知识蒸馏的神经网络剪枝方法及系统。
背景技术
近年来,深度学习在图像识别、自然语言处理和物体检测等领域有着广泛的应用且取得了不错的成就。深度神经网络的发展也让深度学习研究更加火热,越来越大的神经网络模型不断地刷新着深度学习任务的榜单。然而,庞大的网络模型难以部署到大多数资源有限的设备上,这大大限制了深度学习的落地应用。因此,针对以上问题,人们提出了许多模型压缩的方法,如剪枝、知识蒸馏、量化和低秩近似等,且都取得了不错的效果。
现有的神经网络是过参数化的,即神经网络中存在着大量的冗余参数。神经网络剪枝是通过剪除神经网络中的冗余参数,以此来达到缩减网络模型的大小和计算量的目的。在卷积神经网络中,主要的参数存在于滤波器中。因此,对卷积神经网络剪枝就是剪除其每一层中的一定数量的滤波器,以此来减少网络参数量。而在卷积神经网络中,滤波器的个数与输出通道的个数相等,因此,剪除通道数和剪除滤波器是一致的。换句话说,卷积神经网络剪枝就是通过剪除每一层的特定数量的通道,以找到每一层应该要保留的通道,以得到压缩后的网络。
现有一种基于多层级知识蒸馏的预训练语言模型自动压缩方法,所述方法包括如下步骤:步骤一、构建多层级知识蒸馏,在自注意力单元、隐藏层状态、嵌入层三个不同层级上蒸馏大模型的知识结构;步骤二、训练元学习的知识蒸馏网络,生成多种预训练语言模型的通用压缩架构;步骤三、基于进化算法搜索最佳压缩结构。首先,研究基于元学习的知识蒸馏生成多种预训练语言模型的通用压缩架构;其次,在已训练好的元学习网络基础上,通过进化算法搜索最佳压缩结构,由此得到与任务无关的预训练语言模型的最优通用压缩架构。
然而,上述方法基于进化算法的对压缩结构进行搜索,需要花费大量的时间来挑选候选网络进行演化,很大程度地降低了网络的压缩效率。
发明内容
本发明为提高神经网络的压缩效率,提供一种基于可微决策器和知识蒸馏的神经网络剪枝方法及系统。
为解决上述技术问题,本发明的技术方案如下:
第一个方面,本发明提出一种基于可微决策器和知识蒸馏的神经网络剪枝方法,包括以下步骤:
S1:对待剪枝的神经网络进行预训练;
S2:为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率;
S3:根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络;
S4:使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络;
S5:对优化后的神经网络进行训练,得到经过剪枝且恢复准确度的神经网络。
优选地,S2具体包括以下步骤:
S2.1:为神经网络中的每一层卷积层添加一个可训练的可微决策器参数αi和一个预设的方差σ2,可微决策器参数αi和方差σ2组成高斯分布N(αi,σ2),所述高斯分布N(αi,σ2)为神经网络第i层的可微决策器;整体神经网络的可微决策器的公式如下所示:
D={N(α1,σ2),N(α2,σ2),N(α3,σ2),...,N(αn,σ2)}
其中,n表示要剪枝的网络的层数;
S2.2:使用可微决策器N(αi,σ2)对神经网络的第i层进行采样并截断,得到第i层的剪枝率ri,并计算出剪枝率ri对应的分布概率pi。
优选地,S2.3:计算剪枝率ri对应的期望值Exi,具体包括以下步骤:
S2.3.1:使用可微决策器N(0,1)对神经网络的第i层采样得到数值ε;
S2.3.2:将xi=ε*σ+αi设为可微决策器N(αi,σ2)的采样结果,则剪枝率ri对应的期望值Exi=xi/M;其中,M为采样的次数。
优选地,S3具体包括以下步骤:
S3.1:根据神经网络的第i层的剪枝率ri和第i层的原始输出通道数,确定第i层剪枝后的输出通道数ci,其公式如下所示:
ci=ri*cimax
其中,cimax表示第i层的原始输出通道数;
S3.2:根据输出通道数ci对神经网络的第i层进行剪枝,得到剪枝后的神经网络,具体为:将神经网络第i层的前ci个输出通道对应的输出特征图保留,其余的输出通道置零。
优选地,S3还包括以下步骤:
S3.3:使用通道对齐方法,对剪枝后神经网络的第i层的输出特征图进行加权求和,将加权求和后的结果作为第i层的输出;
S3.4:根据剪枝率期望值Exi计算剪枝后神经网络的第i层的浮点运算数。
优选地,S3.3具体包括以下步骤:
S3.3.1:选择最大的输出特征图的输出通道数作为需要对齐的目标输出通道数;
S3.3.2:对输出通道数小于目标输出通道数的输出特征图进行池化操作,使得输出特征图的输出通道数与目标输出通道数对齐;
S3.3.3:以分布概率pi作为权重,将对齐后的输出特征图进行加权求和,作为神经网络第i层的输出,并输出到下一层。
优选地,S3.4具体包括以下步骤:
S3.4.1:计算剪枝后神经网络第i层的输出通道数O,其公式如下所示:
O=Exi*cimax
S3.4.2:计算第i层卷积层的浮点运算数flops_conv,其公式如下所示:
flops_conv=k*k*I*O*W*H
其中,k表示第i层卷积层的kernel_size,I表示剪枝后神经网络第i层的输入通道数,W*H表示剪枝后神经网络第i层的输出特征图大小;
S3.4.3:计算全连接层的浮点运算数flops_fc,其公式如下所示:
flops_fc=I*O
S3.4.4:将剪枝后神经网络所有层卷积层浮点运算数flops_conv和全连接层浮点运算数flops_fc相加,得到剪枝后神经网络的浮点运算数。
优选地,S4具体包括以下步骤:
S4.1:固定可微决策器的参数,使用随机梯度下降法SGD训练一回合剪枝后的神经网络,其中训练的目标函数为交叉熵损失函数,其公式如下所示:
Loss_net=CELoss(zO,t;θ)
其中,z0表示剪枝后的神经网络的输出,t表示真实标签,θ表示网络参数,CELoss表示交叉熵损失函数;
S4.2:将未剪枝、经过预训练的神经网络设为教师网络,将剪枝后的神经网络设为学生网络,固定教师网络和学生网络的参数,使用知识蒸馏的方法优化可微决策器的参数,此时教师网络和学生网络的目标函数如下所示:
Loss_dec=Loss_hard+Loss_KD+Loss_flops
Loss_hard=CELoss(z,t;θ′)
Loss_flops=|flops-rO*max_flops|
其中,z表示学生网络的输出,t表示真实标签,θ′表示训练后的网络参数,z′表示学生网络的软输出,v表示教师网络的软输出,T表示温度系数,β表示蒸馏系数,Fi和F′i分别表示学生网络和教师网络第i层的输出特征图,max_flops表示教师网络的FLOPs,p表示全局目标剪枝率;CELoss表示交叉熵损失函数,KL_Div表示KL散度损失函数,MSELoss表示均方差损失函数;
S4.3:使用梯度下降法Adam优化CELoss、KL_Div和MSELoss损失函数,进而优化可微决策器的参数,使可微决策器找到更好的神经网络结构。
优选地,S5具体为:将未剪枝、经过预训练的神经网络中的参数迁移到S4中经过优化后的神经网络中,再对经过优化后的神经网络进行训练,恢复其准确度。
第二个方面,本发明还提出一种基于可微决策器和知识蒸馏的神经网络剪枝系统,包括:
预训练模块,用于对待剪枝的神经网络进行预训练;
决策模块,用于为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率;
剪枝模块,用于根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络;
优化模块,用于使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络;
恢复模块,用于对优化后的神经网络进行训练,使其恢复准确度。
与现有技术相比,本发明技术方案的有益效果是:通过在神经网络中的每一层卷积层构建可微决策器,并优化可微决策器的可训练参数,不需要人类专家的经验和人工的设计,减少人工的参与,实现快速自动化准确的神经网络结构搜索,得到神经网络的剪枝率,对神经网络进行剪枝,得到最优的神经网络结构并节省大量时间。
附图说明
图1为基于可微决策器和知识蒸馏的神经网络剪枝方法的流程图。
图2为基于可微决策器和知识蒸馏的神经网络剪枝方法的网络框架图。
图3为基于可微决策器和知识蒸馏的神经网络剪枝系统的架构图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
请参阅图1,本实施例提出一种基于可微决策器和知识蒸馏的神经网络剪枝方法,包括以下步骤:
S1:对待剪枝的神经网络进行预训练得到一个性能较高,但模型较大的目标网络。
S2:为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率;
S3:根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络;
S4:为了使可微决策器更好的做出决策,搜索到性能更好的网络结构,使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络;
S5:将未剪枝、经过预训练的神经网络中的参数迁移到S4中经过优化后的神经网络中,再对经过优化后的神经网络进行少量回合的训练,恢复其准确度。
在具体实施过程中,通过在神经网络中的每一层卷积层构建可微决策器,并优化可微决策器的可训练参数,不需要人类专家的经验和人工的设计,减少人工的参与,实现快速自动化准确的神经网络结构搜索,得到神经网络的剪枝率,对神经网络进行剪枝,得到最优的神经网络结构并节省大量时间。
实施例2
请参阅图1-图2,本实施例提出一种基于可微决策器和知识蒸馏的神经网络剪枝方法,包括以下步骤:
S1:对待剪枝的神经网络进行预训练,得到一个性能较高,但模型较大的目标网络。所述神经网络包括VGG、ResNeT和MobileNet等含有卷积层的卷积神经网络。
本实施例中,对ResNet20和ResNet56进行压缩,使用的数据为集是公开数据集CIFAR10。
S2:为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率,具体包括以下步骤:
S2.1:为神经网络中的每一层卷积层添加一个可训练的可微决策器参数αi和一个预设的方差σ2,可微决策器参数αi和方差σ2组成高斯分布N(αi,σ2),所述高斯分布N(αi,σ2)为神经网络第i层的可微决策器;整体神经网络的可微决策器的公式如下所示:
D={N(α1,σ2),N(α2,σ2),N(α3,σ2),...,N(αn,σ2)}
其中,n表示要剪枝的网络的层数;对于神经网络的所有层,预设的方差是相等的,因此,将可微决策器简写为:
D={A,σ2}
其中,A=(α1,α2,α3,...,αn,)为可微决策器的参数。
本实施例中,只对ResNet20和ResNet56的每一个残差块的第一层卷积层进行剪枝,因为有研究表明对第二层卷积层剪枝会大大损害网络的性能。因此,本实施例中ResNet20要剪枝的层数为9,即n=9;ResNet56要剪枝的层数为27,即n=27。
本实施例中,预设的方差σ2初始值设为0.1,之后其会随着剪枝的进行不断减小,其中,衰减方法使用的是余弦衰减。
S2.2:使用可微决策器N(αi,σ2)对神经网络的第i层进行采样并截断,得到第i层的剪枝率ri,并计算出剪枝率ri对应的分布概率pi。
本实施例中,为使得之后计算结果更加准确,需要采样多个剪枝率(ri1,ri2,...)和计算相应的分布概率(pi1,pi2...)。本实施例选择采样两次剪枝率。
S2.3:计算剪枝率ri对应的期望值Exi,本实施例使用重采样算法得到可导的剪枝率期望值Exi,具体包括以下步骤:
S2.3.1:使用可微决策器N(0,1)对神经网络的第i层采样得到数值ε;
S2.3.2:将xi=ε*σ+αi设为可微决策器N(αi,σ2)的采样结果,则剪枝率ri对应的期望值Exi=xi/M;可知,xi对αi是可导的。其中,M为采样的次数,本实施例设M=100。
通过逐层决策,可以得到神经网络所有层的剪枝率及其对应的分布概率和输出通道数。
S3:根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络,具体包括以下步骤:
S3.1:根据神经网络的第i层的剪枝率ri和第i层的原始输出通道数,确定第i层剪枝后的输出通道数ci,其公式如下所示:
ci=ri*cimax
其中,cimax表示第i层的原始输出通道数;
S3.2:根据输出通道数ci对神经网络的第i层进行剪枝,得到剪枝后的神经网络,具体为:将神经网络第i层的前ci个输出通道对应的输出特征图保留,其余的输出通道置零,以消除多余通道的作用,达到剪枝的效果,同时保留了原有的网络结构,方便进行不同的剪枝率的剪枝。
S3.3:使用通道对齐方法,对剪枝后神经网络的第i层的输出特征图进行加权求和,将加权求和后的结果作为第i层的输出。在S2.2中,在神经网络中的每一层卷积层都采样了两个剪枝率并分别计算了其分布概率,因此,每一层都将得到两个输出通道数。经过剪枝后,每一层网络也将得到两个不同通道数的输出特征图。每个剪枝率对应一个分布概率,并对应一个输出特征图。这里将分布概率作为权值,对每一层的多个输出特征图进行加权求和,作为每一层的最终输出,具体包括以下步骤:
S3.3.1:选择最大的输出特征图的输出通道数作为需要对齐的目标输出通道数;
S3.3.2:对输出通道数小于目标输出通道数的输出特征图进行池化操作,使得输出特征图的输出通道数与目标输出通道数对齐;本实施例使用自适应平均池化,将所有输出特征图的输出通道都扩展到目标输出通道数,使得它们的输出通道数对齐。
S3.3.3:以分布概率pi作为权重,将对齐后的输出特征图进行加权求和,作为神经网络第i层的输出,并输出到下一层。
S3.4:根据剪枝率期望值Exi计算剪枝后神经网络的第i层的浮点运算数,以约束网络的计算成本和模型大小,实现可控的压缩,具体包括以下步骤:
S3.4.1:计算剪枝后神经网络第i层的输出通道数O,其公式如下所示:
O=Exi*cimax
S3.4.2:计算第i层卷积层的浮点运算数flops_conv,其公式如下所示:
flops_conv=k*k*I*O*W*H
其中,k表示第i层卷积层的kernel_size,I表示剪枝后神经网络第i层的输入通道数,W*H表示剪枝后神经网络第i层的输出特征图大小;
S3.4.3:计算全连接层的浮点运算数flops_fc,其公式如下所示:
flops_fc=I*O
S3.4.4:将剪枝后神经网络所有层卷积层浮点运算数flops_conv和全连接层浮点运算数flops_fc相加,得到剪枝后神经网络的浮点运算数。
本实施例中,分布概率pi是由决策器N(αi,σ2)计算得到,因此pi对αi是可导的。而网络的输出特征图是以多个分布概率作为权值加权求和得到的,因此,网络的输出特征图对pi是可导的,则网络的输出特征图对αi也是可导的,最后整个网络的损失也将对αi是可导的。而且,浮点运算数计算使用的剪枝率期望值Exi对αi也是可导的。因此,使用梯度下降的方法端到端的优化决策器,可以找到更好的网络结构。
S4:为了使可微决策器更好的做出决策,搜索到性能更好的网络结构,使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络,具体包括以下步骤:
S4.1:固定可微决策器的参数,使用随机梯度下降法SGD训练一回合剪枝后的神经网络,其中训练的目标函数为交叉熵损失函数,其公式如下所示:
Loss_net=CELoss(zO,t;θ)
其中,z0表示剪枝后的神经网络的输出,t表示真实标签,θ表示网络参数,CELoss表示交叉熵损失函数;本实施例中,随机梯度下降法SGD的初始学习率lr=0.1,动量momentum=0.9,权重衰减weight_decay=0.0005,学习率使用余弦衰减来调整。
S4.2:将未剪枝、经过预训练的神经网络设为教师网络,将剪枝后的神经网络设为学生网络,固定教师网络和学生网络的参数,使用知识蒸馏的方法优化可微决策器的参数,此时教师网络和学生网络的目标函数如下所示:
Loss_dec=Loss_hard+Loss_KD+Loss_flops
Loss_hard=CELoss(z,t;θ′)
Loss_flops=|flops-rO*max_flops|
其中,z表示学生网络的输出,t表示真实标签,θ′表示训练后的网络参数,z′表示学生网络的软输出,v表示教师网络的软输出,T表示温度系数,β表示蒸馏系数,Fi和F′i分别表示学生网络和教师网络第i层的输出特征图,max_flops表示教师网络的FLOPs,rO表示全局目标剪枝率;CELoss表示交叉熵损失函数,KL_Div表示KL散度损失函数,MSELoss表示均方差损失函数;
本实施例中,全局剪枝率rO=0.5,温度系数T=4,参数=0.9。为减小计算量,本实施例没有使用所有层的特征图来计算Loss_KD,而是使用了ResNet20和ResNet56的每个阶段的最后一层的特征图来计算损失。对于ResNet20,使用的是第7、13、19层特征图。对于ResNet56,使用的是第19、37、55层的特征图。
S4.3:使用梯度下降法Adam优化CELoss、KL_Div和MSELoss损失函数,进而优化可微决策器的参数,使可微决策器找到更好的神经网络结构。
本实施例中,Adam的初始学习率lr=0.1,权重衰减weight_decay=0.0005,优化器参数beta=(0.5,0.999)。
本实施例将知识蒸馏和剪枝有机地结合起来,利用知识蒸馏指导剪枝的优化过程,使得可微决策器能获得更好的优化方向,做出更好的决策,找到性能更好的网络结构。
最后,将S2、S3和S4的完成视为一个回合,不断重复这样的回合,直到达到设定的最大回合数,代表神经网络剪枝结束,得到最终剪枝后的神经网络。本实施例的最大回合数为300。
S5:将未剪枝、经过预训练的神经网络中的参数迁移到S4中经过优化后的神经网络中,再对经过优化后的神经网络进行少量回合的训练,恢复其准确度。本实施例中,对经过优化后的神经网络进行了120个epoch的恢复训练。
表1剪枝前后模型大小和精度对比
本实施例的实验结果记录在表1,表1为剪枝前后神经网络模型大小和精度对比。从表1中可知,本发明提出的方法能有效压缩目标神经网络至指定压缩率。而且,神经网络经过剪枝和恢复训练后,神经网络的准确度与未剪枝前的准确度相差较小,这很好的说明本发明提出的方法是有效且高效的。
在具体实施过程中,使用可微决策器来决定神经网络每一层的剪枝率,从而获得每一层要保留的输出通道数,获得神经网络的结构。可微决策器由可训练的参数组成,可微决策器与整个神经网络是相连的,网络的损失对决策器参数是可导的,因此可以通过端到端的训练来优化决策器参数,实现快速准确的网络结构搜索。相比以往的基于规则的方法,本方法可自动的搜索到网络各层的剪枝率,而且不需要人类专家的经验和人工的设计,减少人工的参与,实现了剪枝的自动化。相比于基于进化算法的剪枝方法,本发明可利用神经网络的梯度信息优化可微决策器参数,即优化网络结构,具有更高的搜索效率,可节省大量时间。
另外,本发明还将知识蒸馏和剪枝有机地结合起来,利用知识蒸馏指导剪枝的优化过程,使得可微决策器能获得更好的优化方向,做出更好的决策,找到性能更好的网络结构。
实施例3
请参阅图3,本实施例还提出一种基于可微决策器和知识蒸馏的神经网络剪枝系统,应用于上述实施例提出的基于可微决策器和知识蒸馏的神经网络剪枝方法,包括:预训练模块、决策模块、剪枝模块、优化模块和恢复模块。
在具体实施过程中,预训练模块对待剪枝的神经网络进行预训练,得到一个性能较高,但模型较大的目标网络。决策模块为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率。剪枝模块根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络。优化模块使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络。恢复模块将未剪枝、经过预训练的神经网络中的参数迁移到优化模块中经过优化后的神经网络中,再对经过优化后的神经网络进行少量回合的训练,恢复其准确度。
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,包括以下步骤:
S1:对待剪枝的神经网络进行预训练;
S2:为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率;
S3:根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络;
S4:使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络;
S5:对优化后的神经网络进行训练,得到经过剪枝且恢复准确度的神经网络。
2.根据权利要求1所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S2具体包括以下步骤:
S2.1:为神经网络中的每一层卷积层添加一个可训练的可微决策器参数αi和一个预设的方差σ2,可微决策器参数αi和方差σ2组成高斯分布N(αi,σ2),所述高斯分布N(αi,σ2)为神经网络第i层的可微决策器;整体神经网络的可微决策器的公式如下所示:
D={N(α1,σ2),N(α2,σ2),N(α3,σ2),...,N(αn,σ2)}
其中,n表示要剪枝的网络的层数;
S2.2:使用可微决策器N(αi,σ2)对神经网络的第i层进行采样并截断,得到第i层的剪枝率ri,并计算出剪枝率ri对应的分布概率pi。
3.根据权利要求2所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S2还包括以下步骤:
S2.3:计算剪枝率ri对应的期望值Exi,具体包括以下步骤:
S2.3.1:使用可微决策器N(0,1)对神经网络的第i层采样得到数值ε;
S2.3.2:将xi=ε*σ+αi设为可微决策器N(αi,σ2)的采样结果,则剪枝率ri对应的期望值Exi=xi/M;其中,M为采样的次数。
4.根据权利要求3所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S3具体包括以下步骤:
S3.1:根据神经网络的第i层的剪枝率ri和第i层的原始输出通道数,确定第i层剪枝后的输出通道数ci,其公式如下所示:
ci=ri*cimax
其中,cimax表示第i层的原始输出通道数;
S3.2:根据输出通道数ci对神经网络的第i层进行剪枝,得到剪枝后的神经网络,具体为:将神经网络第i层的前ci个输出通道对应的输出特征图保留,其余的输出通道置零。
5.根据权利要求4所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S3还包括以下步骤:
S3.3:使用通道对齐方法,对剪枝后神经网络的第i层的输出特征图进行加权求和,将加权求和后的结果作为第i层的输出;
S3.4:根据剪枝率期望值Exi计算剪枝后神经网络的第i层的浮点运算数。
6.根据权利要求5所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S3.3具体包括以下步骤:
S3.3.1:选择最大的输出特征图的输出通道数作为需要对齐的目标输出通道数;
S3.3.2:对输出通道数小于目标输出通道数的输出特征图进行池化操作,使得输出特征图的输出通道数与目标输出通道数对齐;
S3.3.3:以分布概率pi作为权重,将对齐后的输出特征图进行加权求和,作为神经网络第i层的输出,并输出到下一层。
7.根据权利要求5所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S3.4具体包括以下步骤:
S3.4.1:计算剪枝后神经网络第i层的输出通道数O,其公式如下所示:
O=Exi*cimax
S3.4.2:计算第i层卷积层的浮点运算数flops_conv,其公式如下所示:
flops_conv=k*k*I*O*W*H
其中,k表示第i层卷积层的kernel_size,I表示剪枝后神经网络第i层的输入通道数,W*H表示剪枝后神经网络第i层的输出特征图大小;
S3.4.3:计算全连接层的浮点运算数flops_fc,其公式如下所示:
flops_fc=I*O
S3.4.4:将剪枝后神经网络所有层卷积层浮点运算数flops_conv和全连接层浮点运算数flops_fc相加,得到剪枝后神经网络的浮点运算数。
8.根据权利要求7所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S4具体包括以下步骤:
S4.1:固定可微决策器的参数,使用随机梯度下降法SGD训练一回合剪枝后的神经网络,其中训练的目标函数为交叉熵损失函数,其公式如下所示:
Loss_net=CELoss(z0,t;θ)
其中,z0表示剪枝后的神经网络的输出,t表示真实标签,θ表示网络参数,CELoss表示交叉熵损失函数;
S4.2:将未剪枝、经过预训练的神经网络设为教师网络,将剪枝后的神经网络设为学生网络,固定教师网络和学生网络的参数,使用知识蒸馏的方法优化可微决策器的参数,此时教师网络和学生网络的目标函数如下所示:
Loss_dec=Loss_hard+Loss_KD+Loss_flops
Loss_hard=CELoss(z,t;θ′)
Loss_flops=|flops-r0*max_flops|
其中,z表示学生网络的输出,t表示真实标签,θ′表示训练后的网络参数,z′表示学生网络的软输出,v表示教师网络的软输出,T表示温度系数,β表示蒸馏系数,Fi和F′i分别表示学生网络和教师网络第i层的输出特征图,max_flops表示教师网络的FLOPs,r0表示全局目标剪枝率;CELoss表示交叉熵损失函数,KL_Div表示KL散度损失函数,MSELoss表示均方差损失函数;
S4.3:使用梯度下降法Adam优化CELoss、KL_Div和MSELoss损失函数。
9.根据权利要求1所述的基于可微决策器和知识蒸馏的神经网络剪枝方法,其特征在于,S5具体为:将未剪枝、经过预训练的神经网络中的参数迁移到S4中经过优化后的神经网络中,再对经过优化后的神经网络进行训练,恢复其准确度。
10.基于可微决策器和知识蒸馏的神经网络剪枝系统,其特征在于,包括:
预训练模块,用于对待剪枝的神经网络进行预训练;
决策模块,用于为预训练后的神经网络中的每一层卷积层构建一个可微决策器,并利用可微决策器对神经网络中的每一层卷积层进行采样并截断,得到每一层的剪枝率;
剪枝模块,用于根据神经网络中每一层的剪枝率和每一层的原始输出通道数,确定每一层剪枝后的输出通道数,对神经网络进行剪枝,得到剪枝后的神经网络;
优化模块,用于使用知识蒸馏方法对剪枝后的神经网络进行优化,得到优化后的神经网络;
恢复模块,用于对优化后的神经网络进行训练,使其恢复准确度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111387877.7A CN114091668A (zh) | 2021-11-22 | 2021-11-22 | 基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111387877.7A CN114091668A (zh) | 2021-11-22 | 2021-11-22 | 基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114091668A true CN114091668A (zh) | 2022-02-25 |
Family
ID=80302940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111387877.7A Pending CN114091668A (zh) | 2021-11-22 | 2021-11-22 | 基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114091668A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116994309A (zh) * | 2023-05-06 | 2023-11-03 | 浙江大学 | 一种公平性感知的人脸识别模型剪枝方法 |
-
2021
- 2021-11-22 CN CN202111387877.7A patent/CN114091668A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116994309A (zh) * | 2023-05-06 | 2023-11-03 | 浙江大学 | 一种公平性感知的人脸识别模型剪枝方法 |
CN116994309B (zh) * | 2023-05-06 | 2024-04-09 | 浙江大学 | 一种公平性感知的人脸识别模型剪枝方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020048389A1 (zh) | 神经网络模型压缩方法、装置和计算机设备 | |
CN110929164A (zh) | 一种基于用户动态偏好与注意力机制的兴趣点推荐方法 | |
CN112241455B (zh) | 基于多层级知识蒸馏预训练语言模型自动压缩方法及平台 | |
CN109948029A (zh) | 基于神经网络自适应的深度哈希图像搜索方法 | |
CN111898689A (zh) | 一种基于神经网络架构搜索的图像分类方法 | |
CN109886072B (zh) | 基于双向Ladder结构的人脸属性分类系统 | |
CN109885723A (zh) | 一种视频动态缩略图的生成方法、模型训练的方法及装置 | |
CN113610173A (zh) | 一种基于知识蒸馏的多跨域少样本分类方法 | |
CN111709493B (zh) | 对象分类方法、训练方法、装置、设备及存储介质 | |
CN111400494B (zh) | 一种基于GCN-Attention的情感分析方法 | |
CN113011570A (zh) | 一种卷积神经网络模型的自适应高精度压缩方法及系统 | |
CN112488301B (zh) | 一种基于多任务学习和注意力机制的食品反演方法 | |
CN116049459A (zh) | 跨模态互检索的方法、装置、服务器及存储介质 | |
CN113837378A (zh) | 一种基于代理模型和梯度优化的卷积神经网络压缩方法 | |
CN116362325A (zh) | 一种基于模型压缩的电力图像识别模型轻量化应用方法 | |
CN111767697A (zh) | 文本处理方法、装置、计算机设备以及存储介质 | |
CN114091668A (zh) | 基于可微决策器和知识蒸馏的神经网络剪枝方法及系统 | |
Verma et al. | A" Network Pruning Network''Approach to Deep Model Compression | |
CN114647752A (zh) | 基于双向可切分深度自注意力网络的轻量化视觉问答方法 | |
CN114241267A (zh) | 基于结构熵采样的多目标架构搜索骨质疏松图像识别方法 | |
CN117455009A (zh) | 联邦学习方法、联邦预测方法、装置、设备及存储介质 | |
CN116822593A (zh) | 一种基于硬件感知的大规模预训练语言模型压缩方法 | |
CN111507383A (zh) | 一种基于进化算法的神经网络自动剪枝方法 | |
Li et al. | Pruner to predictor: An efficient pruning method for neural networks compression | |
CN115455162A (zh) | 层次胶囊与多视图信息融合的答案句子选择方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |