一种基于强化学习的深度神经网络压缩方法与流程

文档序号:19788188发布日期:2020-01-24 13:53阅读:199来源:国知局

本发明涉及图像识别技术领域,具体的说,是一种基于强化学习的深度神经网络压缩方法。



背景技术:

在图像识别以及人脸识别领域,利用深度学习技术和卷积神经网络能够达到非常好的识别效果,其识别准确率远高于传统的图像识别方法。在训练过程中,卷积神经网络接收大量的训练图像样本,利用卷积层逐层提取图像中的特征,并通过方向传播算法对网络中的参数进行调整,从而达到最小化输出误差的目的。由于其极高的准确率,深度卷积神经网络逐渐成为了图像识别领域的主流方法。然而,基于深度学习的图像识别方法也存在一些不足之处。首先,针对图像的多层卷积计算在运算过程中带来了很高的计算量。同时,在一个深度神经网络中包含及大量的参数(神经元间的权重、偏移量以及卷积层的参数等,在复杂网络中其总数量可达百万)。因此,常规深度学习模型对设备的计算能力和存储空间具有较高的要求,而目前的智能家居设备往往不能满足深度学习所需的硬件条件,不能直接运行体积巨大但性能很好的深度神经网络模型的问题,以及存在人工对模型进行压缩过程中耗时、且不够灵活的问题。



技术实现要素:

本发明的目的在于提供一种基于强化学习的深度神经网络压缩方法,用于解决硬件资源受限的智能家居设备上不能直接运行体积巨大但性能很好的深度神经网络模型的问题,还解决了人工对模型进行压缩过程中耗时、且不够灵活的问题。

本发明通过下述技术方案解决上述问题:

一种基于强化学习的深度神经网络压缩方法,包括:

步骤s100:基于已训练完成的卷积神经网络,训练强化学习智能体,所述强化学习智能体用于识别网络稀疏性,采用压缩方法对模型进行压缩;

步骤s200:对压缩后的模型再次训练,对模型的参数进行优化,得到最终压缩模型。

本方法涉及输入模块,用于读取已训练好的卷积神经网络模型,包括网络结构、变量取值、变量索引等信息,作为下一模块的数据来源;

强化学习模块,基于已经训练好的卷积神经网络模型,训练出一个能够识别出网络稀疏性的强化学习智能体;

压缩模块,借助强化学习智能体对卷积神经网络模型各层的稀疏性进行判断,并结合多种模型压缩方法从不同角度对模型进行压缩;

输出模块,对经过压缩后得到的模型再次训练,从而对模型的参数进一步的调整,提高压缩后的模型的准确率,降低模型压缩对性能的影响。

将输出模块最终输出的模型应用于智能家居中的图像识别领域场景,在硬件条件受限的情况下最小化输出误差,保持原有模型的性能。

进一步地,所述步骤s100训练强化学习智能体的步骤为:

步骤s110:载入已训练好的卷积神经网络模型及其网络结构和参数;

步骤s120:初始化训练参数:设置网络总层数l、整个模型的目标压缩比例c0、强化学习智能体的行为即对l层的压缩比例,记为cl,其中l为强化学习智能体当前所在层;

步骤s130:强化学习智能体从第l层开始前向通过网络各层,设置初始值l=1,设置对第一层的压缩比例c1=c0;

步骤s140:对l层压缩时,先计算该层中每个神经元的输入权值的平均值,将输入权值的平均值从小到大排序,然后根据该层的压缩比例cl从平均值最小的神经元开始删去神经元;

步骤s150:对卷积核进行低秩分解以及模型参数的低位量化;

步骤s160:重复步骤s140-步骤s150,重复次数达到设定次数y后结束,根据当前智能体所在的层数l和当前网络总体压缩比例选择合适的下一层的压缩比例cl+1;

步骤s170:判断:若l<l,l=l+1,返回步骤s140;否则,进入下一步;

步骤s180:整个网络被压缩完一次后,计算该次压缩操作的输出总损失值loss并记录;

步骤s190:利用最优策略对原网络模型进行压缩判断压缩后的模型的体积是否满足要求;若不满足,将压缩后的模型作为新的“待压缩模型”再次进行压缩;若满足,进入步骤s200。

训练强化学习智能体在模型压缩过程中自行判断各层网络稀疏性,并预测出接下来所需执行的行动。进一步提高模型压缩方法的自动化程度在模型压缩方法方面,本发明针对网络中不同方面的冗余,分别结合网络剪枝、低秩分解以及参数量化等多种技术,使网络模型能够被更大程度地压缩,实现在硬件资源受限的设备上运行的可能。

本发明与现有技术相比,具有以下优点及有益效果:

(1)本发明将庞大而复杂的深度神经网络模型压缩,使压缩后的模型能够在智能家居设备等硬件资源有限的平台上运行,相较于原模型,压缩后的模型不仅存储空间和运算量需求大幅减少,同时模型性能仍保持在原有水平,有助于实现图像识别技术在日常生活中的广泛应用,对提高生活的便利性和安全性。

