掌桥专利:专业的专利平台
掌桥专利
首页

一种基于压缩神经网络的二阶段量化实现方法及装置

文献发布时间:2023-06-19 16:06:26



技术领域

本发明涉及神经网络技术领域,尤其涉及一种基于压缩神经网络的二阶段量化实现方法及装置。

背景技术

深度神经网络在图像分类、目标检测、语音合成和语义分割等复杂的应用中具有很高的辨别能力。但是这些模型需要的大量计算成本和存储成本,使得它们无法很好的部署在边缘端设备。对于能够通过网络连接访问强大计算资源的项目,部署大型的神经网络可能不会产生资源紧张的问题。然而,对于嵌入式硬件平台上的边缘计算,由于安全、隐私和延迟等主要的考虑因素(例如智能传感器、穿戴设备、自动驾驶和无人驾驶飞行器跟踪),使得它的推理必须在本地或网络边缘执行,因此可供使用的计算资源有限,同时这种计算受到严格的区域和功率限制。

为解决神经网络的计算成本和存储成本问题。研究者提出对神经网络进行压缩和量化。聚类是一种常用的神经网络压缩技术,该方法多用于将神经网络模型最大化地压缩,研究者通过在神经网络的权值矩阵中存储聚类标签,来将浮点数的权值矩阵转化为定点数,但聚类标签本身并不能用作计算,在网络推理时,仍使用的是浮点数的聚类中心。通过量化将浮点数权值转化为定点数权值的思想在上世纪90年代就被提出了,量化后的神经网络可以使用定点数计算来加速网络的推理。线性量化是一种常用的量化方法,该方法在8bit量化位宽上,不会造成神经网络模型推理准确率的明显下降,但是当使用线性量化将模型量化6bit以下,该网络模型会丧失推理能力。目前的边缘端设备,例如FPGA、ASIC等,可以通过自定义加法器、乘法器和存储器的位宽,使模型能够使用低位宽权值进行推理加速。因此如何同时对模型进行压缩和量化,如何弥补低位宽量化过程中的精度损失,是目前研究的难点。

发明内容

针对现有技术存在的问题,本发明的目的是提出一种基于压缩神经网络的二阶段量化实现方法及装置,以在保证神经网络压缩的同时,提高神经网络模型在低位宽量化下的模型推理准确率。

为达到上述目的,本发明的技术方案是这样实现的:

一种基于压缩神经网络的二阶段量化实现方法,包括以下步骤:

S1、根据神经网络的目标任务,使用CPU或GPU将神经网络模型训练至收敛。

S2、根据目标任务所需的神经网络的压缩率,设置所述神经网络每层的目标稀疏度,逐阶段地对权值进行剪枝。

S3、根据目标任务预设的量化位宽,二阶段地量化神经网络每层的权值,第一阶段是聚类,使用聚类算法聚类神经网络每层的权值;第二阶段是放缩,根据目标任务预设的量化位宽,将得到的聚类中心放缩到定点数,最终结果以三元组的形式存储每层的权值矩阵。

优选地,所述步骤S2中的根据目标任务所需的神经网络的压缩率,设置所述神经网络每层的目标稀疏度,具体包括:根据目标任务所需的神经网络的压缩率,除神经网络第一层外,设置所述神经网络其余每层的目标稀疏度;神经网络每层的目标稀疏度,由每层网络各自的所属的类型,以及该层网络所处在所述神经网络的深度决定。

优选地,所述步骤S2中的逐阶段地对权值进行剪枝,具体包括:根据所诉神经网络每层的目标稀疏度、初始稀疏度和预设的剪枝频率,确定每层网络本阶段所需剪枝的权值数M,其中M为正整数,将未剪枝的权值量级最小的M个权值确定为本阶段所需剪枝的权值,逐阶段地对神经网络每层的权值进行剪枝。

优选地,所述步骤S3中的二阶段地量化神经网络每层的权值,具体包括:

第一阶段:根据目标任务所需的量化位宽,确定聚类中心数,使用粒子群聚类算法聚类经过剪枝后的权值矩阵,得到聚类中心和聚类标签,神经网络每层的权值矩阵存储得到的聚类中心;

第二阶段:根据目标任务所需的量化位宽,使用线性量化算法量化每层的聚类中心,最终结果以三元组的形式存储每层的权值矩阵。

优选地,所述第一阶段具体包括:根据目标任务预设的量化位宽n,得到聚类中心数X,其中X为2

优选地,所述第二阶段具体包括:线性量化算法的输入为神经网络每层的X个聚类中心,不需要输入整个权值矩阵;以三元组形式存储每层的权值矩阵,分别存储每个权值的行、列和所述权值经过聚类得到的聚类中心。

本发明还提供了一种基于压缩神经网络的二阶段量化装置,包括:

训练模块:用于根据目标任务,选择神经网络模型,使用CPU或GPU训练神经网络模型至收敛状态;

