基于知识蒸馏与非参数卷积的模型加速方法及装置与流程

文档序号:17009408发布日期:2019-03-02 02:10阅读:179来源:国知局
基于知识蒸馏与非参数卷积的模型加速方法及装置与流程

本发明涉及深度学习技术领域,特别涉及一种基于知识蒸馏与非参数卷积的模型加速方法及装置。



背景技术:

近年来,卷积神经网络在大量的机器学习领域,例如图像分类,目标检测,语义分割和语音识别中取得了突破性的提高。今年来的研究进展表明卷积神经网络的精度可以通过增加网络的深度和宽度来改善,尽管卷积神经网络取得如此的成功,但是在现实生活的应用中部署网络,尤其是在移动设备或者嵌入式便携设备上,主要受到他们大规模的参数和运算次数的限制。为了解决这个问题,一些深度神经网络的压缩算法被提出用来学习高效的卷积神经网络模型,以便于取得更快的运行时速度。

卷积神经网络的改善已经在以下的工作中被广泛的研究。一些二值网络的方法被提出来替代复杂的卷及神经网络运算。这些网络模型使用二值权重和激活值,从而应用比特运算的小存储量和高效计算。另一个流行的技术是采用深度分离卷积,对每个通道采用可分离的卷积核,然后在所有的通道上接入一个点乘的卷积。大多数方法致力于寻找一个替代现有标准卷积的高效卷积进而重新训练一个新的压缩的网络。还有一些其他的工作引入了剪枝和量化,这些工作都依赖于高运算量的重新训练过程来维持减少参数后的神经网络的精度。此外,近年来的另外一个研究方向是模型蒸馏,将计算复杂的“老师”网络压缩成一个小的“学生”替代网络,进而很容易的部署在资源有限的硬件上。然而,找到更高效的学生网络结构并且有效的训练其逼近老师网络的性能依然是这个领域的一个重大挑战。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的一个目的在于提出一种基于知识蒸馏与非参数卷积的模型加速方法,该方法采用知识蒸馏的手段学习得到轻量级的非参数卷积进而减少模型大小和提高运行时速度。

本发明的另一个目的在于提出一种基于知识蒸馏与非参数卷积的模型加速装置。

为达到上述目的,本发明一方面实施例提出了一种基于知识蒸馏与非参数卷积的模型加速方法,包括:裁剪步骤,裁剪卷积神经网络的非线性层与聚合冗余的卷积层;第一蒸馏步骤,在对所述卷积神经网络裁剪后,对原有模型进行蒸馏以得到初始卷积神经网络;替换步骤,将所述第一网络中剩余的卷积层替换为非参数的卷积层;第二蒸馏步骤,通过知识蒸馏来维持替换以后的模型精度,以得到最终卷积神经。

本发明实施例的基于知识蒸馏与非参数卷积的模型加速方法,首先通过聚合冗余的卷积层实现模块内的裁剪,接着对卷积神经网络进行裁剪,然后对原有模型进行蒸馏得到小的网络,替换掉剩余的卷积层得到非参数的卷积层,最后使用知识蒸馏的方法来维持替换以后的模型精度,从而实现减少模型大小和提高运行时速度的目的。

另外,根据本发明上述实施例的基于知识蒸馏与非参数卷积的模型加速方法还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述裁剪步骤进一步包括:将所述聚合冗余的卷积层替换成单一的小卷积以模拟原先多个网络的行为,其中,目标函数为:

其中,bi为第i个卷积神经网络模块,fi,j为卷积层在bi的制造特征,ki,j为卷积核,fi是一个对输入特征fi,1和输出特征fi,j的新映射,conv(f,k)是对于特征图f和卷积核k卷积操作。

进一步地,在本发明的一个实施例中,所述替换步骤进一步包括:将所述卷积层的数学运算替换成对特征图进行预设方向移动的内存操作,其中,对所述非参数的卷积层的定义为:

其中,w,h表示特征图的大小,nin,nout表示输出和输入的位置。

进一步地,在本发明的一个实施例中,在知识蒸馏时,学生网络通过优化的损失函数进行训练,所述优化的损失函数为:

其中,s和t分别为学生网络最后一层的输出,标签向量y,lhard是使用类标信息进行监督的损失函数,lsoft是使用老师预测的顶层输出进行监督的损失函数,t是温度参数,μ是两项之间的平衡项。

