CN110610229A - 一种卷积神经网络训练过程的动态稀疏化方法 - Google Patents
一种卷积神经网络训练过程的动态稀疏化方法 Download PDFInfo
- Publication number
- CN110610229A CN110610229A CN201910693844.1A CN201910693844A CN110610229A CN 110610229 A CN110610229 A CN 110610229A CN 201910693844 A CN201910693844 A CN 201910693844A CN 110610229 A CN110610229 A CN 110610229A
- Authority
- CN
- China
- Prior art keywords
- pruning
- gradient
- queue
- threshold
- activated
- 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
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/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)
- Complex Calculations (AREA)
Abstract
本发明提供一种卷积神经网络(CNN)训练过程的动态稀疏化方法,以训练过程中产生的激活的梯度作为处理对象,以激活的梯度的分布是正态分布为假设,对于给定的目标稀疏度,计算对应的阈值。同时基于此剪枝阈值,对其进行了数学期望不变的随机化剪枝,适用于反向传播过程。由于激活的梯度在训练过程中是动态产生的,会根据训练过程的输入不断变化;因而为一种动态剪枝方法。本发明的方法显著降低了理论上训练过程的计算复杂度与存储开销。同时该剪枝方法的基础上,本发明提供了一种适用于硬件的实现方法,使之不仅可以部署在传统计算平台上,也可应用于专用的硬件加速器上,扩大了应用范围。
Description
技术领域
本发明涉及计算机视觉以及深度学习领域,具体涉及一种卷积神经网络训练过程的激活的梯度动态稀疏化方法。
背景技术
卷积神经网络(CNN)是深度学习领域的一种常见算法,主要用于提取特征,被广泛应用于计算机视觉领域。
卷积神经网络的使用包括两个步骤:训练,推断。卷积神经网络中卷积层的训练过程需要大量的计算与存储空间,是目前制约卷积神经网络部署与发展的主要瓶颈之一。训练包括两个步骤:前向传播与反向传播。前向传播是神经网络权重与输入激活做卷积得到输出激活;反向传播则包括三个计算部分,输出激活的梯度与输入激活做卷积得到权重的梯度、输出激活的梯度与权重做卷积得到输入激活的权重并反传、用权重的激活更新权重。
剪枝是常用的卷积神经网络加速方法,其主要目的是通过提高参与卷积计算的张量的稀疏度以降低计算与存储开销,从而达到加速效果。剪枝被广泛应用于卷积神经网络的推断过程,但目前鲜有可以将剪枝应用于其训练加速的算法。
发明内容
为了完成卷积神经网络训练过程的加速,本发明提出了一种卷积神经网络训练过程的动态稀疏化方法,可以显著降低训练过程的计算量与存储开销。进一步的,针对专用硬件平台实现该算法,提出了一种改进方法。
本发明完整的技术方案包括:
一种基于激活梯度分布的阈值确定方法,包括如下步骤:
以激活的梯度的分布是均值为0,方差为σ的正态分布为假设,确定激活梯度的分位点作为剪枝阈值,其中σ通过参数估计得到;进而利用σ的无偏估计确定剪枝阈值。具体包括:
在随机梯度下降算法迭代多次过程中,每次迭代将训练集随机分为若干个batch,选取任一batch训练过程中的某一层的输出激活的梯度张量T作为剪枝对象,将T转变成一个一维向量V,长度为L,根据假设,这个一维向量是均值为0的正态分布的一组简单样本。
(1)设Vi是V中第i个元素,1≤i≤L,计算V中每个元素的绝对值的均值,记为A,设 由假设可知,的数学期望为σ,所以是参数σ的无偏估计;
(2)对于给定的目标稀疏度τ,计算对应的阈值Φ-1是正态分布概率函数的反函数;
优选的,τ的值设置为70%-95%。
本发明同时提出一种随机梯度剪枝方法,包括如下步骤:
(1)确定剪枝目标。对于上述Conv-ReLU结构,将剪枝的目标设定为ReLU层输出激活的梯度;对于上述Conv-BN-ReLU结构,将剪枝的目标设定为Conv层输出激活的梯度。
(2)对于根据上述方法计算某一个batch的激活的梯度的剪枝阈值th,按照如下方式进行剪枝:对于V中任一元素Vi,从0-1均匀分布中随机采样一个值p,剪枝完的值如下式所示,并对于V中所有元素应用该剪枝方法。
本发明同时提出一种针对硬件实现的一种改进方法,利用前几个batch的阈值预测下一个batch的阈值。包括如下步骤:
(1)为每一个需要剪枝的激活的梯度维护一个队列Q,设队列的长度为N,用以存储前N个batch依据上述阈值计算方法得到的N个剪枝阈值。
(2)如果队列未满(元素数目没有达到N个),则该batch不剪枝;如果队列已满,计算该队列中N个元素的平均值,用以估计该batch的剪枝阈值,再用该估计值进行剪枝,剪枝方法同上。
(3)无论剪枝与否,按照上述算法计算实际剪枝阈值,将该阈值填入队列Q的队尾。如果队列Q已满,则队头元素先出队。
优选的,队列Q的长度取总batch数的2%-10%。
本发明的有益效果:提出了一种卷积神经网络训练过程的基于激活梯度分布的阈值确定方法,以及利用该阈值进行激活梯度动态剪枝的方法。目前现有技术中针对神经网络加速主要是面向神经网络的推理过程,应用于前向传播过程,处理对象为神经网络的参数,由于神经网络的模型参数是由训练过程产生,在推理过程中不会因为推理的输入而发生变化,因此其为一种静态的剪枝过程。神经网络的训练过程相对推理过程而言,需要的计算资源与存储数倍于推理过程,而针对训练过程却并无有效的稀疏化算法以节约资源。因此本发明以加速神经网络的训练过程为目标,开发了一种适用于神经网络的训练过程的动态稀疏化方法;采用神经网络训练过程中产生的激活的梯度作为处理对象,由于激活的梯度在训练过程中是动态产生的,会根据训练过程的输入不断变化,因而为一种动态剪枝方法。本发明利用了输出激活梯度的分布特点,对其进行了数学期望不变的随机化剪枝。一方面降低了理论上的计算复杂度与存储开销,由于训练过程相比于推理过程而言,需要数倍的计算资源与存储开销,所以,其加速效果更明显也更有意义。另一方面也提供了一种适用于硬件的实现方法,使之不仅可以部署在传统计算平台上,也可应用于专用的硬件加速器上,扩大了应用范围。
附图说明
图1是本发明一个实施例的输出激活梯度剪枝的流程及效果示意图。
图2是本发明一个实施例的输出激活梯度剪枝的部署位置示意图。
图3是本发明一个实施例的针对硬件的改进方法的算法流程示意图。
具体实施方式
为了使本发明的目的、技术方案和优势更加清楚明白,接下来通过结合具体实施例与附图对本发明进行进一步详细说明。
图1是本发明一个实施例的输出激活梯度剪枝的流程及效果示意图。对于某一层的输出激活的梯度,首先计算剪枝阈值,计算输入激活中每个元素的绝对值的均值,记为A,设 之后对于给定的目标稀疏度τ,计算对应的阈值Φ-1是正态分布概率函数的反函数。T的取值范围一般为70%-95%,该方法适用于绝大部分使用随机梯度下降作为优化器的卷积神经网络。计算完阈值后,将其与原梯度输入到剪枝模块,并按照下述分段函数进行剪枝,其中x是原梯度中的任意元素,p是0-1均匀分布的一个随机采样值。最后将剪枝后的梯度反向传播给下一层继续参与反向传播计算。剪枝的效果如图1所示。
本发明公开的剪枝方法可以保证剪枝前后梯度张量的数学期望不变,以最大程度避免剪枝给精度带来的损失。
图2是本发明一个实施例的输出激活梯度剪枝的部署位置示意图。对于Conv-ReLU结构,将剪枝的目标设定为ReLU层输出激活的梯度;对于Conv-BN-ReLU结构,将剪枝的目标设定为Conv层输出激活的梯度。
图3是本发明一个实施例的针对硬件的改进方法的算法流程示意图。为每一个需要剪枝的激活的梯度维护一个队列Q,设队列的长度为N,用以存储前N个batch依据上述阈值计算方法得到的N个剪枝阈值。首先判断队列是否已满,如果队列未满(元素数目没有达到N个),则该batch不剪枝;如果队列已满,计算该队列中N个元素的平均值,用以估计该batch的剪枝阈值,再用该估计值进行剪枝,剪枝方法同上所述。无论剪枝与否,每个batch都按照上述算法计算实际剪枝阈值,并更新队列Q:将该阈值填入队列Q的队尾,如果队列Q已满,则队头元素先出队。
以上运用具体实施例对本发明进行了进一步的阐释。需要指出的是,上述内容仅为本发明的具体实施例,而不应用于限制本发明。在本发明的思想之内的任何修改、替换、改进等都应在本发明的保护范围之内。
Claims (6)
1.一种基于激活梯度分布的剪枝阈值确定方法,其特征在于,以激活的梯度的分布是均值为0,方差为σ的正态分布为假设,通过参数估计得到σ,进而利用σ的无偏估计确定剪枝阈值;具体包括:
在随机梯度下降算法迭代多次过程中,每次迭代将训练集随机分为若干个batch,选取任一batch训练过程中的某一层的输出激活的梯度张量T作为剪枝对象,将T转变成一维向量V,长度为L,根据假设,所述一维向量V为均值为0的正态分布的一组简单样本;
(1)设Vi是V中第i个元素,1≤i≤L,计算V中每个元素的绝对值的均值,记为A,设 由假设可知,的数学期望为σ,所以是参数σ的无偏估计;
(2)对于给定的目标稀疏度τ,计算对应的剪枝阈值Φ-1是正态分布概率函数的反函数。
2.根据权利要求1所述的剪枝阈值确定方法,其特征在于,所述目标稀疏度τ为70%-95%。
3.采用权利要求1或2所述方法获得阈值进行随机梯度剪枝的方法,其特征在于,包括如下步骤:
(1)针对上述权利要求1所选取的计算的某一个batch的激活的梯度的剪枝阈值th;
(2)按照如下方式进行剪枝:对于V中任一元素Vi,从0-1均匀分布中随机采样一个值p,剪枝完的值如下式所示,
并对于V中所有元素应用该剪枝方法。
4.根据权利要求3所述的随机梯度剪枝的方法,其特征在于,对于以Conv-ReLU为基本卷积单元的卷积神经网络,剪枝的目标为ReLU层输出激活的梯度;对于采用Conv-BN-ReLU为基本卷积结构或者不使用ReLU作为激活函数的卷积神经网络,剪枝的目标为Conv层输出激活的梯度。
5.根据权利要求4所述随机梯度剪枝方法针对硬件的一种改进方法,其特征在于,利用前几个batch的阈值预测下一个batch的阈值,具体包括:
(1)每一个需要剪枝的激活的梯度维护一个队列Q,设队列的长度为N,用以存储前N个batch依据权利要求1中所述方法得到的N个剪枝阈值;
(2)如果队列未满,即元素数目没有达到N个,则该batch不剪枝;如果队列已满,计算该队列中N个元素的平均值,用以估计该batch的剪枝阈值,再用该估计值利用权利要求2所述的方法进行剪枝;
(3)无论是否剪枝,按照权利要求1所述方法计算实际剪枝阈值,将该阈值填入队列Q的队尾,如果队列Q已满,则队头元素先出队。
6.根据权利要求5所述的针对硬件的一种改进方法,其特征在于,所述队列的长度设置为总batch数的2%-10%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910693844.1A CN110610229A (zh) | 2019-07-30 | 2019-07-30 | 一种卷积神经网络训练过程的动态稀疏化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910693844.1A CN110610229A (zh) | 2019-07-30 | 2019-07-30 | 一种卷积神经网络训练过程的动态稀疏化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110610229A true CN110610229A (zh) | 2019-12-24 |
Family
ID=68890253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910693844.1A Pending CN110610229A (zh) | 2019-07-30 | 2019-07-30 | 一种卷积神经网络训练过程的动态稀疏化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110610229A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874631A (zh) * | 2020-01-20 | 2020-03-10 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN111539460A (zh) * | 2020-04-09 | 2020-08-14 | 咪咕文化科技有限公司 | 图像分类方法、装置、电子设备及存储介质 |
CN111882810A (zh) * | 2020-07-31 | 2020-11-03 | 广州市微智联科技有限公司 | 一种火灾识别与预警方法及其系统 |
WO2022250562A1 (en) * | 2021-05-28 | 2022-12-01 | Huawei Technologies Co., Ltd. | Method and computer system for training a neural network model |
-
2019
- 2019-07-30 CN CN201910693844.1A patent/CN110610229A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874631A (zh) * | 2020-01-20 | 2020-03-10 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN110874631B (zh) * | 2020-01-20 | 2020-06-16 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN111539460A (zh) * | 2020-04-09 | 2020-08-14 | 咪咕文化科技有限公司 | 图像分类方法、装置、电子设备及存储介质 |
CN111882810A (zh) * | 2020-07-31 | 2020-11-03 | 广州市微智联科技有限公司 | 一种火灾识别与预警方法及其系统 |
CN111882810B (zh) * | 2020-07-31 | 2022-07-01 | 广州市微智联科技有限公司 | 一种火灾识别与预警方法及其系统 |
WO2022250562A1 (en) * | 2021-05-28 | 2022-12-01 | Huawei Technologies Co., Ltd. | Method and computer system for training a neural network model |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110610229A (zh) | 一种卷积神经网络训练过程的动态稀疏化方法 | |
CN111652366A (zh) | 一种基于通道剪枝和量化训练的联合神经网络模型压缩方法 | |
CN107340993B (zh) | 运算装置和方法 | |
US20220036167A1 (en) | Sorting method, operation method and operation apparatus for convolutional neural network | |
CN111740925B (zh) | 一种基于深度强化学习的Coflow调度方法 | |
Dai et al. | SparseTrain: Exploiting dataflow sparsity for efficient convolutional neural networks training | |
CN113065653B (zh) | 面向移动端图像分类的轻量级卷积神经网络的设计方法 | |
CN112288087A (zh) | 一种神经网络剪枝方法、装置、电子设备及存储介质 | |
CN112733458B (zh) | 一种基于自适应变分模态分解的工程结构信号处理方法 | |
CN109583586B (zh) | 一种语音识别或图像识别中的卷积核处理方法及装置 | |
CN114169543A (zh) | 一种基于模型陈旧性与用户参与度感知的联邦学习算法 | |
CN111368988A (zh) | 一种利用稀疏性的深度学习训练硬件加速器 | |
CN114186671A (zh) | 一种大批量的去中心化分布式图像分类器训练方法和系统 | |
CN114118406A (zh) | 一种卷积神经网络的量化压缩方法 | |
CN116166955A (zh) | 基于主成分高斯混合聚类的新能源场景处理方法及装置 | |
JP2022101461A (ja) | ニューラルネットワークに用いられる混合粒度に基づく共同スパース方法 | |
CN109389216B (zh) | 神经网络的动态裁剪方法、装置及存储介质 | |
CN117454938A (zh) | 一种基于混合推理策略的bcnn数据处理方法 | |
CN108564167B (zh) | 一种数据集之中异常数据的识别方法 | |
CN117474168A (zh) | 一种基于注意力机制的CNN-BiGRU的船舶轨迹预测方法及装置 | |
CN111488981A (zh) | 基于高斯分布估计选取深度网络参数稀疏阈值的方法 | |
WO2022250893A1 (en) | Data-aware model pruning for neural networks | |
WO2020091139A1 (ko) | 시뮬레이션-가이드된 반복적 프루닝을 사용하는 효율적인 네트워크 압축 | |
CN113554104B (zh) | 一种基于深度学习模型的图像分类方法 | |
KR102643431B1 (ko) | 심층 강화학습을 위한 심층 신경망 학습 가속 장치 및 그 방법 |
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 |