当前位置: 首页 > 专利查询>浙江大学专利>正文

一种用于神经网络加速的渐进式块知识蒸馏方法技术

技术编号:19635758 阅读:41 留言:0更新日期:2018-12-01 16:23
本发明专利技术公开了一种用于神经网络加速的渐进式块知识蒸馏方法,方法具体包括以下步骤:输入原复杂网络和相关参数;将原复杂网络分成多个子网络块,按块设计学生子网络块并随机初始化参数;将输入的原复杂网络作为第一次块蒸馏过程的教师网络,块蒸馏过程完成得到一个学生网络,其中第一个学生子网络块参数最优;将上一次块蒸馏过程得到的学生网络作为下一次块蒸馏过程的教师网络,得到下一个学生网络,其中块蒸馏结束的学生子网络块参数最优;所有子网络块蒸馏过程完成,得到最终的简单学生网络以及最优参数。本发明专利技术能在一般的硬件架构上能够达到对模型压缩加速的效果,同时实现简单,是一个既有效并且实用简单的深度网络模型压缩加速算法。

A Progressive Block Knowledge Distillation Method for Neural Network Acceleration

The invention discloses a progressive block knowledge distillation method for neural network acceleration, which includes the following steps: input the original complex network and related parameters; divide the original complex network into multiple sub-network blocks, design student sub-network blocks according to blocks and randomly initialize parameters; and take the input original complex network as the first step. Teacher network of sub-block distillation process, the block distillation process is completed to get a student network, in which the first student sub-network block parameters are optimal; the student network obtained from the last block distillation process is regarded as the teacher network of the next block distillation process, and the next student network is obtained, in which the student sub-network of the end of block distillation is the student sub-network. Block parameters are optimal; all sub-network block distillation processes are completed, and the final simple student network and the optimal parameters are obtained. The invention can achieve the effect of accelerating model compression on the general hardware architecture, and is simple to realize. It is an effective and practical accelerating algorithm for deep network model compression.