其中,在模块间的注意力迁移时,总的损失函数的表达式为:

其中,q函数是特征的绝对值的2范数的和,ft为学生模型特征,fs为老师模型特征。

为达到上述目的,本发明另一方面实施例提出了一种基于知识蒸馏与非参数卷积的模型加速装置,包括:裁剪模块,用于裁剪卷积神经网络的非线性层与聚合冗余的卷积层;第一蒸馏模块,用于在对所述卷积神经网络裁剪后,对原有模型进行蒸馏以得到初始卷积神经网络;替换模块,用于将所述第一网络中剩余的卷积层替换为非参数的卷积层;第二蒸馏模块,用于通过知识蒸馏来维持替换以后的模型精度,以得到最终卷积神经。

本发明实施例的基于知识蒸馏与非参数卷积的模型加速装置,首先通过聚合冗余的卷积层实现模块内的裁剪,接着对卷积神经网络进行裁剪,然后对原有模型进行蒸馏得到小的网络,替换掉剩余的卷积层得到非参数的卷积层,最后使用知识蒸馏的方法来维持替换以后的模型精度,从而实现减少模型大小和提高运行时速度的目的。

另外,根据本发明上述实施例的基于知识蒸馏与非参数卷积的模型加速装置还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述裁剪模块进一步用于将所述聚合冗余的卷积层替换成单一的小卷积以模拟原先多个网络的行为,其中,目标函数为:

其中,bi为第i个卷积神经网络模块,fi,j为卷积层在bi的制造特征,ki,j为卷积核,fi是一个对输入特征fi,1和输出特征fi,j的新映射,conv(f,k)是对于特征图f和卷积核k卷积操作。

进一步地,在本发明的一个实施例中,所述替换模块进一步用于将所述卷积层的数学运算替换成对特征图进行预设方向移动的内存操作,其中,对所述非参数的卷积层的定义为:

其中,w,h表示特征图的大小,nin,nout表示输出和输入的位置。

进一步地,在本发明的一个实施例中,在知识蒸馏时,学生网络通过优化的损失函数进行训练,所述优化的损失函数为:

其中,s和t分别为学生网络最后一层的输出,标签向量y,lhard是使用类标信息进行监督的损失函数,lsoft是使用老师预测的顶层输出进行监督的损失函数,t是温度参数,μ是两项之间的平衡项。

其中,在模块间的注意力迁移时,总的损失函数的表达式为:

其中,q函数是特征的绝对值的2范数的和,ft为学生模型特征,fs为老师模型特征。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明实施例的基于知识蒸馏与非参数卷积的模型加速方法流程图;

图2为根据本发明一个实施例的基于知识蒸馏与非参数卷积的模型加速方法流程图;

图3为根据本发明一个实施例的基于知识蒸馏与非参数卷积的模型加速装置结构图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参照附图描述根据本发明实施例提出的基于知识蒸馏与非参数卷积的模型加速方法及装置,首先将参照附图描述根据本发明实施例提出的基于知识蒸馏与非参数卷积的模型加速方法。

图1是本发明实施例的基于知识蒸馏与非参数卷积的模型加速方法流程图。

如图1所示,该基于知识蒸馏与非参数卷积的模型加速方法包括以下步骤:

在步骤s101中,裁剪卷积神经网络的非线性层与聚合冗余的卷积层。

进一步地,在本发明的一个实施例中,裁剪步骤进一步包括:将聚合冗余的卷积层替换成单一的小卷积以模拟原先多个网络的行为,其中,目标函数为:

其中,bi为第i个卷积神经网络模块,fi,j为卷积层在bi的制造特征,ki,j为卷积核,fi是一个对输入特征fi,1和输出特征fi,j的新映射,conv(f,k)是对于特征图f和卷积核k卷积操作。

具体地,对于带有残差模块的神经网络结构,为加速运行时间,在本发明的实施例中首先进行模块裁剪来减少模型的冗余度。在模块内部,一些连续的卷积层(例如残差网络中的连续2个3*3的卷积)可以被看成了一个整体的黑盒,可以通过将其替换成单一的小卷积来模拟原先几个网络的行为。其中,将第i个卷积神经网络模块命名为bi,内部的卷积层命名为ci,1,ci,2,…,ci,j,其中的卷积核为ki,1,ki,2,…,ki,j这些卷积层在bi制造特征fi,1,fi,2,…,fi,j,可以看成一个特征不断优化的过程。本发明实施例的目标是寻找一个替换,可以使得f{i,j}=fi(fi,1),其中fi是一个对输入特征fi,1和输出特征fi,j的新的映射,用来在加速后的模块中拟合希望得到的功能。