剪枝模块:用于根据所述神经网络模型所需的压缩率,针对网络中不同类型和深度的层,分别设置所述每层网络的目标稀疏度,并逐阶段地对每层的权值进行剪枝;

聚类模块:用于根据目标任务所需的量化位宽,确定聚类中心数,使用粒子群聚类算法对剪枝后的神经网络模型每层的权值进行聚类,得到聚类中心和聚类标签,神经网络每层的权值矩阵存储聚类的中心;

量化模块:根据目标任务所需的量化位宽,使用线性量化算法量化每层的聚类中心,最终结果以三元组的形式存储每层的权值矩阵,量化并压缩神经网络。

与现有技术相比,本发明具有如下的优点:

本发明方法及装置,通过剪枝、粒子群聚类和线性量化,有效地降低了神经网络模型的存储成本和计算成本。本发明提出了将量化过程分离为两个阶段,第一阶段使用粒子群聚类算法聚类神经网络每层的权值,第二阶段使用线性量化算法将每层网络权值放缩到定点数,让线性量化仅起到放缩的作用,通过二阶段量化神经网络权值可以有效地弥补传统线性量化在低位宽量化过程中的精度损失。对于剪枝和量化后的稀疏矩阵通过三元组的形式压缩存储,能够有效的减少模型占用的内存空间。

附图说明

图1为本发明实施例提出的一种基于压缩神经网络的二阶段量化实现方法流程图。

图2为本发明实施例提出的一种基于压缩神经网络的二阶段量化实现装置结构图。

图3为本发明实施例提出的一种基于压缩神经网络的二阶段量化实现方法中聚类算法流程图。

图4为本发明实施例提出的一种基于压缩神经网络的二阶段量化实现方法中粒子群算法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实例中的技术方案、特征进行清楚、完整地描述,显然,以下所描述的实施例仅仅只是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域中的普通技术人员在没有做出创造性劳动的基础上所获得的其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提出的一种基于压缩神经网络的二阶段量化实现方法,包括以下步骤:

S1、根据神经网络的目标任务,使用CPU或GPU将神经网络模型训练至收敛。

在本实施例中,需要根据目标任务将神经网络模型训练至收敛状态,以保证神经网络模型在压缩和量化之前,具有实现目标任务的性能和准确率。

S2、根据目标任务所需的神经网络的压缩率,设置所述神经网络每层的目标稀疏度,逐阶段地对权值进行剪枝。

在本实施例中,神经网络模型可以包括多层不同类型的网络。根据目标任务所需的神经网络模型的压缩率,除第一层网络外,对于每层网络,设置各自的目标稀疏度。

在一种可能的实现方式中,不同类型的网络目标稀疏度不同。例如全连接层的目标稀疏度为0.8,卷积层的目标稀疏度为0.6。

在一种可能的实现方式中,不同深度的卷积层和卷积层的目标稀疏度不同。例如第一层卷积层的目标稀疏度为0.4,第二层卷积层的目标稀疏度为0.5。

在本实施例中,将权值的剪枝分为多个阶段,逐阶段地将每个阶段所需要剪枝的权值进行剪枝。

在一种可能的实现方式中,每层网络的每个阶段的目标稀疏度不同。S

在一种可能的实现方式中,根据设置的剪枝频率,每层网络的每个阶段可以剪枝也可以不剪枝。

在一种可能的实现方式中,每层网络的每个阶段所需剪枝的权值个数不同。根据当前阶段的目标稀疏度、初始稀疏度、预设的剪枝频率,和当前阶段神经网络权值未剪枝部分,得到本阶段需要剪枝的神经网络权值。

S3、根据目标任务预设的量化位宽,二阶段地量化神经网络每层的权值,第一阶段是聚类,使用聚类算法聚类神经网络每层的权值;第二阶段是放缩,根据目标任务预设的量化位宽,将得到的聚类中心放缩到定点数,最终结果以三元组的形式存储每层的权值矩阵。

在本实施例中,神经网络根据目标任务所需的量化位宽,确定聚类中心数,对剪枝后的神经网络模型的权值进行聚类,得到聚类中心和聚类标签。

在一种可能的实现方式中,神经网络权值需要量化到n bit,聚类中心数为2

在本实施例中,根据聚类中心数,使用粒子群聚类算法,对神经网络每层的权值聚类,可以有效提升聚类算法的收敛速度,也可以避免传统聚类算法陷入局部最优解,最终结果无法收敛。

在一种可能的实现方式中,对每层神经网络权值使用粒子群算法,得到聚类算法初始聚类中心。其中t表示当前时刻,t+1表示下一时刻,X

V

X

在一种可能的实现方式中,迭代过程如图4所示,当粒子群算法的迭代次数超过最大迭代次数或质心更新的平均变化小于预设的阈值时,结束迭代,输出每层网络权值的聚类初始中心。

