BP神经网络

BP(Back Propagation)神经网络是1986年由以Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存储大量的输入/输出因施工和关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)和输出层(output layer)。

BP算法在于利用输出后的误差来估计传输层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层地反转下去,就获得了所有其他各层的误差估计。这样就形成了将输出层表现出的误差沿着与输入传送相反的方向反向后传算法,简称BP算法。使用BP算法进行学习的多级非循环网络称为BP网络,属于前向神经网络类型。

一、BP神经网络模型

BP(Back Propagation)神经网络分为两个过程

(1)工作信号正向传递子过程

(2)误差信号反向传递子过程

在BP神经网络中,单个样本有个输入,有个输出,在输入层和输出层之间通常还有若干个隐含层。实际 上,1989年Robert Hecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网 络来逼近,这就是万能逼近定理。所以一个三层的BP网络就可以完成任意的维到维的映射。即这三层分 别是输入层(I),隐含层(H),输出层(O)。如下图示

二、隐含层的选取

在BP神经网络中,输入层和输出层的节点个数都是确定的,而隐含层节点个数不确定,那么应该设置为多少才合适呢?实际上,隐含层节点个数的多少对神经网络的性能是有影响的,有一个经验公式可以确定隐含层节点数目,如下

其中为隐含层节点数目,为输入层节点数目,为输出层节点数目,为之间的调节常数。

三、正向传递子过程

现在设节点和节点之间的权值为,节点的阀值为,每个节点的输出值为,而每个节点的输出 值是根据上层所有节点的输出值、当前节点与上一层所有节点的权值和当前节点的阀值还有激活函数来实现的。具体计算方法如下

其中为激活函数,一般选取S型函数或者线性函数。

正向传递的过程比较简单,按照上述公式计算即可。在BP神经网络中,输入层节点没有阀值。

四、反向传递子过程

在BP神经网络中,误差信号反向传递子过程比较复杂,它是基于Widrow-Hoff学习规则的。假设输出层的所有结果为,误差函数如下

而BP神经网络的主要目的是反复修正权值和阀值,使得误差函数值达到最小。Widrow-Hoff学习规则是通过沿着相对误差平方和的最速下降方向,连续调整网络的权值和阀值,根据梯度下降法,权值矢量的修正正比于当前位置上E(w,b)的梯度,对于第个输出节点有

假设选择激活函数为

对激活函数求导,得到

那么接下来针对

其中有

同样对于

这就是著名的学习规则,通过改变神经元之间的连接权值来减少系统实际输出和期望输出的误差,这个规 则又叫做Widrow-Hoff学习规则或者纠错学习规则。

上面是对隐含层和输出层之间的权值和输出层的阀值计算调整量,而针对输入层和隐含层和隐含层的阀值调整量的计算更为复杂。假设是输入层第k个节点和隐含层第i个节点之间的权值,那么有

其中有

这样对学习规则理解更为深刻了吧。

有了上述公式,根据梯度下降法,那么对于隐含层和输出层之间的权值和阀值调整如下

而对于输入层和隐含层之间的权值和阀值调整同样有

至此BP神经网络的原理基本讲完。

五、BP神经网络的注意点

BP神经网络一般用于分类或者逼近问题。如果用于分类,则激活函数一般选用Sigmoid函数或者硬极限函数,如果用于函数逼近,则输出层节点用线性函数,即

BP神经网络在训练数据时可以采用增量学习或者批量学习。

增量学习要求输入模式要有足够的随机性,对输入模式的噪声比较敏感,即对于剧烈变化的输入模式,训练效果比较差,适合在线处理。批量学习不存在输入模式次序问题,稳定性好,但是只适合离线处理。

标准BP神经网络的缺陷:

(1)容易形成局部极小值而得不到全局最优值。

BP神经网络中极小值比较多,所以很容易陷入局部极小值,这就要求对初始权值和阀值有要求,要使

得初始权值和阀值随机性足够好,可以多次随机来实现。

(2)训练次数多使得学习效率低,收敛速度慢。

(3)隐含层的选取缺乏理论的指导。

(4)训练时学习新样本有遗忘旧样本的趋势。

BP算法的改进:

(1)增加动量项

引入动量项是为了加速算法收敛,即如下公式

动量因子一般选取。

(2)自适应调节学习率

(3)引入陡度因子

通常BP神经网络在训练之前会对数据归一化处理,即将数据映射到更小的区间内,比如[0,1]或[-1,1]。

原文发布于微信公众号 - 瓜大三哥(xiguazai_tortoise)

原文发表时间:2017-12-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

北大、北理工、旷视联手:用于图像语义分割的金字塔注意力网络

22680
来自专栏IT派

推荐|数据科学家需要了解的5大聚类算法

IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 聚类是一种涉及数据点分组的机器学习技术。给定一个数据点集,则可利用聚类算法将每个数据点分类...

33670
来自专栏机器学习算法工程师

深度学习以及卷积基础

作者:石文华 编辑:龚 赛 介 绍 ? 深度学习是机器学习的一个分支,是基于数据来学习表示数据的一组算法。下面我们列出最受欢迎的一些深度学习算法。 卷...

46080
来自专栏目标检测和深度学习

深度 | 语义分割网络DeepLab-v3的架构设计思想和TensorFlow实现

选自Medium 作者:Thalles Silva 机器之心编译 参与:Nurhachu Null、刘晓坤 深度卷积神经网络在各类计算机视觉应用中取得了显著的成...

74070
来自专栏蜉蝣禅修之道

由浅入深CNN中卷积层与转置卷积层的关系

导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷积层,在最近提出的卷积神经网络中越来越常见了,特别是在对抗生成神经...

828110
来自专栏磐创AI技术团队的专栏

使用Keras进行深度学习(二): CNN讲解及实践

前言:现今最主流的处理图像数据的技术当属深度神经网络了,尤其是卷积神经网络CNN尤为出名。本文将通过讲解CNN的介绍以及使用keras搭建CNN常用模型LeNe...

48340
来自专栏wOw的Android小站

[MachineLearning] 反向传播Back Propagation

如何直观地解释 back propagation 算法? - 胡逸夫的回答 - 知乎

10210
来自专栏marsggbo

DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络

介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录。 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博...

24390
来自专栏机器之心

深度 | 语义分割网络DeepLab-v3的架构设计思想和TensorFlow实现

选自Medium 作者:Thalles Silva 机器之心编译 参与:Nurhachu Null、刘晓坤 深度卷积神经网络在各类计算机视觉应用中取得了显著的成...

37550
来自专栏AI科技大本营的专栏

哪个才是解决回归问题的最佳算法?线性回归、神经网络还是随机森林?

编译 | AI科技大本营 参与 | 王珂凝 编辑 | 明 明 【AI科技大本营导读】现在,不管想解决什么类型的机器学习(ML)问题,都会有各种不同的算法可以供你...

71670

扫码关注云+社区

领取腾讯云代金券