CN110874634A - 神经网络的优化方法及装置、设备和存储介质 - Google Patents
神经网络的优化方法及装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110874634A CN110874634A CN201811013132.2A CN201811013132A CN110874634A CN 110874634 A CN110874634 A CN 110874634A CN 201811013132 A CN201811013132 A CN 201811013132A CN 110874634 A CN110874634 A CN 110874634A
- Authority
- CN
- China
- Prior art keywords
- vertex
- neural network
- constrained
- vertices
- pruning
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000005457 optimization Methods 0.000 title claims abstract description 29
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 238000013138 pruning Methods 0.000 claims abstract description 56
- 238000012549 training Methods 0.000 claims description 26
- 238000010606 normalization Methods 0.000 claims description 20
- 238000013527 convolutional neural network Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000013140 knowledge distillation Methods 0.000 claims description 13
- 238000005520 cutting process Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 238000012805 post-processing Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000004821 distillation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 125000000205 L-threonino group Chemical group [H]OC(=O)[C@@]([H])(N([H])[*])[C@](C([H])([H])[H])([H])O[H] 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种神经网络的优化方法及装置、设备和存储介质,所述神经网络的优化方法,包括:获取待优化的神经网络的拓扑结构;基于所述拓扑结构,对所述神经网络进行剪枝处理,以优化所述神经网络。根据本发明的神经网络的优化方案,基于拓扑结构对神经网络进行剪枝处理,能够减小神经网络的大小和计算量,从而提升神经网络的计算推理速度。
Description
技术领域
本发明涉及计算机领域,尤其是涉及一种神经网络的优化方法及装置、设备和计算机可读存储介质。
背景技术
当前,神经网络已广泛应用于多种机器学习场景,神经网络的推理(Inference)指的是基于训练好的网络模型对测试数据进行计算和预测的计算推理过程。通常,可以对神经网络的推理进行加速,以缩短其运算所消耗的时常。目前对神经网络推理加速的框架主要有以下几种:
①由英伟达公司推出的TensorRT:TensorRT是一种高性能神经网络推理引擎,用于在生产环境中部署深度学习应用程序,应用有图像分类、分割和目标检测等,可提供最大的推理吞吐量和效率。该框架只能用于推理,不能用于训练,其主要通过1)消除未使用的输出层以避免不必要的计算;2)在可能的情况下,将卷积层、批标准化层以及激活函数层融合以形成单个层,包括垂直层融合和水平层融合,来实现推理加速。
②由苹果公司推出的Core ML:Core ML主要针对设备的性能进行了优化,最大限度地减少内存占用和功耗,该框架主要通过系统层的优化以加速推理过程。
③由腾讯公司推出的NCNN:NCNN是手机端极致优化的高性能神经网络前向计算框架。
④由高通公司推出的骁龙神经处理引擎(Snapdragon Neural ProcessingEngine,SNPE):该框架是一个神经网络处理引擎,可运行于搭载了高通Zeroth机器智能平台的820芯片处理器,开发者可以在SNPE上搭建自己的深度学习网络模型。
⑤由微软推出的嵌入式学习库(Embedded Learning Library,ELL):该框架旨在把部分云端的机器学习计算转移到嵌入式设备上进行。
⑥开源框架WebDNN:WebDNN(Web Deep Neural Network,Web深度神经网络)是一个专注于终端用户设备上推理阶段的执行优化的开源框架,它包含两种模型:图形转译器,用于将训练过的模型转译并优化成能够在浏览器上执行的格式;以及描述符运行器,用于在浏览器上执行转换过的模型。
以上平台多为基于一种硬件或一个特定场景(如浏览器下)下推理计算的系统层优化。但是,近年来由于神经网络结构在向更深、更宽的层面深度发展,因此一个神经网络应用于一种硬件或一个特定场景的模式往往需要消耗较长的计算推理时间,才能得到推理结果,这不利于神经网络技术的发展和推广,尤其是对那些响应延迟敏感的业务例如线上服务而言是不可容忍的。
发明内容
本发明实施例提供一种神经网络的优化方法及装置、设备和计算机可读存储介质,用以解决神经网络计算推理慢的问题。
一方面,本发明实施例提供一种神经网络的优化方法,包括:
获取待优化的神经网络的拓扑结构;
基于所述拓扑结构,对所述神经网络进行剪枝处理,以优化所述神经网络。
另一方面,本发明实施例提供了一种神经网络的优化装置,所述装置包括:
拓扑结构获取模块,用于获取待优化的神经网络的拓扑结构;
剪枝处理模块,用于基于所述拓扑结构,对所述神经网络进行剪枝处理,以优化所述神经网络。
再一方面,本发明实施例提供了一种设备,设备包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行上述中的方法。
再一方面,本发明实施例提供了一种计算机存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现上述的方法。
本发明实施例的神经网络的优化方法及装置、设备和计算机可读存储介质,通过对神经网络的拓扑结构进行剪枝处理,能够减小神经网络的大小和计算量,从而提升神经网络的计算推理速度。
附图说明
图1是本发明实施例的神经网络的优化方法的流程示意图;
图2是通常情况下DenseNet中基于通道剪枝的示意图;
图3是通常情况下ResNet中基于通道剪枝的示意图;
图4是本发明实施例的DenseNet中基于顶点剪枝策略的示意图;
图5是本发明实施例的ResNet中基于顶点剪枝策略的示意图;
图6是本发明实施例的组卷积的原始图结构;
图7是与图6中组卷积等价的多路径组卷积的结构示意图;
图8是对图7中的多路径组卷积进行边裁剪的示意图;
图9是本发明实施例的割边与非割边的示意图;
图10是本发明实施例的DenseNet在剪枝前边的示意图;
图11是本发明实施例的DenseNet在剪枝后边的示意图;
图12是本发明实施例的神经网络的优化装置的框图;
图13是本发明实施例的设备的硬件结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行详细描述。应理解,所描述的具体实施例仅用于解释本发明,而并不用于限定本发明。文中的诸如第一、第二等用语仅用来对一个实体(或操作)与另一个实体(或操作)进行区分,而不表示这些实体(或操作)之间存在任何关系或顺序;另外,文中的诸如上、下、左、右、前、后等表示方向或方位的用语,仅表示相对的方向或方位,而非绝对的方向或方位。在没有额外限制的情况下,由语句“包括”限定的要素,不排除在包括所述要素的过程、方法、物品或者设备中还存在其他要素。
为了解决现有技术问题,本发明实施例提供了一种神经网络的优化方法及装置、设备和计算机可读存储介质。以下对本发明实施例所提供的神经网络的优化方法进行详细描述。
通常可以利用数学符号和计算图对神经网络进行表示和描述。以神经网络为卷积神经网络为例,可分别使用数学符号和计算图表示卷积神经网络。当然,需要说明的是,本发明中优化的神经网络并不限于卷积神经网络。
一、通过数据符号表示卷积神经网络
对于卷积神经网络中的卷积层计算,用{X,Z,W}进行表示,X表示输入特征映射(feature map),Z表示输出特征映射,W表示卷积核(convolution kernels),其中一个卷积核对应于的一个通道(channel)Zi,Zi经过批标准化之后的输出可用表示,其计算可用公式1表示:
二、通过计算图表示卷积神经网络
图(Graph)是一种数据结构,一个图G可表示为G={V,E},其中V为顶点集合,E为边集合,边表示各顶点之间的连接关系。卷积神经网络可以看做一个由顶点和边组成的计算图。
卷积神经网络的顶点类型包括:卷积(convolution)、激活函数(activationfunction)、批标准化(Batch Normalization,BN)和全连接(fully connected)。
基于上述内容,本发明实施例提供一种神经网络的优化方法,参考图1,所述的方法包括:
S101,获取待优化的神经网络的拓扑结构。
其中,拓扑结构(Topology structure)是指神经网络的图中各顶点之间的网络连接关系。
S102,基于拓扑结构,对神经网络进行剪枝处理,以优化神经网络。
其中,网络剪枝(Network pruning)是对神经网络中的部分权重进行有选择的移除,从而减小网络模型大小和计算量。
本发明提供的神经网络的优化方法可以封装为应用编程接口(ApplicationProgram Interface,API)的方式,为用户提供调用。
利用本发明提供的上述方案,可快速实现神经网络的剪枝处理,该剪枝方案对计算图的拓扑结构具有自适应性,在没有进行后续处理的情况下即可得到一个可执行的神经网络,能够减小神经网络的大小和推理计算量,能够在保证神经网络表达性能的同时,提升神经网络的计算推理速度。进一步,当针对特定应用需要部署时,可与通常情况下的神经网络推理加速的框架进行结合,得到更好的加速效果。
在本发明的实施例中,神经网络包括卷积神经网络(Convolutional NeuralNetwork,CNN),CNN包括一系列的卷积层、非线性激活层、池化层、归一化层、全连接层等基本单元。
在本发明的实施例中,拓扑结构包括神经网络的计算图,神经网络的计算图包括至少一个顶点,其中顶点表示神经网络中的计算操作,S102包括:将神经网络的计算图中的一个或多个顶点移除。
作为一个示例,将神经网络的计算图中的一个或多个批标准化顶点及每个批标准化顶点之前连接的卷积顶点从计算图中移除。
利用本发明提供的上述方案,神经网络中含有卷积顶点,卷积顶点的计算量较大,因此,可以对卷积顶点进行剪枝。而且每个卷积顶点之后连接有与该卷积顶点一一对应的批标准化顶点,因此,可以找到剪枝的批标准化顶点,以对批标准化顶点及其之前连接的卷积顶点进行剪枝,从而有效地加速网络推理速度并减少模型存储的资源消耗。
在本发明的实施例中,顶点的类型包括批标准化类和卷积类,将神经网络的计算图中的一个或多个顶点移除,包括:对神经网络的计算图中、类型为批标准化类的各顶点,确定该类顶点中为非关节点的顶点为待约束顶点;对各待约束顶点进行稀疏约束,并将稀疏约束后顶点权值小于预设顶点阈值的待约束顶点作为目标顶点;将各目标顶点及与各目标顶点相连的、类型为卷积类的顶点,分别从计算图中移除。
关于关节点(articulation points)以及非关节点(non-articulation points),在计算图中,若删除顶点V以及V相关的边后,计算图的一个连通分量分割为两个或两个以上的连通分量,则称顶点V为该计算图的一个关节点。非关节点是除关节点之外的点。
作为一个示例,所述的预设顶点阈值是由顶点的裁剪比例自适应计算得到的。比如,一组权值{γ1,γ2,…,γN},并且希望裁掉50%的顶点,因此,处理步骤如下:
在本发明的其他实施例中,还可以通过“网络瘦身”(Network Slimming,NS)框架中的剪枝方案,为神经网络推理加速。
为了更好的基于图理论对剪枝方案进行描述,以卷积神经网络为例,基于计算图的表示方式有以下基本策略:
1)一个卷积计算顶点只表示一个卷积核的计算,这不同于传统描述中的图表示方式,因为实际上通常把神经网络一个卷积层中所有卷积核的计算看作一个整体并视作一个统一的顶点,而本发明是在更细的粒度上对其进行了拆分与表示,因为在这种表示下才能实现逐卷积核的裁剪。
2)类似地,对于批标准化计算,也在更细的粒度上进行表示,一个批标准化顶点只表示特征映射一个通道的批标准化。
3)激活函数一般都放在批标准化计算之后,且该函数是在逐元素的粒度上进行计算的,因此为了简化计算图,将其与批标准化进行合并,即一个批标准化顶点表示的计算包含了批标准化和激活两个步骤。
对于卷积神经网络,主要针对计算消耗比较大的卷积顶点进行裁剪,而卷积神经网络多数含有批标准化顶点,且每个卷积顶点之后连接有与其一一对应的批标准化顶点,因此可以建模对批标准化顶点进行约束和裁剪,来实现对前序的卷积顶点进行裁剪。
对于包含批标准化层的卷积神经网络,批标准层中的权值因子γ实际上可以作为对每一个通道的数据重要性的评估,因此为了对网络进行裁剪,可以通过稀疏约束使得大部分的γ值等于或接近于0,使得该批标准化顶点可被移除,即此部分所对应的通道数据失效,进而可以裁剪掉其前序的卷积顶点,实现对网络的剪枝,从而实现压缩模型大小并加速推理过程的目的。因此对上述中的公式2加入相应的正则约束,即可得到以下对通道剪枝的优化模型:
其中,Rs(·)为稀疏约束(可通过l1-范数实现),λs为权衡因子,用于调节原始损失函数与稀疏约束损失之间的权重。
在卷积神经网络中,对特征映射的通道进行裁剪实质是为了裁剪与该通道相对应的卷积核(如公式1所示),只有裁掉对应的卷积核才能减少网络参数和计算量,但在拓扑结构较为复杂的网络中,对通道的裁剪可能并不等价于对卷积核的裁剪,尤其是在交叉连接(cross-connection)的情况下。交叉连接是指顶点之间不是一对一连接,可能是多个顶点指向同一个顶点,或者一个顶点同时指向多个顶点。
参考图2,卷积神经网络的顶点包括:卷积(convolution)顶点、批标准化(BN)顶点和拼接(Concat)顶点,其中,由于激活函数ReLU总是放在BN顶点之后,所以将激活函数融合到BN层中,以简化图形结构。在DenseNet中,每个卷积核的计算输出会被后面的多个层利用,且每个层都有自己独立的批标准化计算,即具有独立的γ参数。对于第i层,若基于γ参数去除输入数据中的一个通道,该通道对应的卷积核并不能去除,因为还有其他的层依赖于该卷积核的输出数据。
参考图3,卷积神经网络的顶点还包括相加(Add)顶点。在ResNet中,残差路径(residual path)的输出与恒等路径(identity path)的输出会进行逐通道的相加;那么为了裁剪,相加顶点所对应的两个通道数据需要被同时裁减掉,而基于通道的剪枝策略是不能实现协同裁剪的。
因此,为了保持拓扑关系的合理性,一般需对剪枝网路会采取一些后处理操作。例如,在DenseNet中,卷积顶点都被保留,而在后续的每一层之前加一个选择层,对所需的通道数据进行选择。在ResNet中,一般会放弃与相加顶点相连接的卷积顶点的裁剪。这些后处理方式一般会降低网络压缩比或者引入额外的访存操作,会使得网络的实际推理的性能提升不如预期。
因此,对于上述情况,为了更好的加速网络推理,本发明提出的剪枝框架在对网络进行正则约束时即考虑到计算图的拓扑结构,从而可对相关联的顶点进行协同裁剪。
在本发明的实施例中,对神经网络的计算图中的多个顶点进行稀疏约束,包括:对各待约束顶点,若所述待约束顶点为第一顶点,且所述待约束顶点不是合并顶点,则将所述待约束顶点和指向所述待约束顶点的其他待约束顶点形成第一顶点集合,对第一顶点集合进行组稀疏约束;其中,第一顶点为被多个待约束顶点指向的待约束顶点。
需要说明的是,合并(concatenation)顶点是指沿特定维度将若干张量拼接在一起。例如,给定N个张量{A1,A2,…,AN},其中An的维度尺寸为即A1,A2,…,AN在其他维度上尺寸都一致,只有在第i个维度上尺寸不一致,其尺寸分别为沿这个维度进行张量拼接,得到输出张量为A,其尺寸为[D1,…,Di,…,Dm],
在图4中,有两个“×”顶点,分别是A1和A2,有两个“框中”的顶点指向顶点A1,有两个“框中”的顶点指向顶点A2;将顶点A1和指向顶点A1的两个“框中”的顶点作为一个第一顶点集合;将顶点A2和指向顶点A2的两个“框中”的顶点作为另一个第一顶点集合。
交叉连接(cross-connection)是指顶点之间不是一对一连接,是多个顶点指向同一个顶点,或者一个顶点同时指向多个顶点。因此同一个第一顶点集合中的顶点具有交叉连接的关系。
利用本发明提供的上述方案,在对第一顶点集合进行组稀疏约束后,顶点的分布会趋于稀疏化,第一顶点集合中的多个顶点同时从计算图中移除或同时保留在计算图中,从计算图中移除或同时保留在计算图中的多个顶点具有交叉连接的关系,实现了对相关联的顶点进行协同裁剪。所以剪枝之后的网络不需要额外的后处理即可进行训练和加速,使得剪枝后的神经网络具有更高的模型压缩比及实际计算比,使得网络的实际推理的性能提升可以达到预期。
在本发明的实施例中,对各待约束顶点进行稀疏约束,包括:对各待约束顶点,若所述待约束顶点为第一顶点,且所述待约束顶点为合并顶点,则对所述待约束顶点进行稀疏约束;其中,第一顶点为被多个待约束顶点指向的待约束顶点。
因为若干的数据如果经由合并顶点组合起来时,其相互之间依然是独立的,合并顶点是否可被裁剪依然取决于自己,与其他数据无关,因此对该合并顶点进行稀疏约束,而不是进行组稀疏约束。
在本发明的实施例中,对各待约束顶点,若所述待约束顶点为第二顶点,则将所述待约束顶点和所述待约束顶点指向的其他待约束顶点形成第二顶点集合,对第二顶点集合进行组稀疏约束;其中,第二顶点是指向多个待约束顶点的待约束顶点。
在图5中,有一个“×”顶点M,顶点M指向两个“框中”的顶点,将顶点M和顶点M指向的两个“框中”的顶点作为一个第二顶点集合。同一个第二顶点集合中的顶点具有交叉连接的关系。
利用本发明提供的上述方案,在对第二顶点集合进行组稀疏约束后,顶点的分布会趋于稀疏化,第二顶点集合中的多个顶点同时从计算图中移除或同时保留在计算图中,从计算图中移除或同时保留在计算图中的多个顶点具有交叉连接的关系,实现了对相关联的顶点进行协同裁剪。所以剪枝之后的网络不需要额外的后处理,可直接进行微调训练恢复以原有网络的性能,避免了降低网络压缩比或者引入额外的访存操作,使得网络的实际推理的性能提升可以达到预期。
在本发明的实施例中,对神经网络的计算图中的多个顶点进行稀疏约束,包括:对各待约束顶点,若所述待约束顶点为第三顶点,则对所述待约束顶点进行稀疏约束;其中,第三顶点是仅与一个待约束顶点相连的待约束顶点。
根据计算图,将分为和 是被多个待约束顶点指向的待约束顶点,且不是合并顶点;是指向多个待约束顶点的待约束顶点;是被多个待约束顶点指向的待约束顶点,且是合并顶点,或者,是仅与一个待约束顶点相连的待约束顶点。
对于属于不同连接关系的顶点可进行自适应地稀疏约束:对于顶点施加l1-范数约束。对于属于的顶点,将和指向该的其他待约束顶点形成一组(即形成一个第一顶点集合),对于属于的顶点,将和指向的其他待约束顶点形成一组(即形成一个第二顶点集合),并对各组基于l2,1-范数施加组稀疏正则约束(group sparsity regularization):
其中,Rs(·)为稀疏约束,Rgs(·)为组稀疏约束,λs和λgs为权衡因子。
在本领域中,组卷积(group convolution)是一种特殊的多路径网络结构,图6所示为组卷积的原始图结构,其中神经网络包括:卷积顶点、批标准化顶点、拼接顶点和拆分(Split)顶点。图7是与图6中组卷积等价的多路径组卷积的结构示意图。对于多路径网络,移除其中若干路径并不影响从输入到输出数据的信息流,因此对于多路径网络可考虑基于边的剪枝方案。图8中有两条路径,分别为组1和组2,每条路径上有多条边,一条路径上,去掉其中任意一条边,整条路径都会断掉,因此没有必要约束所有的边,可以约束一条路径上的最后一条边。比如,图8中将组1对应路径的最后一条边裁剪掉,实现组1对应路径的断开。
在本发明的实施例中,拓扑结构包括神经网络的计算图,神经网络的计算图包括至少一条边,边表示神经网络中的数据流向,S102包括:将神经网络的计算图中的一条或多条边移除。
利用本发明提供的上述方案,基于边的网络裁剪策略,可以减少神经网络的计算次数,从而有效地减少访问时间,进而提高神经网络的推理效率。
在本发明的实施例中,将神经网络的计算图中的一条或多条边移除,包括:确定神经网络的计算图中的待约束边;对各待约束边进行稀疏约束,并将稀疏约束后边权值小于预设边阈值的待约束边作为目标边;将各目标边从计算图中移除。
作为一个示例,预设边阈值是由边的裁剪比例自适应计算得到的。在上述基于顶点的裁剪中,已经对如何得到预设顶点阈值进行详细说明,而得到预设边阈值与得到预设顶点阈值的方案相似,在此不再重复赘述如何得到预设边阈值。
在本发明的实施例中,待约束边为所述神经网络的计算图中的非割边,非割边连接计算图中的两个顶点且是该两个顶点之间的唯一路径。
需要说明的是,割边有时也称作桥(bridge),割边是指从一个起点顶点到终点顶点,有且只有一条路径,若把该路径断掉,则不能从起点到终点,因此这条路径上的边称为割边。对应地,若从一个起点顶点到终点顶点,若有多条路径,则去掉其中一条路径也不会影响由起点到终点的数据通路,因此,这些路径是可以去掉的,该路径上的边为非割边。比如,图9中,左边的图中起点顶点到终点顶点的边为非割边;右边的图中起点顶点到终点顶点的边为割边。
作为一个示例,选出计算图中所有的非割边,将选出的所有非割边的集合记做{Es},对于{Es}中的每一条边,引入了一个额外的权值参数γe,作为对于该边重要性的评估;运算时,对{γe}施加稀疏约束即可实现对边的筛选,其中权值接近于0的边即可被裁掉,相应的优化函数如下:
其中,Res(·)是对{γe}的稀疏约束(通过l1-范数实现),λes为权衡因子。
比如,图10中有15条路径,每一条路径上只有一条边,15条路径上的边都可能被约束和被裁剪,图11示出了裁剪掉其中的三条边。
在本发明的实施例中,对神经网络进行剪枝处理之后,神经网络的优化方法还包括:对剪枝处理后的神经网络进行微调(Finetuning)训练。所述的微调是指基于一个已经训练好的网络模型,对参数进行微调的训练过程。
作为一个示例,可以基于简单的微调策略对剪枝处理后的神经网络进行微调训练。裁剪后的神经网络一般都存在一定的性能下降,这一点可通过微调训练进行恢复,从而保证了剪枝后的神经网络的性能。
在本发明的实施例中,对神经网络进行剪枝处理之后,神经网络的优化剪枝处理方法还包括:对剪枝处理后的神经网络进行知识蒸馏训练。
在本发明的实施例中,对剪枝处理后的神经网络进行知识蒸馏训练,包括:以神经网络作为教师网络,以剪枝处理后的神经网络作为学生网络;基于知识蒸馏法,对教师网络和学生网络进行训练,以对剪枝后的神经网络进行微调。
所述的知识蒸馏(Knowledge distillation,KD)是一种将训练好的复杂模型的“知识”迁移到一个结构更为简单的网络中的训练机制。知识蒸馏是由Hinton等人提出,基于“教师-学生”的机制,将复杂的教师网络(Teacher Network)的知识信息“蒸馏”给学生网络(Student Network),使得学生网络在有硬目标(hard target)的同时,可模仿学习教师网络的输出分布,从而提高学生网络的表达能力。
教师网络是一个表达能力更强,且结构也更为复杂的网络。但在网络剪枝问题中,剪枝前的原始网络相对于剪枝后的网络而言本身就是一个表达能力更强结构也更复杂的网络,因此将其引入对剪枝后的网络进行监督微调。在此策略中,知识信息是由剪枝前网络蒸馏到剪枝后的同一网络,实际上是一种自我监督的模式,因此将其称为“自学”机制。实测实验结果显示,与简单的微调策略相比,基于自学的知识蒸馏微调策略可有效提升网络性能。
在实际应用场景中,在人工智能平台(Platform for Artifitial Intelligence,PAI)上,神经网络的优化方法在进行产品化调用时,需要用户输入的数据包括:已存的模型saved model、训练数据、训练逻辑代码和配置文件,具体如下:
1、saved model:即用户预训练好的模型参数;这里指的是网络剪枝的基准模型baseline model。
2、训练数据:由于此框架需要一定的微调训练,因此需求用户提供相应的训练任务数据。
3、训练逻辑代码:即用户的逻辑代码,在PAI平台上将此代码进行自动处理,例如:根据代码自动定位损失函数位置,并在该函数中加入相应的稀疏约束;例如在微调训练过程可能会替换性的接口函数,这些替换均将以自动化形式实现,无需人工干预。
4、配置文件,即用户需要根据自己的需求给出一定的裁剪选项,此部分参数均有推荐参数,若用户不指定,则会按照默认参数进行执行;具体地,配置参数包括:
A)gap_mode:裁剪模式,其选项包括:channel/vertex/edge,分别为本专利中所提到的传统裁剪模式、基于节点的裁剪模式以及基于边的裁剪模型模式,默认为vertex模式。
B)lambda_sparsity:是指在步骤一进行稀疏训练时所加的稀疏约束的权重,其默认值为10^(-4)。
C)pruning_proportion:是指网络的裁剪比例,默认值为50%。
其中可以以is_KD表示是否选择基于知识蒸馏的微调策略,is_KD=False时为简单微调策略,is_KD=True时为基于知识蒸馏的微调策略,默认为True。
基于用户输入的saved model、训练数据、训练逻辑代码和配置文件对神经网络进行优化,得到优化后的神经网络参数及模型、优化后的神经网络代码。
图12是本发明实施例提供的神经网络的优化装置的框图。如图12所示,神经网络的装置200包括:拓扑结构获取模块201和剪枝处理模块202。
拓扑结构获取模块201,用于获取待优化的神经网络的拓扑结构;
剪枝处理模块202,用于基于神经网络的拓扑结构,对神经网络进行剪枝处理,以优化神经网络。
本发明实施例能够减小神经网络的大小和计算量,提升神经网络的计算推理速度。
图13是本发明一个实施例提供的设备的硬件结构示意图。
在设备可以包括处理器301以及存储有计算机程序指令的存储器302。
具体地,上述处理器301可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器302可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器302可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器302可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器302可在综合网关容灾设备的内部或外部。在特定实施例中,存储器302是非易失性固态存储器。在特定实施例中,存储器302包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器301通过读取并执行存储器302中存储的计算机程序指令,以实现上述实施例中的任意一种神经网络的优化方法。
在一个示例中,设备还可包括通信接口303和总线310。其中,如图13所示,处理器301、存储器302、通信接口303通过总线310连接并完成相互间的通信。
通信接口303,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该设备可以执行本发明实施例中的神经网络的优化方法,从而实现结合图1和图12描述的神经网络的优化方法和装置。
另外,结合上述实施例中的神经网络的优化方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种神经网络的优化方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (19)
1.一种神经网络的优化方法,包括:
获取待优化的神经网络的拓扑结构;
基于所述拓扑结构,对所述神经网络进行剪枝处理,以优化所述神经网络。
2.根据权利要求1所述的方法,其中,所述拓扑结构包括所述神经网络的计算图,所述计算图包括至少一个顶点,所述顶点表示所述神经网络中的计算操作,所述基于所述拓扑结构,对所述神经网络进行剪枝处理,包括:
将所述神经网络的计算图中的一个或多个顶点移除。
3.根据权利要求1或2所述的方法,其中,所述拓扑结构包括所述神经网络的计算图,所述计算图包括至少一条边,所述边表示所述神经网络中的数据流向,所述基于所述拓扑结构,对所述神经网络进行剪枝处理,包括:
将所述神经网络的计算图中的一条或多条边移除。
4.根据权利要求2所述的方法,其中,所述顶点的类型包括批标准化类和卷积类,所述将所述神经网络的计算图中的一个或多个顶点移除,包括:
对所述神经网络的计算图中、类型为批标准化类的各顶点,确定该类顶点中为非关节点的顶点为待约束顶点;
对各待约束顶点进行稀疏约束,并将稀疏约束后顶点权值小于预设顶点阈值的待约束顶点作为目标顶点;
将各目标顶点及与各目标顶点相连的、类型为卷积类的顶点,分别从所述计算图中移除。
5.根据权利要求4所述的方法,其中,所述对各待约束顶点进行稀疏约束,包括:
对各待约束顶点,若所述待约束顶点为所述第一顶点,且所述待约束顶点为合并顶点,则对所述待约束顶点进行稀疏约束;
其中,所述第一顶点为被多个待约束顶点指向的待约束顶点。
6.根据权利要求4所述的方法,其中,所述对各待约束顶点进行稀疏约束,包括:
对各待约束顶点,若所述待约束顶点为第一顶点,且所述待约束顶点不是合并顶点,则将所述待约束顶点和指向所述待约束顶点的其他待约束顶点形成第一顶点集合,对所述第一顶点集合进行组稀疏约束;
其中,所述第一顶点为被多个待约束顶点指向的待约束顶点。
7.根据权利要求4所述的方法,其中,所述对各待约束顶点进行稀疏约束,包括:
对各待约束顶点,若所述待约束顶点为第二顶点,则将所述待约束顶点和所述待约束顶点指向的其他待约束顶点形成第二顶点集合,对所述第二顶点集合进行组稀疏约束;
其中,所述第二顶点是指向多个待约束顶点的待约束顶点。
8.根据权利要求4所述的方法,其中,所述对所述神经网络的计算图中的多个顶点进行稀疏约束,包括:
对各待约束顶点,若所述待约束顶点为第三顶点,则对所述待约束顶点进行稀疏约束;
其中,所述第三顶点是仅与一个待约束顶点相连的待约束顶点。
9.根据权利要求3所述的方法,其中,将所述神经网络的计算图中的一条或多条边移除,包括:
确定所述神经网络的计算图中的待约束边;
对各待约束边进行稀疏约束,并将稀疏约束后边权值小于预设边阈值的待约束边作为目标边;
将各目标边从所述计算图中移除。
10.根据权利要求9所述的方法,其中,待约束边为所述神经网络的计算图中的非割边,所述非割边连接所述计算图中的两个顶点且是所述两个顶点之间的唯一路径。
11.根据权利要求1所述的方法,其中,所述对所述神经网络进行剪枝处理之后,所述的方法还包括:
对剪枝处理后的神经网络进行微调训练。
12.根据权利要求1所述的方法,其中,所述对所述神经网络进行剪枝处理之后,所述的方法还包括:
对剪枝处理后的神经网络进行知识蒸馏训练。
13.根据权利要求12所述的方法,其中,所述对剪枝处理后的神经网络进行知识蒸馏训练,包括:
以所述神经网络作为教师网络,以所述剪枝处理后的神经网络作为学生网络;
基于知识蒸馏法,对所述教师网络和所述学生网络进行训练,以对所述剪枝后的神经网络进行微调。
14.根据权利要求1或2所述的方法,其中,所述神经网络包括卷积神经网络。
15.一种神经网络的优化装置,包括:
拓扑结构获取模块,用于获取待优化的神经网络的拓扑结构;
剪枝处理模块,用于基于所述拓扑结构,对所述神经网络进行剪枝处理,以优化所述神经网络。
16.根据权利要求15所述的装置,其中,所述拓扑结构包括人工神经网络的计算图,所述计算图包括至少一个顶点,所述顶点表示所述神经网络中的计算操作,
所述剪枝处理模块包括顶点移除处理模块,其用于将所述神经网络的计算图中的一个或多个顶点移除。
17.根据权利要求15或16所述的装置,其中,所述拓扑结构包括人工神经网络的计算图,所述计算图的结构包括至少一条边,所述边表示所述神经网络中的数据流向,
所述剪枝处理模块包括边移除处理模块,其用于将所述神经网络的计算图中的一条或多条边移除。
18.一种神经网络的优化设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行如权利要求1至14中任一项所述的神经网络的优化方法。
19.一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现如权利要求1至14中任一项所述的神经网络的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811013132.2A CN110874634A (zh) | 2018-08-31 | 2018-08-31 | 神经网络的优化方法及装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811013132.2A CN110874634A (zh) | 2018-08-31 | 2018-08-31 | 神经网络的优化方法及装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110874634A true CN110874634A (zh) | 2020-03-10 |
Family
ID=69715859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811013132.2A Pending CN110874634A (zh) | 2018-08-31 | 2018-08-31 | 神经网络的优化方法及装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874634A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111553466A (zh) * | 2020-04-30 | 2020-08-18 | 上海商汤智能科技有限公司 | 信息处理方法、装置及设备 |
CN111723697A (zh) * | 2020-06-05 | 2020-09-29 | 广东海洋大学 | 一种基于Mask-RCNN改进的驾驶员背景分割方法 |
CN112001483A (zh) * | 2020-08-14 | 2020-11-27 | 广州市百果园信息技术有限公司 | 一种剪枝神经网络模型的方法和装置 |
CN112529178A (zh) * | 2020-12-09 | 2021-03-19 | 中国科学院国家空间科学中心 | 一种适用于无预选框检测模型的知识蒸馏方法及系统 |
CN112545452A (zh) * | 2020-12-07 | 2021-03-26 | 南京医科大学眼科医院 | 高度近视眼底病变风险预测方法 |
WO2022267717A1 (zh) * | 2021-06-23 | 2022-12-29 | 北京字跳网络技术有限公司 | 模型训练方法、装置及可读存储介质 |
-
2018
- 2018-08-31 CN CN201811013132.2A patent/CN110874634A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111553466A (zh) * | 2020-04-30 | 2020-08-18 | 上海商汤智能科技有限公司 | 信息处理方法、装置及设备 |
CN111553466B (zh) * | 2020-04-30 | 2024-03-22 | 上海商汤智能科技有限公司 | 信息处理方法、装置及设备 |
CN111723697A (zh) * | 2020-06-05 | 2020-09-29 | 广东海洋大学 | 一种基于Mask-RCNN改进的驾驶员背景分割方法 |
CN112001483A (zh) * | 2020-08-14 | 2020-11-27 | 广州市百果园信息技术有限公司 | 一种剪枝神经网络模型的方法和装置 |
CN112545452A (zh) * | 2020-12-07 | 2021-03-26 | 南京医科大学眼科医院 | 高度近视眼底病变风险预测方法 |
CN112529178A (zh) * | 2020-12-09 | 2021-03-19 | 中国科学院国家空间科学中心 | 一种适用于无预选框检测模型的知识蒸馏方法及系统 |
CN112529178B (zh) * | 2020-12-09 | 2024-04-09 | 中国科学院国家空间科学中心 | 一种适用于无预选框检测模型的知识蒸馏方法及系统 |
WO2022267717A1 (zh) * | 2021-06-23 | 2022-12-29 | 北京字跳网络技术有限公司 | 模型训练方法、装置及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110874634A (zh) | 神经网络的优化方法及装置、设备和存储介质 | |
CN108304921B (zh) | 卷积神经网络的训练方法及图像处理方法、装置 | |
CN111275107A (zh) | 一种基于迁移学习的多标签场景图像分类方法及装置 | |
US11907675B2 (en) | Generating training datasets for training neural networks | |
CN110991658A (zh) | 模型训练方法、装置、电子设备和计算机可读存储介质 | |
CN111783974A (zh) | 模型构建及图像处理方法、装置、硬件平台及存储介质 | |
CN111523640A (zh) | 神经网络模型的训练方法和装置 | |
CN111461212A (zh) | 一种用于点云目标检测模型的压缩方法 | |
US11423307B2 (en) | Taxonomy construction via graph-based cross-domain knowledge transfer | |
CN111369430B (zh) | 基于移动深度学习引擎的移动端人像智能背景替换方法 | |
CN114124567A (zh) | 基于大数据漏洞挖掘的云服务处理方法及人工智能系统 | |
CN114511083A (zh) | 一种模型的训练方法、装置、存储介质及电子装置 | |
CN114462582A (zh) | 基于卷积神经网络模型的数据处理方法及装置、设备 | |
CN116758373A (zh) | 深度学习模型的训练方法、图像处理方法、装置和设备 | |
US20210397900A1 (en) | Post-processing output data of a classifier | |
CN114648679A (zh) | 神经网络训练、目标检测的方法及装置、设备及存储介质 | |
CN112733134A (zh) | 基于大数据和区块链的信息安全防护方法及数字金融平台 | |
EP4250180A1 (en) | Method and apparatus for generating neural network | |
CN117609870B (zh) | 结构识别模型训练、模型结构识别方法、设备及介质 | |
CN115906651B (zh) | 二值神经网络的更新方法、装置及电子设备 | |
CN116071376B (zh) | 图像分割方法及相关装置、设备和存储介质 | |
EP4328813A1 (en) | Detection device, detection method, and detection program | |
CN115510077A (zh) | 基于消息传递的图数据更新方法、装置、设备及介质 | |
CN115661565A (zh) | 一种基于混合域与协同训练跨域检测模型的自训练方法 | |
CN116128045A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200310 |