(2)本发明结合强化学习的模型压缩方法,训练强化学习智能体在模型压缩过程中自行判断各层网络稀疏性,并预测出接下来所需执行的行动,进一步提高模型压缩方法的自动化程度和灵活性,代替人工对网络稀疏性进行判断。

(3)本发明提出一种复合的模型压缩技术,针对网络中不同方面的冗余,分别结合网络剪枝、低秩分解以及参数量化等多种技术,从多角度分别对模型的计算量和占用存储空间进行压缩,相较于采用单一的压缩技术能在保证模型准确度的情况下提高模型压缩比例,从而使压缩后的模型能在资源受限的设备上运行。

具体实施方式

首先,在对本申请的具体实施方式进行介绍之前,首先对现有技术中常用的模型压缩方法进行说明:

常用的模型压缩方法可归类为网络修剪、低秩分解、迁移/压缩卷积滤波器、知识蒸馏和网络量化等几大类,其中,

网络修剪的主要思想为:在一个已经训练好的模型中,根据一定标准判断各个神经元的重要程度,在模型压缩过程中可以将重要性相对较低的神经元从网络中移除,从而得到一个更少神经元的网络,最后再对精简后的网络进行进一步训练,调整余下的参数。

低秩分解或低秩近似将权值矩阵分解为多个秩更小的矩阵,即把一个方形矩阵用为两个向量的乘积来近似表示,从而实现减少参数数量的目的。

迁移卷积滤波器利用一组基础卷积滤波器构建出网络所需的各个卷积滤波器,因此只需要在系统中保存少量的基本滤波器,模型中所需的卷积滤波器都可以通过基本滤波器的线性组合来近似表示。

知识蒸馏参考了迁移学习的思路,在训练结构更加简单的小型网络的过程中,将已训练好的复杂网络的输出作为监督信号,从而实现对小型网络训练过程的“指导”。

网络量化主要用于压缩各个权值的表示长度,例如二值量化将浮点数权值均用简单的两个定值(如仅用0和1)来表示,大大减少了存储权值所需的空间。

下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例1:

一种基于强化学习的深度神经网络压缩方法,包括:

步骤s100:基于已训练完成的卷积神经网络,训练强化学习智能体,所述强化学习智能体用于识别网络稀疏性,采用压缩方法对模型进行压缩;

步骤s200:对压缩后的模型再次训练,对模型的参数进行优化,得到最终压缩模型。

本方法涉及输入模块,用于读取已训练好的卷积神经网络模型,包括网络结构、变量取值、变量索引等信息,作为下一模块的数据来源;

强化学习模块,基于已经训练好的卷积神经网络模型,训练出一个能够识别出网络稀疏性的强化学习智能体;

压缩模块,借助强化学习智能体对卷积神经网络模型各层的稀疏性进行判断,并结合多种模型压缩方法从不同角度对模型进行压缩;

输出模块,对经过压缩后得到的模型再次训练,从而对模型的参数进一步的调整,提高压缩后的模型的准确率,降低模型压缩对性能的影响。

由于不同压缩方法针对的压缩内容并不完全相同,因此可以结合多种方法,以达到互补的作用,提高模型的压缩比例,同时尽量降低模型准确度的损失。

强化学习是机器学习的一个分支,可看作是一种在探索过程中学习的方法。在强化学习中,学习的主体是强化学习智能体,并且设计者并不会给智能体提供监督信号。相反,智能体在每一个时刻预测出自己接下来的行为,在与环境的交互中得到对应每个行为的奖励信号。通过不同奖励信号的高低,智能体逐渐能够改变自己的行为预测规则,从而使一系列行为所积累的奖励最大,从而自行探索出目标问题的最优解。

进一步地,所述步骤s100训练强化学习智能体的步骤为:

本发明采用的强化学习方法中,强化学习智能体的状态空间(statespace)为智能体的行为即对第l层的压缩比例,记为cl,表示将当前层l的神经元个数压缩至原来的cl;

行为对应的奖励(reward)为损失函数的相反数,即r=-loss。

其中:l表示智能体当前所在的网络层数,l=1,...,l;

cl的取值为0到1之间的n等分点(不包括0),例如:根据网络以及训练设备硬件条件选择n=20时,强化学习智能体的行为cl∈{0.05,0.10,0.15,...,0.90,0.95,1};

表示智能体完成对第l层的压缩后整个网络的总体压缩比例,即经过该层压缩后所有神经元个数与原网络神经元总个数之间的比例,

构建损失函数时,基于目标压缩比例、模型输出准确度、网络参数数量、网络计算量等变量进行设计,使得最终得到的智能体在工作过程中能够兼顾压缩体积与保持准确度。

构建损失函数举例:假设整个模型的目标压缩比例为c0,结合强化学习的状态变量,可构建出一个如公式(1)所示的损失函数:

