神经网络学习 之 BP神经网络
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第二章BP算法的基本思想
第三章BP网络特性分析
第四章BP网络的训练分解
5.3
第一章概述
神经网络是1986年由Rumelhart和McCelland为首的科研小组提出,参见他们发表在Nature上的论文??。
BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络
模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映
射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和
阈值,使网络的误差平方和最小。
第二章 BP算法的基本思想
多层感知器在如何获取隐层的权值的问题上遇到了瓶颈。既然我们无法直接得到隐层的权值,能否先通过输出层得到输出结果和期望输出的误差来间接调整隐层的权值呢?BP算法就是采用
这样的思想设计出来的算法,它的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。
•正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
•反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
这两个过程的具体流程会在后文介绍。
BP算法的信号流向图如下图所示?
第三章 BP网络特性分析
我们分析一个ANN时,通常都是从它的三要素入手,即?
1)网络拓扑结构;?
2)传递函数;?
3)学习算法。
每一个要素的特性加起来就决定了这个ANN的功能特性。所以,我们也从这三要素入手对BP网络的研究。
3.1 BP网络的拓扑结构
上一次已经说了,BP网络实际上就是多层感知器,因此它的拓扑结构和多层感知器的拓扑结构相同。由于单隐层(三层)感知器已经能够解决简单的非线性问题,因此应用最为普遍。三层感知器的拓扑结构如下图所示。?
一个最简单的三层BP:?
3.2 BP网络的传递函数
BP网络采用的传递函数是非线性变换函数——(又称S函数)。其特点是函数本身及其导数都是连续的,因而在处理上十分方便。为什么要选择这个函数,等下在介绍BP网络的学习算法的时候会进行进一步的介绍。?
单极性S型函数曲线如下图所示。?
双极性S型函数曲线如下图所示。
3.3 BP网络的学习算法
BP网络的学习算法就是BP算法,又叫δ 算法(在ANN的学习过程中我们会发现不少具有多个名称的术语),以三层感知器为例,当网络输出与期望输出不等时,存在输出误差 E ,定义如下:
将以上误差定义式展开至隐层,有?
进一步展开至输入层,有?
由上式可以看出,网络输入误差是各层权值ωjκ、υij的函数,因此调整权值可改变误差?E。显然,调整权值的原则是使误差不断减小,因此应使权值与误差的梯度下降成正比,即?:
对于一般多层感知器,设共有?h?个隐层,按前向顺序各隐层节点数分别记
为?m1,m2,…,m h,各隐层输出分别记为?y1,y2,…,y h,各层权值矩阵分别记
为?W1,W2,…,W h,W h+1,则各层权值调整公式为
输出层
第?h?隐层
按以上规律逐层类推,则第一隐层权值调整公式
容易看出,BP学习算法中,各层权值调整公式形式上都是一样的,均由3个因素决定,即:
1.学习率?η
2.本层输出的误差信号δ
3.本层输入信号?Y(或X)
其中输入层误差信号与网络的期望输出与实际输出之差有关,直接反应了输出误差,而各隐层的误差信号与前面各层的误差信号有关,是从输出层开始逐层反传过来的。
可以看出BP算法属于δ学习规则类,这类算法常被称为误差的梯度下降算法。δ学习规则可以看成是Widrow-Hoff(LMS)学习规则的一般化(generalize)情况。LMS学习规则与神经元采用的变换函数无关,因而不需要对变换函数求导,δ学习规则则没有这个性质,要求变换函数可导。这就是为什么我们前面采用Sigmoid函数的原因。
综上所述,BP三要素如下图所示。
第四章 BP网络的训练分解
训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两部分:
•前向传输,逐层波浪式的传递输出值;
•逆向反馈,反向逐层调整权重和偏置;?
•我们先来看前向传输。
4.1前向传输(Feed-Forward前向反馈)
在训练网络之前,我们需要随机初始化权重和偏置,对每一个权重取[?1,1]的一个随机实数,每一个偏置取[0,1]的一个随机实数,之后就开始进行前向传输。
神经网络的训练是由多趟迭代完成的,每一趟迭代都使用训练集的所有记录,而每一次训练网络只使用一条记录,抽象的描述如下:
首先设置输入层的输出值,假设属性的个数为100,那我们就设置输入层的神经单元个数为100,输入层的结点N i为记录第i维上的属性值x i。对输入层的操作就这么简单,之后的每层就要复杂一些了,除输入层外,其他各层的输入值是上一层输入值按权重累加的结果值加上偏置,每个结点的输出值等该结点的输入值作变换?
前向传输的输出层的计算过程公式如下:?
对隐藏层和输出层的每一个结点都按照如上图的方式计算输出值,就完成前向传播的过程,紧接着是进行逆向反馈。
4.2逆向反馈(Backpropagation)
逆向反馈从最后一层即输出层开始,我们训练神经网络作分类的目的往往是希望最后一层的输出能够描述数据记录的类别,比如对于一个二分类的问题,我们常常用两个神经单元作为输出层,如果输出层的第一个神经单元的输出值比第二个神经单元大,我们认为这个数据记录属于第一类,否则属于第二类。
还记得我们第一次前向反馈时,整个网络的权重和偏置都是我们随机取,因此网络的输出肯定还不能描述记录的类别,因此需要调整网络的参数,即权重值和偏置值,而调整的依据就是网络的输出层的输出值与类别之间的差异,通过调整参数来缩小这个差异,这就是神经网络的优化目标。对于输出层:?
其中E j表示第j个结点的误差值,O j表示第j个结点的输出值,T j记录输出值,比如对于2分类问题,我们用01表示类标1,10表示类别2,如果一个记录属于类别1,那么其T1=0,T2=1。