进一步地,以第i个模块为例,形式化的给出的目标函数为:

其中,conv(f,k)是带有batchnormalization和relu层的,对于特征图f和卷积核k卷积操作。通过优化上述式子,对每个计算模块,仅仅运行一次卷积操作。

在步骤s102中,在对卷积神经网络裁剪后,对原有模型进行蒸馏以得到初始卷积神经网络。

在步骤s103中,将第一网络中剩余的卷积层替换为非参数的卷积层。

进一步地,在本发明的一个实施例中,替换可以进一步包括:将卷积层的数学运算替换成对特征图进行预设方向移动的内存操作,其中,对非参数的卷积层的定义为:

其中,w,h表示特征图的大小,nin,nout表示输出和输入的位置。

具体地,为进一步在模块裁剪的基础上进行模型加速,本发明实施例提出了寻找高效的替代卷积方式来替换剩下的标准卷积,将卷积层中的数学运算替换成对特征图进行特定方向移动的内存操作,因为该操作的是不带参数的,所以会极大的提高卷积层的运算效率,并且可以通过对卷积核进行简单有效的修改来实现这步操作。

以ki,j为例,可以对非参数卷积核进行如下的定义

为训练本发明实施例提出的非参数卷积层,需要解决一个子优化问题来决定一系列的卷积核。其中因为优化问题包含了离散优化,所以不能被传统梯度下降算法有效的解决。对于给定输入的特征层,共有种排列组合的决策可以进行,穷尽搜索解法的复杂度是np难的。为避免求解额外的子问题带来计算负载,因此对候选的滤波器均等的赋予特定的移动方向,对于剩下的滤波器,简单的将中心设置为1。在固定每个特定方向移动的通道数目以后,使用的1*1的卷积相当于一次重新排列组合,因此所有的排列组合都是等效的。

在步骤s104中,通过知识蒸馏来维持替换以后的模型精度,以得到最终卷积神经。

进一步地,在本发明的一个实施例中,在知识蒸馏时,学生网络通过优化的损失函数进行训练,优化的损失函数为:

其中,s和t分别为学生网络最后一层的输出,标签向量y,lhard是使用类标信息进行监督的损失函数,lsoft是使用老师预测的顶层输出进行监督的损失函数,t是温度参数,μ是两项之间的平衡项。

其中,在模块间的注意力迁移时,总的损失函数的表达式为:

其中,q函数是特征的绝对值的2范数的和,ft为学生模型特征,fs为老师模型特征。

需要说明的是,对于模块裁剪和非参数卷积替换这两个阶段的模型裁剪,可以采用现代的蒸馏技术(知识蒸馏kd和注意力迁移at)来训练模型,从而避免精度的下降。具体步骤如下:

(1)知识蒸馏

在知识蒸馏中,老师网络的预测输出通常被用来引导学生模型的训练。其中,定义s和t分别为学生网络最后一层的输出,给定标签向量y,学生网络通过优化一下的损失函数来进行训练:

其中,lhard是使用类标信息进行监督的损失函数,lsoft是使用老师预测的顶层输出进行监督的损失函数,两者都是由两个概率向量的交叉熵进行定义的,t是温度参数,μ是两项之间的平衡项。

(2)模块间的注意力迁移

本发明的实施例还提出了模块间的注意力迁移方法来进行模型的蒸馏。其中,定义老师模型的模块为bt,学生模型的模块为bs,定义学生模型和老师模型的特征分别为ft和fs。因为学生和老师模型的注意力特征都是同一个分辨率的,因此迁移的损失函数可以直接被应用到模块之间,并且不需要任何重新调整尺度的操作。总的损失函数可以被形式化的表达为如下:

其中,q函数是特征绝对值的2范数的和。

因为注意力转移对每个模块的功能函数进行模仿,所以会比全局监督的知识蒸馏方法更加有效。本发明的实施例通过将两个模型蒸馏的损失函数结合到一起,同时应用知识蒸馏和注意力迁移两种方法对简化后的模型进行更加有效的训练。