本实施例将线性量化算法分为两个阶段,第一阶段是聚类,使用聚类算法聚类神经网络每层的权值;第二阶段是放缩,根据目标任务预设的量化位宽,将得到的聚类中心放缩到定点数。通过将线性量化算法划分为两个阶段,能够弥补线性量化过程中的精度损失,从而能够保证神经网络模型定点数化后,依然能实现目标任务所需要的准确率。

在本实施例中,根据得到的所述神经网络每层的初始聚类中心,对每层的权值进行聚类,得到每层权值的最终聚类中心和聚类标签。

在一种可能的实现方式中,根据粒子群算法得到的每层初始聚类中心作为聚类算法的初始中心,各权值之间以欧式距离d作为度量方式,其中(M1,M2..Mk)为质心集,C为输入的数据维度数,c为当前维度;将数据集划分为K个簇,不断迭代更新质心,让簇内的点集间距越小,簇外的点集间距越大。计算过程如下:

其中,Z

在一种可能的实现方式中,迭代过程如图3所示,直到迭代达到最大次数或当前质心不在更新后,输出每层神经网络的权值聚类中心和聚类标签,聚类中心存储在神经网络权值矩阵中。

在本实施例中,根据目标任务所需量化的比特数,使用线性量化算法量化每层的聚类中心。

在一种可能的实现方式中,通过每层网络的权值矩阵存储的聚类中心的最大值max,最小值min,和根据目标任务确定的定点数放缩范围,将所述聚类中心量化到定点数,线性量化算法的输入为神经网络每层的X个聚类中心,不需要输入整个权值矩阵,可以有效提升量化的效率。例如,目标任务量化比特数为8bit,定点数放缩范围为-127到127,计算过程如下:

其中,R表示浮点数矩阵;a表示当前矩阵的最小值,b表示当前矩阵的最大值;n为目标任务量化位宽;S表示放缩系数,Z表示量化前后的常数。

在本实施例中,神经网络通过剪枝后的矩阵是稀疏矩阵,每层网络权值矩阵存储经过量化后的聚类中心,最终稀疏的权值矩阵通过三元组进行存储,可以提高神经网络模型的压缩率。

在一种可能的实现方式中,神经网络每层的权值矩阵以三元组形式存储,分别存储每个权值的行、列和所述权值经过聚类得到的聚类中心。

如图2所示,本发明实施例还提出了一种基于压缩神经网络的二阶段量化装置,包括:

训练模块21:用于根据目标任务,使用CPU或GPU训练神经网络模型至收敛状态。

剪枝模块22:用于根据所述神经网络模型所需的压缩率,针对网络中不同类型和深度的层,分别设置所述每层的目标稀疏度,并逐阶段地对每层的权值进行剪枝。

聚类模块23:用于根据目标任务所需的量化位宽,确定聚类中心数,对剪枝后的神经网络模型的权值进行聚类,得到聚类中心和聚类标签,神经网络每层的权值矩阵存储聚类的中心。

量化模块24:根据目标任务所需的量化位宽,使用线性量化算法量化每层的聚类中心,最终结果以三元组的形式存储每层的权值矩阵。

本发明提出的一种基于压缩神经网络的二阶段量化实现方法及装置,有效地降低了神经网络的计算成本和存储成本。针对过去聚类方法的权值矩阵存取的聚类标签仅起到压缩网络的作用而无法用于实际计算以及低位宽线性量化会丧失推理能力等问题,本发明提出了将聚类和线性量化结合的二阶段量化方法。

第一阶段使用粒子群聚类算法聚类神经网络每层的权值,第二阶段使用线性量化算法将每层网络权值放缩到定点数,让线性量化仅起到放缩的作用。通过将线性量化算法划分为两个阶段,能够有效地弥补线性量化过程中的精度损失,从而能够保证神经网络模型定点数化后,依然能实现目标任务所需要的准确率。

本发明针对冗余的神经网络权值,使用多阶段的非结构化剪枝,最后得到的稀疏矩阵使用三元组的方式进行压缩存储,实现了同时减少神经网络模型的计算成本和存储成本。

上述实施例基于压缩神经网络的二阶段量化实现方法及装置,根据神经网络的目标任务,使用CPU或GPU将神经网络模型训练至收敛;根据目标任务所需的神经网络的压缩率,设置神经网络每层的目标稀疏度,逐阶段地对权值进行剪枝;根据目标任务预设的量化位宽,二阶段地量化神经网络每层的权值,量化的第一阶段是聚类,使用聚类算法聚类神经网络每层的权值;第二阶段是放缩,根据目标任务预设的量化位宽,将得到的聚类中心放缩到定点数,最终结果以三元组的形式存储每层的权值矩阵。本发明上述实施例能够减少模型所需的计算成本和存储成本,提升模型的推理速度,并且可以有效地弥补传统线性量化在低位宽下的精度损失。

最后需要说明的是:以上所述仅为本发明的较佳实施例,并非穷尽性的。仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。本文中所用术语的选择,旨在最好地解释各实施例的原理。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

技术分类

06120114702270