论文导读:面向卷积神经网络的卷积核冗余消除策略-阿里云开发者社区

开发者社区> 【方向】> 正文

论文导读:面向卷积神经网络的卷积核冗余消除策略

简介: 本篇论文针对卷积神经网络在训练阶段所需的大量存储与计算资源,提出了一种改进的冗余卷积核消除策略,精简每个卷积层中冗余的卷积核,进而降低模型训练开销,使模型训练过程从云端转移至本地成为可能。
+关注继续查看

更多深度文章,请关注:https://yq.aliyun.com/cloud

研究背景

近几年来,卷积神经网络(Convolutional Neutral Network, CNN)在计算机视觉、自然语言处理以及语音识别等众多领域得到了广泛的应用。然而CNN强大的性能依赖于海量的存储与计算资源。一般来说,CNN通常在离线环境下,使用高性能CPU/GPU集群进行模型训练。然而,出于隐私性、网络延迟以及资源消耗等方面的考虑,我们更倾向于在本地而非远程完成CNN模型的训练。为此,减少CNN网络结构中的参数数量,避免巨大的存储与计算开销就显得尤为重要。

本篇论文对文献《Deep convolutional neural network on ios mobile devices》中提出的卷积核冗余消除思想提出了进一步的优化。深层卷积网络通常使用过参数化的卷积核来提取特征,而这种方式使得不同卷积核间存在不同的稀疏度(Sparsity),部分卷积核的权重参数可能过于稀疏,对模型性能提升的效果有限。我们可以根据一定的阈值来过滤稀疏度较高的卷积核,进而精简CNN网络结构,提高模型运行效率。


研究内容

在CNN的前向传播过程中,卷积核(4维张量,\(Win R^{Ntimes Ctimes Htimes W}\))对输入数据(3维张量,\(Xin R^{Ctimes Ytimes X}\))进行卷积运算,以提取不同的数据特征,输出结果为一个3维张量(\(Yin R^{Ntimes Y'times X'}\)),其中\(N\)表示卷积核的数量,\(C\)、\(H\)和\(W\)分别表示卷积核的通道数、高度与宽度,\(Y\)、\(X\)与\(Y'\)、\(X'\)分别表示模型输入数据与输出数据的尺度。

稀疏度定义

卷积核的稀疏度根据所处卷积层的权重参数来定义。对于卷积层\(l\),\(M_{l}\)表示\(l\)层中所有卷积核权重参数绝对值的均值,如式(1)所示:

$$ M_{l}=\frac{\sum_{n,c,w,h}\mid k_{l,ncwh}\mid}{N\times C\times W\times H}\tag{1} $$

其中,\(n,c,w,h\)分别表示卷积核在各个维度的下标,\(l\)表示卷积核权重\(k\)所在的卷积层。

进而,卷积层\(l\)中第\(n\)个卷积核的稀疏度\(S_{l}(n)\)定义如下:

$$ S_{l}(n)=\frac{\sum_{c,w,h}\sigma(k_{l,ncwh})}{C\times W\times H}\tag{2} $$

$$ \sigma(x) = \begin{cases} 1, & \text{if $|x|

如果卷积核\(n\)的一些权重小于\(l\)层中权重的均值,那么\(S_{l}(n)\)会接近于1,这也意味着当前卷积核相比其他卷积核更加冗余。针对这种情况,本篇论文提出了以下两种方法,利用稀疏度对冗余的卷积核进行剪枝。

逐层优化算法

对同一卷积层中的所有卷积核按照稀疏度降序排列,可得有序列表\([S_{l}(1),S_{l}(2),dots,S_{l}(N)]\)。此时,待删除的卷积核数量由约减因子\(rin[0,1)^{L}\)决定,其中\(L\)表示CNN网络结构中卷积层的数量,\(r_{i}\)表示第\(i\)层中待删除卷积核的数量比例。

以卷积层\(l\)为例,冗余卷积核的精简过程如下图所示。令\(N=10\),\(r_{l}=0.3\),此时卷积层\(l\)中待删除的卷积核数量为\(r_{l}N=3\),因此,删除\(l\)中稀疏度最高的3个卷积核\(k_{1}\)、\(k_{2}\)与\(k_{3}\),并使用剩余卷积核生成卷积层\(l\)的输出。随后,使用精简后的卷积层训练模型,强化卷积层中剩余的冗余度较低的卷积核,以保证模型能够取得更好的效果。


bd3c9f654c90a5fa703eadeaa7a9eda52e59fa08.png

通过对卷积层中剩余权重参数数量的估计,逐层优化算法能够在满足指定计算开销的前提下,灵活地确定约减因子\(r\)。

模型的计算开销可通过卷积层中权重参数的数量来粗略估计,经过精简后的卷积层的权重参数可通过如下方式计算:

$$ weights\ remained(r')=\left[1,\left(r_{1:(L-1)}'\right)^T\right]Dr'\tag{4} $$

其中,向量\(r'=1-r\)表示每个卷积层中剩余卷积核的比例,\(Din R^{Ltimes L}\)为对角矩阵,\(D_{ii}=W_{i}H_{i}C_{i}N_{i}\)表示卷积层\(i\)中所有卷积核的权重数量,向量\(left[1,left(r_{1:(L-1)}'right)^Tright]in R^{1times L}\),其具体形式为\([1,1-r_{1},1-r_{2},dots,1-r_{L-1}]^T\)。

灵活确定约减因子\(r\)的过程可拆分为两步:首先,在满足指定计算开销的前提下,使用不同的约减因子\(r\)精简CNN网络结构,例如\(rin[0.1,0.6]\),训练模型并评估模型性能,从结果中挑选出性能最优模型所对应的约减因子\(r_{fix}\)。

