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.

透彻理解神经网络剪枝算法相关推荐

  1. 收藏 | 一文总结70篇论文,帮你透彻理解神经网络的剪枝算法

    来源:DeepHub IMBA本文约9500字,建议阅读10+分钟 本文为你详细介绍神经网络剪枝结构.剪枝标准和剪枝方法. 无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的 ...

  2. 我总结了70篇论文的方法,帮你透彻理解神经网络的剪枝算法

    无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的性能都是最先进的.然而,它们在计算能力.内存或能源消耗方面的成本可能令人望而却步,这使得大部份公司的因为有限的硬件资源而完全 ...

  3. python井字棋ai_实现AI下井字棋的alpha-beta剪枝算法(python实现)

    代码参考自中国大学mooc上人工智能与信息社会陈斌老师的算法,我在原来的基础上增加了玩家输入的异常捕获 AlphaBeta剪枝算法是对Minimax方法的优化,能够极大提高搜索树的效率,如果对这个算法 ...

  4. ​通俗理解神经网络BP反向传播算法

    转载自  ​通俗理解神经网络BP反向传播算法 通俗理解神经网络BP反向传播算法 在学习深度学习相关知识,无疑都是从神经网络开始入手,在神经网络对参数的学习算法bp算法,接触了很多次,每一次查找资料学习 ...

  5. 如何透彻理解 Paxos 算法?

    我们主要讲解"如何透彻理解 Paxos 算法"? 文章目录 Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Pr ...

  6. 人工神经网络的算法原理,对人工神经网络的理解

    什么是人工神经网络及其算法实现方式 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点. 它从信息处理角度对人脑神经元网 ...

  7. 透彻理解迪杰斯特拉算法

    Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的<数据结构>,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来 ...

  8. 防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!

    大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻- 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻 ...

  9. 03 如何透彻理解 Paxos 算法?

    文章目录 03 如何透彻理解 Paxos 算法? Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Proposer 提案者 Acce ...

  10. 何恺明团队新作!深度学习网络架构新视角:通过相关图表达理解神经网络

    标题&作者团队 导语:恺明大神出品,必属精品.Facebook的研究员从一个新奇的角度对神经网络的表示与设计进行探索,提出了一种新颖的相关图表示方式.它有助于对现有网络架构进行更深层次的分析与 ...

最新文章

  1. python用Levenshtein计算文本相似度
  2. java反编译工具_Android APP 取证之逆向工具篇
  3. SpringCloud Gateway配置自定义路由404坑
  4. java读取codetable_解析Java对象的equals()和hashCode()的使用
  5. python之sys库
  6. copy和strong的区别
  7. 普中51单片机开发板笔记
  8. PTA新浪微博热门话题c++版——山东科技大学
  9. Unity Profiler分析器-Rendering
  10. 简洁大气留白风格源码资源站 emlog模板
  11. 【Ci24R1小尺寸 DFN8/2*2】2.4G双向系统超低成本之选
  12. CSS 技巧,冲鸭!
  13. 二值神经网络(Binary Neural Network,BNN)
  14. js UUID 生成
  15. 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下
  16. java opengl es_OPENGL ES 3.0编程指南
  17. matlab,sas,r培训,论SAS,R, Matlab, 和Stata
  18. 什么微型计算机出世,你不知道的秘密 手机屏幕类型全解析
  19. 小Q书桌-界面和操作类似iphone风格的快速启动器
  20. 搜狗拼字--疑难杂字的快速输入

热门文章

  1. 大数据开发学习脑图+学习路线清晰的告诉你!月薪30K很轻松
  2. 【PR学习笔记】PR学习笔记之PR快捷键
  3. The root link base_link has an inertia specified in the URDF, but KDL does not support a root ...
  4. linux windows 共享 smbd 部署
  5. 电脑如何连接无线打印服务器,电脑怎么联接无线路由器打印机
  6. SQL-小题推荐牛客8题精练版
  7. remix下ballot.sol调试
  8. Zend_Cache
  9. 游戏俄罗斯方块(c语言)
  10. 定了!自考还没有报名的每人补贴8000元!政策扶持,名额有限,速看!!!!...