MATLAB神经网络编程(五)——BP神经网络的模型结构与学习规则

来源:互联网 发布:天津医科大学考研知乎 编辑:程序博客网 时间:2024/05/07 18:40

《MATLAB神经网络编程》 化学工业出版社 读书笔记
第四章 前向型神经网络 4.3 BP传播网络

本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书


感知器神经网络的学习规则和LMS学习算法只能训练单层神经网络,而单层神经网络只能解决线性可分的分类问题。多层神经网络可以用于非线性分类问题,但是需要寻找训练多层网络的学习算法。

一,什么是BP神经网络

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

1,“是一种按误差逆传播算法训练的多层前馈网络”
BP是后向传播的英文缩写,那么传播对象是什么?传播的目的是什么?传播的方式是后向,可这又是什么意思呢。

传播的对象是误差,传播的目的是得到所有层的估计误差,后向是说由后层误差推导前层误差:

即BP的思想可以总结为

利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。

2,“BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)”

一个简单的三层BP网络:

BP的三层结构

BP算法是为了解决多层前向神经网络的权系数优化而提出来的;所以,BP算法也通常暗示着神经网络的拓扑结构是一种无反馈的多层前向网络。故而.有时也称无反馈多层前向网络为BP模型。

3,“BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。”

BP利用一种称为激活函数来描述层与层输出之间的关系,从而模拟各层神经元之间的交互反应。

激活函数必须满足处处可导的条件。那么比较常用的是一种称为S型函数的激活函数:
激活函数
当然也会使用其他的激活函数,在下文会仔细解说。

4,
神经网络的学习目的:

希望能够学习到一个模型,能够对输入输出一个我们期望的输出。

学习的方式:
在外界输入样本的刺激下不断改变网络的连接权值

学习的本质:
对各连接权值的动态调整
学习的核心:

权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。

上述内容引用了文档:http://www.cnblogs.com/wentingtu/archive/2012/06/05/2536425.html

使用了BP算法训练的神经网络,称为BP神经网络。在人工神经网络的时机应用中,BP网络广泛应用于函数逼近、模式识别与分类、数据压缩等。80%-90%的人工神经网络模型都是采用BP网络或者它的变形,BP网络也是前馈神经网络的核心部分,体现了人工神经网络的最精华部分。


二,BP网络模型结构

1,神经元模型。
一个基本的BP神经元模型如下图所示:

1

它具有R个输入,每个输入都通过一个适当的权值w和下一层连接,网络的输出可表达为:

a=f(wp+b)

BP 网络中隐藏层神经元传递函数通常用log-sigmoid型函数logsig,tan-sigmoid型函数tansig以及纯线性函数pureline。
如果BP网络的输出层是sigomoid型神经元,那么整个网络的输出就限制在一个较小的范围;如果是pureline型线性神经元,那么整个网络的输出可以取任意值。

BP网络的传递函数必须是可微的单调递增函数。在BP网络训练过程中计算函数logsin,tansig,pureline的倒数非常重要,所以MATLAB神经网络工具箱直接提供这些函数的导函数dlogsig,dtansig,dpureline。

2,前馈型神经网络结构。
前馈型神经网络通常有一个或者多个隐层,隐层中的神经元均采用S型传递函数(如上文中提到的logsig等),输出层的神经元采用线性传递函数。
隐层的非线性传递函数神经元可以学习输入输出之间的线性和非线性关系,线性输出层是为了拓宽网络输出。如果需要限定网络的输出(如限定在0和1之间),则可以采用S型传递函数。
下图是一个典型的两层BP网络,隐层的神经元传递函数tansig,输出层神经元传递函数pureline。

2


三,BP学习规则

BP网络的产生归功于BP算法的获得。BP算法属于δ算法,是一种监督式的学习算法。有监督的BP模型训练表示我们有一个训练集,它包括了: input X 和它被期望拥有的输出 output Y;所以对于当前的一个BP模型,我们能够获得它针对于训练集的误差;
BP算法由两部分组成:信息的正向传递与误差的反向传播。在正向传播的过程中,输入信息从输入经过隐含层逐层计算传向输出层,每一层的神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出,则计算输出层的误差变化值,然后反向传播,通过网络将误差信号沿着原来的额连接通路反向回来修改各层神经元的权值直到达到期望目标。

所以BP的核心思想就是:将输出误差以某种形式通过隐层向输入层逐层反传,这里的某种形式其实就是:

BP

也就是一种 “信号的正向传播 —-> 误差的反向传播”的过程:

BP


下面用一个例子来介绍BP算法推导,所用网络的简化图如下:

5
6
7
8
9

BP算法需要用到各层激活函数的一阶导数,所以要求其激活函数处处可微。

上述过程可以用示意图表示:

示意图

小结:BP算法的流程

1.正向传播

输入的样本从输入层经过隐单元一层一层进行处理,通过所有的隐层之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态产生影响。在输出层把现行输出和期望输出进行比较,如果现行输出不等于期望输出,则进入反向传播过程。

2.(误差)反向传播

反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小



参考文献
http://www.cnblogs.com/wengzilin/archive/2013/04/24/3041019.html
http://www.cnblogs.com/wentingtu/archive/2012/06/05/2536425.html

1 0
原创粉丝点击