深度学习之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) 网络的预测能力(也称泛化能力、推广能力)与训练能力(也称逼近能力、学习能力)的矛盾。一般情况下,训练能力差时,预测能力也差,并且一定程度上,随训练能力地提高,预测能力也提高。但这种趋势有一个极限,当达到此极限时,随训练能力的提高,预测能力反而下降,即出现所谓“过拟合”现象。此时,网络学习了过多的样本细节,而不能反映样本内含的规律。

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

相关文章推荐

scikit-learn : 线性回归,多元回归,多项式回归

使用scikit-learn学习线性回归,多元回归,多项式回归

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

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

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

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

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

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

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

系统学习深度学习(一) --深度学习与神经网络关系

转自:http://blog.csdn.net/zouxy09/article/details/8775518 最近开始学习深度学习,基本上都是zouxy09博主的文章,写的蛮好,很全面,也会根据自己...

BP神经网络和RNN神经网络的学习和实现。

一直在研究神经网络和深度学习。所以写下一些心得。无奈总是不记得反向更新的公式,所以记下来。神经网络和深度学习并不是想象中的那么不平易近人。只要掌握两点那么自己都可以写出来了。只要注意一个前向是怎么传播...

《神经网络与深度学习--Nilsen》+BP学习笔记

1. (pdf)书《神经网络与深度学习》NO.1章       1.1 感知器:先w1x1+w2x2+w3x3+b得到正负数,再阶跃函数(但在0点处感知器输出0)输出0或1。             ...

卷积神经网络入门

了解了BP之后,下一步便是学习CNN(卷积神经网络),最终利用CNN进行手写体识别 资料: http://blog.csdn.net/zouxy09/article/details/8775360

登陆界面的判断

//验证用户的登录 include("dbconnect.php"); //如果点击“退出” if(@$_GET['do']=="logout"){ } //判断登录情况 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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