透彻理解神经网络剪枝算法
1. 问题叙述
心血来潮写点最近做的成果,主要分成两个博客来进行阐述。研究生上了一年半看了不少关于剪枝神经网络方面的文章,但是有很少的文章能让人感觉到耳目一新,打通了任督二脉的感觉。前段时间看到了一个剪枝算法就有这种感觉。和大家分享下。
全连接神经网络在很多方面都用的很多,这我就不赘述了,全连接有很强的逼近能力但是很容易导致过拟合。所以 机器学习与模式识别最核心的问题就是减小系统的复杂度(description -length【1】,VC-dimensions【2】),在神经网络中,这样的核心问题就变成了减少连接权值的数量。
减小模型复杂度方面,很常见的方法是在损失函数后面加上惩罚项
为了是模型复杂度减小,通常使用2范数【3】
但是2范数误差使权值和阈值稀疏化,进而使用1范数对权值和阈值进行惩罚
进而陆续有很多关于惩罚项的改进【4】【5】【6】,接下来我要阐述的算法是OBS算法,很简单,并且很容易实现,效果显著。
2. OBS算法详述【7】
OBS算法是一种基于Hessian矩阵的网络修剪算法,首先,构造误差曲面的一个局部模型,分析权值的扰动所造成的影响。
通过对误差函数进行Taylor展开
H为Hessian矩阵,T表示矩阵的转置,w为神经网络中的参数(包括权值和阈值), E为训练集的训练误差,训练神经网络用任意的优化算法,该剪枝算法都是适用的。通过优化算法(如L-M算法)得到一个局部最小点,则上式第一项为0,忽略第三项高阶无穷小项。可以得到
该方法通过将其中一个权值置为0,从而可以写成
为单位向量,只有在第q项为1其他的项为0。
当其中一个权值或者是阈值置为0时,使 最小,可以得到
通过拉格朗日乘子法,可以将有约束优化问题转化为无约束优化问题,
为拉格朗日乘子,通过对函数 求偏导,可以得到
导致误差的变化为
算法流程图如下
3. 感想
1.OBS算法的全称为optimal brain surgeon,翻译成中文就是最优外科手术,表面的意思就是该方法是和神经网络过程是分开的。
2.该方法是一种框架,只要是模型能求出参数的梯度,那么都可用这个方法进行稀疏化。
4. 例子
y=sin(x) 生成100个样本,然后随机生成(0,1)的噪声加到干净的样本上
A: 用全连接神经网络对y=sin(x)函数近似,如图,隐层节点为17个
B:通过剪枝算法得到的网络为
通过人为化简为
从上图可以看出,全连接神经网络用来对函数y=sin(x)进行逼近只需要4个隐层节点,所以该算法可以将多余的隐层节点去掉,并且可以进行特征选择,将噪声去掉。
5. 引用
[1] Barron, A., Rissanen, J., & Yu, B. (1998). The minimum description length principle in coding and modeling. IEEE Transactions on Information Theory, 44(6), 2743-2760.
[2] Vapnik, V. N., & Chervonenkis, A. Y. (2015). On the uniform convergence of relative frequencies of events to their probabilities Measures of complexity (pp. 11-30): Springer.
[3] Chow, M.-Y., & Teeter, J. (1994). An analysis of weight decay as a methodology of reducing three-layer feedforward artificial neural networks for classification problems. Paper presented at the Neural Networks, 1994. IEEE World Congress on Computational Intelligence., 1994 IEEE International Conference on.
[4] Weigend, A. S., Rumelhart, D. E., & Huberman, B. A. (1991). Generalization by weight-elimination with application to forecasting. Paper presented at the Advances in neural information processing systems.
[5] Hoyer, P. O. (2004). Non-negative matrix factorization with sparseness constraints. Journal of machine learning research, 5(Nov), 1457-1469.
[6] Zeng, H., & Trussell, H. J. (2010). Constrained dimensionality reduction using a Mixed-Norm penalty function with neural networks. IEEE Transactions on Knowledge and Data Engineering, 22(3), 365-380.
[7] Hassibi, B., & Stork, D. G. (1993). Second order derivatives for network pruning: Optimal brain surgeon. Paper presented at the Advances in neural information processing systems.
透彻理解神经网络剪枝算法相关推荐
- 收藏 | 一文总结70篇论文,帮你透彻理解神经网络的剪枝算法
来源:DeepHub IMBA本文约9500字,建议阅读10+分钟 本文为你详细介绍神经网络剪枝结构.剪枝标准和剪枝方法. 无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的 ...
- 我总结了70篇论文的方法,帮你透彻理解神经网络的剪枝算法
无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的性能都是最先进的.然而,它们在计算能力.内存或能源消耗方面的成本可能令人望而却步,这使得大部份公司的因为有限的硬件资源而完全 ...
- python井字棋ai_实现AI下井字棋的alpha-beta剪枝算法(python实现)
代码参考自中国大学mooc上人工智能与信息社会陈斌老师的算法,我在原来的基础上增加了玩家输入的异常捕获 AlphaBeta剪枝算法是对Minimax方法的优化,能够极大提高搜索树的效率,如果对这个算法 ...
- 通俗理解神经网络BP反向传播算法
转载自 通俗理解神经网络BP反向传播算法 通俗理解神经网络BP反向传播算法 在学习深度学习相关知识,无疑都是从神经网络开始入手,在神经网络对参数的学习算法bp算法,接触了很多次,每一次查找资料学习 ...
- 如何透彻理解 Paxos 算法?
我们主要讲解"如何透彻理解 Paxos 算法"? 文章目录 Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Pr ...
- 人工神经网络的算法原理,对人工神经网络的理解
什么是人工神经网络及其算法实现方式 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点. 它从信息处理角度对人脑神经元网 ...
- 透彻理解迪杰斯特拉算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的<数据结构>,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来 ...
- 防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻- 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻 ...
- 03 如何透彻理解 Paxos 算法?
文章目录 03 如何透彻理解 Paxos 算法? Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Proposer 提案者 Acce ...
- 何恺明团队新作!深度学习网络架构新视角:通过相关图表达理解神经网络
标题&作者团队 导语:恺明大神出品,必属精品.Facebook的研究员从一个新奇的角度对神经网络的表示与设计进行探索,提出了一种新颖的相关图表示方式.它有助于对现有网络架构进行更深层次的分析与 ...
最新文章
- python用Levenshtein计算文本相似度
- java反编译工具_Android APP 取证之逆向工具篇
- SpringCloud Gateway配置自定义路由404坑
- java读取codetable_解析Java对象的equals()和hashCode()的使用
- python之sys库
- copy和strong的区别
- 普中51单片机开发板笔记
- PTA新浪微博热门话题c++版——山东科技大学
- Unity Profiler分析器-Rendering
- 简洁大气留白风格源码资源站 emlog模板
- 【Ci24R1小尺寸 DFN8/2*2】2.4G双向系统超低成本之选
- CSS 技巧,冲鸭!
- 二值神经网络(Binary Neural Network,BNN)
- js UUID 生成
- 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下
- java opengl es_OPENGL ES 3.0编程指南
- matlab,sas,r培训,论SAS,R, Matlab, 和Stata
- 什么微型计算机出世,你不知道的秘密 手机屏幕类型全解析
- 小Q书桌-界面和操作类似iphone风格的快速启动器
- 搜狗拼字--疑难杂字的快速输入
热门文章
- 大数据开发学习脑图+学习路线清晰的告诉你!月薪30K很轻松
- 【PR学习笔记】PR学习笔记之PR快捷键
- The root link base_link has an inertia specified in the URDF, but KDL does not support a root ...
- linux windows 共享 smbd 部署
- 电脑如何连接无线打印服务器,电脑怎么联接无线路由器打印机
- SQL-小题推荐牛客8题精练版
- remix下ballot.sol调试
- Zend_Cache
- 游戏俄罗斯方块(c语言)
- 定了!自考还没有报名的每人补贴8000元!政策扶持,名额有限,速看!!!!...