具体地,本发明的是一个实施例有以下技术关键点:

(1)对于block内部的复杂度进行裁剪,通过裁减掉网络内部的非线性层来合并一些卷积进而起到去冗余的效果;

(2)将卷积层使用非参数的卷积运算进行替换;

(3)在关键点(1)和关键点(2)两步操作之后,采用知识蒸馏的方法去训练深度模型,以防止精度的降低。

本发明实施例提出的于知识蒸馏与非参数卷积的模型加速方法可以减少模型体积和提高部署模型后的运行速度。如图2所示,本发明实施例的方法包含三个主要的组件,模块内裁剪、非参数卷积的替换和两阶段的蒸馏。其中,具体步骤如下:

(1)在第一阶段中,通过裁剪非线性层,通过聚合冗余的卷积层实现模块内的裁剪。

(2)对卷积神经网络进行裁剪然后对原有模型进行蒸馏得到小的网络。

(3)在第二阶段中,替换掉剩余的卷积层为非参数的卷积层。

(4)使用知识蒸馏来维持替换以后的模型精度。

本发明实施例的基于知识蒸馏与非参数卷积的模型加速方法,首先通过聚合冗余的卷积层实现模块内的裁剪,接着对卷积神经网络进行裁剪,然后对原有模型进行蒸馏得到小的网络,替换掉剩余的卷积层得到非参数的卷积层,最后使用知识蒸馏的方法来维持替换以后的模型精度,从而实现减少模型大小和提高运行时速度的目的。

其次参照附图描述根据本发明实施例提出的基于知识蒸馏与非参数卷积的模型加速装置。

图3是本发明一个实施例的基于知识蒸馏与非参数卷积的模型加速装置结构图。

如图3所示,该基于知识蒸馏与非参数卷积的模型加速装置10包括:裁剪模块100、第一蒸馏模块200、替换模块300和第二蒸馏模块400。

其中,裁剪模块100用于裁剪卷积神经网络的非线性层与聚合冗余的卷积层。第一蒸馏模块200用于在对卷积神经网络裁剪后,对原有模型进行蒸馏以得到初始卷积神经网络。替换模块300用于将第一网络中剩余的卷积层替换为非参数的卷积层。第二蒸馏模块400通过知识蒸馏来维持替换以后的模型精度,以得到最终卷积神经。本发明实施例基于知识蒸馏与非参数卷积的模型加速装置10采用知识蒸馏的手段学习得到轻量级的非参数卷积进而减少模型大小和提高运行时速度。

进一步地,在本发明的一个实施例中,裁剪模块100进一步包括:将聚合冗余的卷积层替换成单一的小卷积以模拟原先多个网络的行为,其中,目标函数为:

其中,bi为第i个卷积神经网络模块,fi,j为卷积层在bi的制造特征,ki,j为卷积核,fi是一个对输入特征fi,1和输出特征fi,j的新映射,conv(f,k)是对于特征图f和卷积核k卷积操作。

进一步地,在本发明的一个实施例中,替换模块300进一步包括:将卷积层的数学运算替换成对特征图进行预设方向移动的内存操作,其中,对非参数的卷积层的定义为:

其中,w,h表示特征图的大小,nin,nout表示输出和输入的位置。

进一步地,在本发明的一个实施例中,在知识蒸馏时,学生网络通过优化的损失函数进行训练,优化的损失函数为:

其中,s和t分别为学生网络最后一层的输出,标签向量y,lhard是使用类标信息进行监督的损失函数,lsoft是使用老师预测的顶层输出进行监督的损失函数,t是温度参数,μ是两项之间的平衡项。

其中,在模块间的注意力迁移时,总的损失函数的表达式为:

其中,q函数是特征的绝对值的2范数的和,ft为学生模型特征,fs为老师模型特征。

需要说明的是,前述对基于知识蒸馏与非参数卷积的模型加速方法实施例的解释说明也适用于该实施例的装置,此处不再赘述。

本发明实施例的基于知识蒸馏与非参数卷积的模型加速装置,首先通过聚合冗余的卷积层实现模块内的裁剪,接着对卷积神经网络进行裁剪,然后对原有模型进行蒸馏得到小的网络,替换掉剩余的卷积层得到非参数的卷积层,最后使用知识蒸馏的方法来维持替换以后的模型精度,从而实现减少模型大小和提高运行时速度的目的。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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