loss=α1·(cf-c0)+α2·v+α3·(nf-n0)+α4·(mf-m0)(1)

其中,v表示网络输出结果对应的损失指标,cf表示模型被压缩完毕后的总体压缩比例,nf表示压缩后的模型剩余的参数总量,n0表示原模型的参数总量,mf表示压缩后的模型运行一次的总计算量,m0表示原模型运行一次的总计算量;各个部分的权重系数αi,i=1,2,3,4;αi可根据实际情况进行取值,以保证各项在训练过程中的损失贡献相当。

训练过程中,模型的输入为图像。由于待压缩的模型是已经训练好的模型,并且不同图像处理网络的输入在图像大小、图像张数等方面有不同要求,因此,在训练强化学习智能体的过程中,模型输入数据与原网络要求的输入保持一致即可。

针对不同的模型输出,可构建出不同的网络输出损失指标v。例如,对于一个人脸身份识别网络,其输入为一张人脸照片,输出为该照片是设备主人的概率p∈[0,1],p越大则表示网络认为此照片是主人的概率越大(假设p>0.8则认定输入图像为设备主人)。在这种情况下,v可以按照表1的方式定义,各项的定义值仅做参考,可以根据实际系统更改。表1如下表:

表1网络输出损失指标的定义示例

在另一个网络模型中,网络输入可能是3张人脸照片,其中2张来自同一人,第3张来自另一个人。经过训练的网络的输出为2个正标签p1,p2以及1个负标签n1。在训练强化学习智能体的过程中,当网络输出正确对3张图片进行分类时,可将损失指标v设为0。当网络输出出现标记错误时,可将损失指标v设为10或更大的数值,用以惩罚强化学习智能体。

训练强化学习智能体的完整流程如下:

1.入已训练好的复杂模型,包括其网络结构与参数;

2.初始化训练参数,如:设置起始网络层数l=1,该层的目标压缩比例cl=c0,即将第l层的神经元个数压缩至原来的cl,即强化学习智能体的行为为cl;

3.强化学习智能体从第1层开始前向通过网络各层(即从第1层到第层)。自行为每层选取压缩比例cl;

4.智能体对某一层进行压缩时,先计算该层中每个神经元的输入权值的平均值并将权值平均值从小到大排序,根据该层的压缩比例从平均值最小的神经元开始删去相应数目的神经元;

5.整个网络被压缩完一次后,计算该次压缩操作的输出总损失值loss并记录;

6.重复操作②-④步骤y次(y根据实际时间以及训练设备条件选取),y次结束后学习出使奖励r最大的策略(policy),即根据当前智能体所在的层数l和当前网络总体压缩比例选择合适的下一层的压缩比例cl+1;

7.利用最优策略对原网络模型进行压缩判断压缩后的模型的体积是否满足要求;若不满足,可考虑将压缩后的模型作为新的“待压缩模型”再次进行压缩;

8.通过强化学习确定了新的模型结构之后,针对新的模型再次训练网络,调整好模型参数以便于接下来的其他模型压缩方法对模型进行进一步的压缩。

初次训练强化学习智能体的过程可能会比较花费时间。训练好一个针对模型压缩的智能体后,再对类似结构的深度神经网络模型进行压缩时可考虑直接使用该智能体进行压缩,若不能满足压缩条件再对智能体进行进一步的训练。

本发明所提出的模型压缩方法,除了利用强化学习智能体直接删去一定数目的神经元外,还包括对卷积核的低秩分解以及对模型参数的低位量化,其中低秩分解主要用于减少模型参数数目,而低位量化主要用于降低参数的存储空间。由于本发明所涉及的深度神经网络主要用于图像处理,因此在网络中会用到两层或更多卷积层。卷积核多为长宽均是奇数的正方形矩阵,如3×3矩阵、5×5矩阵等。为了进一步减少模型的参数量,可以将卷积核方阵用两个向量的乘积来近似表示。例如,对于一个卷积核将其近似表示为其中经过该近似操作后,表示一个卷积核所需的参数量由9个降至6个,对于更大的卷积核其参数压缩效果更加明显。由于大部分卷积核方阵都是满秩,用两个向量的乘积得到的方阵各行或各列之间线性不独立,即近似得到的方阵的秩更低。因此,采用低秩分解或低秩近似的方法与原卷积核相比必然会损失一定的性能,可以通过压缩完成后对网络参数再次进行微调来减少性能的损失。

完成对卷积核的低秩分解后,可以进一步对网络中的所有参数进行低位量化。在深度神经网络中,除了卷积层之外,全连接层中也包含了大量的权重和偏移量参数,网络参数总数可达几万甚至上百万。为了节省参数所占用的存储空间,可以用8bit整数来近似表示各参数,根据实际需求甚至可以采用更低位数的表示方法(如二值量化)。低位量化的近似方法可以在保持模型参数量的情况下降低模型所需的存储空间,使得模型的整体体积减小。

尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。

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