深度学习之BP神经网络

原创 2017年01月03日 20:52:17

深度学习之BP神经网络

BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

这里写图片描述

BP神经元

这里写图片描述

第j个神经元的净输入值Sj为:
这里写图片描述
净输入 通过传递函数(Transfer Function)f (·)后,便得到第j个神经元的输出:
这里写图片描述
式中f是单调上升函数,而且必须是有界函数,因为细胞传递的信号不可能无限增加,必有一最大值。

事实上,对于单个神经元而言,若忽视传递函数,其本质上就是LR算法。

反向传播

反向传输是BP神经网络的特点,故详细说明此部分。
1)误差函数
第p个样本的误差:
这里写图片描述
其中,tp为期望输出,yp为经过网络后的输出,有p个学习样本,m个输出节点。
全局误差:
这里写图片描述
此处不做具体的公式推导,改用较为直观的的方式解释,如下图:
这里写图片描述

情况一:
当误差对权值的偏导数大于零时,权值调整量为负,实际输出大于期望输出,权值向减少方向调整,使得实际输出与期望输出的差减少。
情况二:
当误差对权值的偏导数小于零时,权值调整量为正,实际输出小于期望输出,权值向增大方向调整,使得实际输出与期望输出的差减少。

BP神经网络优缺点

优点:
(1)网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。这使得它特别适合于求解内部机制复杂的问题;
(2)网络能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;
(3)网络具有一定的推广、概括能力。

问题:
(1) BP算法的学习速度很慢,其原因主要有:
① 由于BP算法本质上为梯度下降法,而它所要优化的目标函数又非常 复杂,因此,必然会出现“锯齿形现象”,这使得BP算法低效;
② 存在麻痹现象,由于优化的目标函数很复杂,它必然会在神经元输出 接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;
③ 为了使网络执行BP算法,不能用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法将引起算法低效。
(2) 网络训练失败的可能性较大,其原因有:
① 从数学角度看,BP算法为一种局部搜索的优化方法,但它要解决的问题为求解复杂非线性函数的全局极值,因此,算法很有可能陷入局部极值,使训练失败;
② 网络的逼近、推广能力同学习样本的典型性密切相关,而从问题中选取典型样本实例组成训练集是一个很困难的问题。
(3) 难以解决应用问题的实例规模和网络规模间的矛盾。这涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题;
(4) 网络结构的选择尚无一种统一而完整的理论指导,一般只能由经验选定。为此,有人称神经网络的结构选择为一种艺术。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题;
(5) 新加入的样本要影响已学习成功的网络,而且刻画每个输入样本的特征的数目也必须相同;
(6) 网络的预测能力(也称泛化能力、推广能力)与训练能力(也称逼近能力、学习能力)的矛盾。一般情况下,训练能力差时,预测能力也差,并且一定程度上,随训练能力地提高,预测能力也提高。但这种趋势有一个极限,当达到此极限时,随训练能力的提高,预测能力反而下降,即出现所谓“过拟合”现象。此时,网络学习了过多的样本细节,而不能反映样本内含的规律。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

深度学习BP算法 BackPropagation以及详细例子解析

反向传播算法是多层神经网络的训练中举足轻重的算法,本文着重讲解方向传播算法的原理和推导过程。因此对于一些基本的神经网络的知识,本文不做介绍。在理解反向传播算法前,先要理解神经网络中的前馈神经网络算法。...

Deep Learning(深度学习)整理,RNN,CNN,BP

 申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2、初级(浅层)特征...

深度学习框架Caffe学习笔记(8)-BP神经网络算法

BP神经网络的计算流程为,先根据输入数据各个节点的权重偏向,计算出神经网络的输出(前向传播计算),通过计算输出与理想输出比较得到误差,再根据误差函数再各个节点的偏导数计算出各权重、偏向的调整量(反向传...

深度学习BP算法的推导(附加RNN,LSTM的推导说明)

注:1)这篇文章主要参考Alex Graves的博士论文《Supervised Sequence Labelling with Recurrent Neural Networks》 详细介绍其关于BP...

深度学习算法实践8---BP算法详解

BP算法是关于误差的反向传播算法,就是从输出层开始,将结果与预期结果相比较,求出误差,然后按照梯度最大下降方向,调整神经元的联接权值,然后依次逐层调整各层之间的连接权值,对于批量学习方式而言,不断重复...
  • Yt7589
  • Yt7589
  • 2016年08月24日 19:06
  • 3951

深度学习之后向传输(BP)算法

深度学习的BP算法

神经网络和深度学习-学习总结

1. 简介     神经网络和深度学习是由Michael Nielsen所写,其特色是:兼顾理论和实战,是一本供初学者深入理解Deep Learning的好书。 2. 使用神经网络识别手写数字...
  • MyArrow
  • MyArrow
  • 2016年05月05日 14:19
  • 15750

BP神经网络(python代码)

神经网络是深度学习的基础。个人理解神经网络就是可以拟合任何一种广义线性模型的结构,本文主要记录python代码的学习笔记。...

Python进行时:一个简单的神经网络实现及代码详解

神经网络是深度学习的基础,所以我认为,学习深度学习有两大基石,即:学好神经网络理论,学好实现理论的利器——Python。 一篇很好的文章,用Python编写了简单的BP神经网络,并几乎将所有代码解释...

Python3实现BP神经网络

主要是实现了这位大佬的代码,顺便加了一些自己的理解http://www.cnblogs.com/Finley/p/5946000.html import math import random ran...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习之BP神经网络
举报原因:
原因补充:

(最多只允许输入30个字)