随后,将模型划分为前、中、后三个部分,并针对模型的不同部分各自调整\(r_{fix}\),\(r_{fix}\)的调整需确保模型整体的计算开销保持不变,评估方式如式(4)所示。通过提高模型某一部分的约减因子并降低其他部分的约减比例,我们可以探究CNN模型中不同部分对模型最终效果的影响。

实验表明,在模型计算开销保持不变的前提下,步骤二相较于步骤一能够带来进一步的性能提升。

梯度优化算法

此外,作者还提出了一种梯度优化算法,基于神经网络构建了一个回归模型,学习约减因子\(r\)与CNN网络性能\(P\)之间的关系。对于初始值\(r^0\),回归模型计算使用\(r^0\)精简CNN结构后的模型性能,并以此计算模型残差与梯度,以一定的步长\(alpha\)更新\(r^0\),得到\(r^1\),反复迭代这一过程,最终即可获得符合性能要求的最优约减因子\(r_{optimized}\)。此时,\(r_{optimized}\)能够确保CNN在保持一定性能的前提下,尽可能多地精简其网络结构中冗余的卷积核,提高运行效率。

梯度优化算法的工作流程如下图所示。


f257d82f9bc231cbcb67a246d89c37b728e8e1fc.png

其中,\(r^i\)表示第\(i\)次迭代时约减因子的取值,\(P\)表示需满足的性能指标,\(R(r^i)\)表示约减因子\(r^i\)对应的CNN网络性能,约减因子\(r\)根据式(5)更新:

$$ r^{i+1}=r^i-\alpha\frac{\partial D(R(r^i),P)}{\partial r^i}\tag{5} $$


实验结果

在实验环节,作者将文献《Accurate image super-resolution using very deep convolutional networks》中使用的残差卷积网络作为测试网络,并以卷积网络输出在峰值信噪比(Peak Signal to Noise Ratio, PSNR)上的损耗作为模型性能的评估标准。测试数据集使用SR Set5\(times\)2与Set14\(times\)2两种数据集。测试网络结构如下图所示。


7bcc56dc7008d362777137bae2a696b3e7b18c1f.png

表1展示了逐层优化算法在所有卷积层使用相同约减因子情况下的实验结果,可以发现当\(r\)取值为0.25时,CNN输出结果的PSNR损耗最低,仅为0.24/0.27,此时CNN网络仅保留了完整结构中56.3%的参数。


31ec4b50768421091fdf7a51b5d7440831c86a37.png

将测试网络以6、7、7层的方式划分为前、中、后三个部分,逐部分地调整对应的约减因子,实验结果如表2所示。可以看出,在CNN模型剩余参数数量几乎相同的情况下,若将当前6层卷积层对应的约减因子\(r_{front}\)调整为0.44,CNN模型的性能能够进一步提升,PSNR损耗从0.24降至0.20。此时,模型三部分的约减比例分别为0.44、0.06、0.25,这也表明在测试网络中,前几层卷积层相对比较冗余,模型后半部分的卷积层在预测过程中发挥着更加关键的作用。


3fd033d4c06dbefcbcd173c9429d5783664ab7ac.png

将PSNR损耗限制在0.25,梯度优化算法的优化过程与结果如表3所示。


a415a61e552be87a80ee69939a7d8653b9e38f7a.png

总结

在本篇论文中,作者就深层卷积网络的卷积核冗余消除策略展开了讨论,提出了两种能够有效约减CNN模型参数的算法:逐层优化算法以及梯度优化算法。前者在移除50%CNN模型参数的同时,仅带来了不足1%的性能损耗;而后者能够根据具体的模型性能指标,自动获得冗余消除策略对应的约减因子。相比于其他卷积核精简领域的研究工作,本篇论文采取的做法更为灵活,更适合应用于结构复杂的卷积网络模型之中。


本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《A Kernel Redundancy Removing Policy for Convolutional Neural Network》,作者:Chih-Ting Liu,Yi-Heng Wu,Yu-Sheng Lin与Shao-Yi Chien,译者:6816816151,审阅:爱小乖

文章为简译,更为详细的内容,请查看原文,附件为原文pdf

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

附件下载:https://developer.aliyun.com/topic/download?id=415

相关文章
入门篇:卷积神经网络指南(一)
何为卷积神经网络,它来自何方?又要走向何处?跟着作者的节奏,一起来开始探索CNN吧。
5208 0
深度剖析卷积神经网络
深度了解卷积神经网络各个组件,顺带自建一个属于自己的神经网络。
17306 0
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
17 0
产品百科 |Ali RTC Android 网络环境监控与弱网策略
阿里云 RTC 提供网络质量监控功能,您可以通过使用 AliRtcNetworkQuality 回调来获取网络质量评价。
49 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4398 0
TensorFlow 实战卷积神经网络之 LeNet
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! LeNet 项目简介 1994 年深度学习三巨头之一的 Yan LeCun 提出了 LeNet 神经网络,这是最早的卷积神经网络。
2872 0
云MongoDB网络安全策略和权限管理体系
阿里云MongoDB在市场上实际使用时,如何保障数据库安全性?又是如何防止数据库受到攻击?本文将带领你了解云数据库MongoDB云环境的网络安全策略和MongoDB自身的权限管理体系。
2540 0
+关注
【方向】
欢迎各位对内容方向及质量提需求,我们尽量满足,将国外优质的内容呈现给大家!
696
文章
5
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载