【技术实现步骤摘要】
一种用于神经网络加速的渐进式块知识蒸馏方法
本专利技术涉及深度网络模型压缩加速领域,尤其涉及一种用于神经网络加速的渐进式块知识蒸馏方法。
技术介绍
从2016年开始,人工智能热潮席卷了全球。包括谷歌、微软、百度、阿里巴巴、腾讯等国内外各大公司纷纷投入大量的力量到有关人工智能的研究中;中国政府在不久前也发布了《新一代人工智能发展规划》,制定了未来中国人工智能发展的目标。这几年来,深度学习的迅猛发展,使得计算机视觉、自然语言处理等一系列领域的最先进的算法性能都有了跨越式的进展。在人工智能领域,传统的芯片计算架构无法支撑深度学习等并行计算的需求,面对未来10年高达2000亿美元的市场,谷歌、英伟达等国内外芯片公司纷纷投入研究新的人工智能芯片(云端训练、云端推理、设备端推理、类脑芯片)来更好地储备数据、加速计算过程。但在工业界深度学习算法却还没得到较好的应用,其中一个原因是深度神经网络的模型庞大、计算量巨大,动辄数百兆的深度神经网络部署到实际产品中困难较大。另一方面,在一些嵌入式的平台上,存储计算资源都十分有限,深度学习算法的移植更加困难。所以,研究深度网络模型的压缩加速,是一个对工业界和学术界都非常有价值的问题,以ResNet-50为例,它有50层卷积网络、超过95MB的储存需求,如果剪枝一些冗余的权重后,其大概能节约75%的参数和50%的计算时间。当前主要用于深度网络模型压缩加速的方案有参数剪枝和共享、低秩分解、知识蒸馏等。有些方案(如低秩分解)只能够实现理论上对模型的压缩加速,但在实际硬件结构上依然无法达到对模型加速的效果;有些方案(如知识蒸馏)能够在实际的硬件条件下实现对模型的压缩加速,但是实现起来较复杂。本专利技术基于这些问题,致力于研究设计出一个既有效并且实用简单的深度网络模型压缩加速算法,能在一般的硬件架构上能够达到对模型压缩加速的效果,同时实现起来相对简单。目前有关压缩和加速卷积神经网络模型的方法大致可以分为四种方案:基于参数剪枝与共享的方法(又包括模型量化和二值化、参数共享、结构矩阵三类),基于低秩分解的方法,基于转换卷积滤波器的方法,基于知识蒸馏的方法。从原理上来说,前三种方案的想法都关注如何通过不同的低存储成本的计算加速技术来获得一个有效的网络,通过计算加速角度的方案大多在实现运用上需要配合一定的硬件支持;相反,第四种方案知识蒸馏是通过一个教师-学生的学习策略来实现将原来的网络模型压缩成一个低复杂度的模型的目的,在不损失太多模型准确率的情况下,低复杂度的网络模型能够具备高运算效率以及较少的存储开销,因此知识蒸馏方案相比前三种方案在应用上所需的硬件要求更少。然而,对于知识蒸馏方案,对模型蒸馏过程的有效性经常受到两方面的困难,一方面来自教师-学生网络的优化问题,另一方面是关于学生网络结构的设计问题。知识蒸馏方案的缺陷是对于如何设计以及学习一个好的学生网络非常困难。对于知识蒸馏方案,对模型蒸馏过程的有效性经常受到两方面的困难,一方面来自教师-学生网络的优化问题,另一方面是关于学生网络结构的设计问题。大多现有的策略从教师模型中都只用一步的机制来获得学生模型,在一个巨大搜索空间中找到逼近教师网络函数的学生网络函数需要非常多的网络配置,在实际中,这个非联合优化过程也是难以处理和不稳定的。通过子网络块的形式的蒸馏方案是非常容易优化的,但是不能够有效地保持层特定子网络块之间的序列依赖关系。另外,现有的对学生子网络块的设计准则也不能很好地保护原子网络块在特征提取中的感受野信息。
技术实现思路
为了解决现有技术中存在的问题,本专利技术旨在研究设计出一种用于神经网络加速的渐进式块知识蒸馏方法,该方法能在一般的硬件架构上能够达到对模型压缩加速的效果,同时实现相对简单。针对知识蒸馏方案的缺陷,对于如何设计以及学习一个好的学生网络非常困难,本专利技术将网络分成多个子网络块,在子网络块级别上根据提出的设计准则设计学生网络,然后渐进式地逐块地蒸馏神经网络中的知识,大大降低设计和训练学生网络的难度。本专利技术具体采用的技术方案如下:一种用于神经网络加速的渐进式块知识蒸馏方法包括以下步骤:S1、输入原复杂网络和相关参数,定义方法目标;S2、将原复杂网络分成多个子网络块,基于学生子网络块设计准则,按块设计学生子网络块并随机初始化其参数;S3、蒸馏第一个子网络块,将S1中输入的原复杂网络作为第一次块蒸馏过程的教师网络,一次块蒸馏过程完成后得到第一个学生网络,其中蒸馏完成的第一个学生子网络块具有最优参数;S4、蒸馏下一个子网络块,将上一次块蒸馏过程得到的学生网络作为本次块蒸馏过程的教师网络,一次块蒸馏过程完成得到下一个学生网络,其中蒸馏完成的下一个学生子网络块具有最优参数;S5、重复步骤S4直到所有子网络块蒸馏过程完成,将最后一次块蒸馏得到的学生网络和最优参数作为最终的简单学生网络以及最终参数。作为优选,S1中所述的原复杂网络定义如下:原复杂网络T由N个子网络块构成,表示如下:ti是在T中的第i个子网络块,i∈{1,2,...,N},c是分类器的映射函数,为简化网络表达的符号;该复杂网络的参数表示为Wc和是指c和ti的参数,i∈{1,2,...,N};所述的子网络块定义如下:一个神经网络由卷积层、池化层和全连接层构成,将神经网络中两个相邻池化层间的子网络定义为一个子网络块。作为优选,S1中所述的方法目标定义如下:设计一个具有高计算效率和低存储占用空间的学生网络,并学习训练得到最优的参数;所述学生网络由N个学生子网络块构成,用表示,其中si表示S中的第i个学生子网络块,i∈{1,2,...,N},c是分类器的映射函数;所述最优的参数用表示,Wc和是指c和si的参数。作为优选,所述S2包含以下子步骤:S21、将原复杂网络T分成N个子网络块{t1,t2,t3,...,tN};S22、根据所述学生子网络块设计准则,按块设计得到N个学生子网络块{s1,s2,s3,...,sN};S23、随机初始化学生子网络块的参数;所述的学生子网络块设计准则具体操作如下:首先,根据子网络块的结构,将块中包含的所有卷积层的通道数剪枝一半来构建一个简单的学生子网络块,然后通过在块的末尾添加一层1×1的卷积层将输出的通道数量扩展为原子网络块的输出通道数量。作为优选,所述的一次块蒸馏过程表示如下:其中Ak表示第k次块蒸馏的中间网络,sj是指蒸馏结束参数最优的学生子网络块,ti是教师子网络块;Ak的参数表示如下:块蒸馏过程通过最小化目标损失函数得到学生子网络块的最优参数;蒸馏第k个子网络块时,对于单个输入数据样本对(I,y)的目标损失函数表示为:其中λlocal是用来平衡目标损失函数的两项影响的参数,表示整个目标损失函数的第一项,表示整个目标损失函数的第二项,I是整个网络的单个输入数据样本,y是单个输入数据样本的真实标签,||·||F表示F范数,softmax(·)表示网络最终的输出和y的softmax损失值;因此,针对共有M个输入数据样本对的训练数据集{(I(1),y(1),...(I(M),y(M))},其最终的目标损失函数表示通过优化这个目标损失函数,得到对应子网络块的最优参数。与传统知识蒸馏方法相比,本专利技术的一种用于神经网络加速的渐进式块知识蒸馏方法能够有效地对深度本文档来自技高网
...

【技术保护点】
1.一种用于神经网络加速的渐进式块知识蒸馏方法,包括以下步骤:S1、输入原复杂网络和相关参数,定义方法目标;S2、将原复杂网络分成多个子网络块,基于学生子网络块设计准则,按块设计学生子网络块并随机初始化其参数;S3、蒸馏第一个子网络块,将S1中输入的原复杂网络作为第一次块蒸馏过程的教师网络,一次块蒸馏过程完成后得到第一个学生网络,其中蒸馏完成的第一个学生子网络块具有最优参数;S4、蒸馏下一个子网络块,将上一次块蒸馏过程得到的学生网络作为本次块蒸馏过程的教师网络,一次块蒸馏过程完成得到下一个学生网络,其中蒸馏完成的下一个学生子网络块具有最优参数;S5、重复步骤S4直到所有子网络块蒸馏过程完成,将最后一次块蒸馏得到的学生网络和最优参数作为最终的简单学生网络以及最终参数。

【技术特征摘要】
1.一种用于神经网络加速的渐进式块知识蒸馏方法,包括以下步骤:S1、输入原复杂网络和相关参数,定义方法目标;S2、将原复杂网络分成多个子网络块,基于学生子网络块设计准则,按块设计学生子网络块并随机初始化其参数;S3、蒸馏第一个子网络块,将S1中输入的原复杂网络作为第一次块蒸馏过程的教师网络,一次块蒸馏过程完成后得到第一个学生网络,其中蒸馏完成的第一个学生子网络块具有最优参数;S4、蒸馏下一个子网络块,将上一次块蒸馏过程得到的学生网络作为本次块蒸馏过程的教师网络,一次块蒸馏过程完成得到下一个学生网络,其中蒸馏完成的下一个学生子网络块具有最优参数;S5、重复步骤S4直到所有子网络块蒸馏过程完成,将最后一次块蒸馏得到的学生网络和最优参数作为最终的简单学生网络以及最终参数。2.根据权利要求1所述的一种用于神经网络加速的渐进式块知识蒸馏方法,其特征在于S1中所述的原复杂网络定义如下:原复杂网络T由N个子网络块构成,表示如下:ti是在T中的第i个子网络块,i∈{1,2,...,N},c是分类器的映射函数,为简化网络表达的符号;该复杂网络的参数表示为Wc和是指c和ti的参数,i∈{1,2,...,N};所述的子网络块定义如下:一个神经网络由卷积层、池化层和全连接层构成,将神经网络中两个相邻池化层间的子网络定义为一个子网络块。3.根据权利要求1所述的一种用于神经网络加速的渐进式块知识蒸馏方法,其特征在于S1中所述的方法目标定义如下:设计一个具有高计算效率和低存储占用空间的学生网络,并学习训练得到最优的参数;所述学生网络由N个学生子网络块构成,用表示,其中si表示S中的第i个学生子网络块,i∈{1,2,...,...

【专利技术属性】
技术研发人员:李玺赵涵斌汪慧
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1