神经网络学习之BP神经网络Word文件下载.docx

上传人:b****2 文档编号:14596834 上传时间:2022-10-23 格式:DOCX 页数:13 大小:1.31MB
下载 相关 举报
神经网络学习之BP神经网络Word文件下载.docx_第1页
第1页 / 共13页
神经网络学习之BP神经网络Word文件下载.docx_第2页
第2页 / 共13页
神经网络学习之BP神经网络Word文件下载.docx_第3页
第3页 / 共13页
神经网络学习之BP神经网络Word文件下载.docx_第4页
第4页 / 共13页
神经网络学习之BP神经网络Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

神经网络学习之BP神经网络Word文件下载.docx

《神经网络学习之BP神经网络Word文件下载.docx》由会员分享,可在线阅读,更多相关《神经网络学习之BP神经网络Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

神经网络学习之BP神经网络Word文件下载.docx

∙正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。

假如输出层的实际输出与期望的输出(教师信号)不符,如此转入误差的反向传播阶段。

∙反向传播时,将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。

这两个过程的具体流程会在后文介绍。

BP算法的信号流向图如如下图所示 

第三章BP网络特性分析

我们分析一个ANN时,通常都是从它的三要素入手,即 

1)网络拓扑结构;

2)传递函数;

3)学习算法。

每一个要素的特性加起来就决定了这个ANN的功能特性。

所以,我们也从这三要素入手对BP网络的研究。

3.1BP网络的拓扑结构

上一次已经说了,BP网络实际上就是多层感知器,因此它的拓扑结构和多层感知器的拓扑结构一样。

由于单隐层〔三层〕感知器已经能够解决简单的非线性问题,因此应用最为普遍。

三层感知器的拓扑结构如如下图所示。

一个最简单的三层BP:

3.2BP网络的传递函数

BP网络采用的传递函数是非线性变换函数——Sigmoid函数〔又称S函数〕。

其特点是函数本身与其导数都是连续的,因而在处理上十分方便。

为什么要选择这个函数,等下在介绍BP网络的学习算法的时候会进展进一步的介绍。

单极性S型函数曲线如如下图所示。

双极性S型函数曲线如如下图所示。

3.3BP网络的学习算法

BP网络的学习算法就是BP算法,又叫δ算法〔在ANN的学习过程中我们会发现不少具有多个名称的术语〕,以三层感知器为例,当网络输出与期望输出不等时,存在输出误差E,定义如下:

将以上误差定义式展开至隐层,有 

进一步展开至输入层,有 

由上式可以看出,网络输入误差是各层权值ωjκ、υij的函数,因此调整权值可改变误差 

E。

显然,调整权值的原如此是使误差不断减小,因此应使权值与误差的梯度下降成正比,即 

对于一般多层感知器,设共有 

个隐层,按前向顺序各隐层节点数分别记为 

m1,m2,…,mh,各隐层输出分别记为 

y1,y2,…,yh,各层权值矩阵分别记为 

W1,W2,…,Wh,Wh+1,如此各层权值调整公式为

输出层

第 

隐层

按以上规律逐层类推,如此第一隐层权值调整公式

容易看出,BP学习算法中,各层权值调整公式形式上都是一样的,均由3个因素决定,即:

1.学习率 

η

2.本层输出的误差信号δ

3.本层输入信号 

Y〔或X〕

其中输入层误差信号与网络的期望输出与实际输出之差有关,直接反响了输出误差,而各隐层的误差信号与前面各层的误差信号有关,是从输出层开始逐层反传过来的。

可以看出BP算法属于δ学习规如此类,这类算法常被称为误差的梯度下降算法。

δ学习规如此可以看成是Widrow-Hoff(LMS)学习规如此的一般化(generalize)情况。

LMS学习规如此与神经元采用的变换函数无关,因而不需要对变换函数求导,δ学习规如此如此没有这个性质,要求变换函数可导。

这就是为什么我们前面采用Sigmoid函数的原因。

综上所述,BP三要素如如下图所示。

第四章BP网络的训练分解

训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两局部:

∙前向传输,逐层波浪式的传递输出值;

∙逆向反响,反向逐层调整权重和偏置;

我们先来看前向传输。

前向传输〔Feed-Forward前向反响〕

在训练网络之前,我们需要随机初始化权重和偏置,对每一个权重取[−1,1]的一个随机实数,每一个偏置取[0,1]的一个随机实数,之后就开始进展前向传输。

神经网络的训练是由多趟迭代完成的,每一趟迭代都使用训练集的所有记录,而每一次训练网络只使用一条记录,抽象的描述如下:

首先设置输入层的输出值,假设属性的个数为100,那我们就设置输入层的神经单元个数为100,输入层的结点Ni为记录第i维上的属性值xi。

对输入层的操作就这么简单,之后的每层就要复杂一些了,除输入层外,其他各层的输入值是上一层输入值按权重累加的结果值加上偏置,每个结点的输出值等该结点的输入值作变换 

前向传输的输出层的计算过程公式如下:

对隐藏层和输出层的每一个结点都按照如上图的方式计算输出值,就完成前向传播的过程,紧接着是进展逆向反响。

逆向反响〔Backpropagation〕

逆向反响从最后一层即输出层开始,我们训练神经网络作分类的目的往往是希望最后一层的输出能够描述数据记录的类别,比如对于一个二分类的问题,我们常常用两个神经单元作为输出层,如果输出层的第一个神经单元的输出值比第二个神经单元大,我们认为这个数据记录属于第一类,否如此属于第二类。

还记得我们第一次前向反响时,整个网络的权重和偏置都是我们随机取,因此网络的输出肯定还不能描述记录的类别,因此需要调整网络的参数,即权重值和偏置值,而调整的依据就是网络的输出层的输出值与类别之间的差异,通过调整参数来缩小这个差异,这就是神经网络的优化目标。

对于输出层:

其中Ej表示第j个结点的误差值,Oj表示第j个结点的输出值,Tj记录输出值,比如对于2分类问题,我们用01表示类标1,10表示类别2,如果一个记录属于类别1,那么其T1=0,T2=1。

中间的隐藏层并不直接与数据记录的类别打交道,而是通过下一层的所有结点误差按权重累加,计算公式如下:

其中Wjk表示当前层的结点j到下一层的结点k的权重值,Ek下一层的结点k的误差率。

计算完误差率后,就可以利用误差率对权重和偏置进展更新,首先看权重的更新:

其中λ表示表示学习速率,取值为0到1,学习速率设置得大,训练收敛更快,但容易陷入局部最优解,学习速率设置得比拟小的话,收敛速度较慢,但能一步步逼近全局最优解。

更新完权重后,还有最后一项参数需要更新,即偏置:

至此,我们完成了一次神经网络的训练过程,通过不断的使用所有数据记录进展训练,从而得到一个分类模型。

不断地迭代,不可能无休止的下去,总归有个终止条件。

4.3训练终止条件

每一轮训练都使用数据集的所有记录,但什么时候停止,停止条件有下面两种:

1.设置最大迭代次数,比如使用数据集迭代100次后停止训练

2.计算训练集在网络上的预测准确率,达到一定门限值后停止训练

第五章BP网络运行的具体流程

网络结构

输入层有n个神经元,隐含层有p个神经元,输出层有q个神经元。

变量定义

输入变量:

x=(x1,x2,…,xn)

隐含层输入变量:

hi=(hi1,hi2,…,hip)

隐含层输出变量:

ho=(ho1,ho2,…,hop)

输出层输入变量:

yi=(yi1,yi2,…,yiq)

输出层输出变量:

yo=(yo1,yo2,…,yoq)

期望输出向量:

do=(d1,d2,…,dq)

输入层与中间层的连接权值:

wih

隐含层与输出层的连接权值:

who

隐含层各神经元的阈值:

bh

输出层各神经元的阈值:

bo

样本数据个数:

k=1,2,…,m

激活函数:

f(⋅)

误差函数:

第一步:

网络初始化

给各连接权值分别赋一个区间(−1,1)内的随机数,设定误差函数e,给定计算精度值ε和最大学习次数M。

第二步:

随机选取

随机选取第k个输入样本以与对应的期望输出 

x(k)=(x1(k),x2(k),…,xn(k))do(k)=(d1(k),d2(k),…,dq(k))

第三部:

隐含层计算

计算隐含层各神经元的输入和输出 

第四步:

求偏导数

利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数δo(k) 

第六步:

修正权值

利用输出层各神经元的δo(k)和隐含层各神经元的输出来修正连接权值who(k)。

第七部:

利用隐含层各神经元的δh(k)和输入层各神经元的输入修正连接权值。

第八步:

计算全局误差

第九步:

判断模型合理性

判断网络误差是否满足要求。

当误差达到预设精度或者学习次数大于设计的最大次数,如此完毕算法。

否如此,选取下一个学习样本以与对应的输出期望,返回第三部,进入下一轮学习。

第六章BP网络的设计

在进展BP网络的设计是,一般应从网络的层数、每层中的神经元个数和激活函数、初始值以与学习速率等几个方面来进展考虑,下面是一些选取的原如此。

6.1网络的层数

理论已经证明,具有偏差和至少一个S型隐层加上一个线性输出层的网络,能够逼近任何有理函数,增加层数可以进一步降低误差,提高精度,但同时也是网络复杂化。

另外不能用仅具有非线性激活函数的单层网络来解决问题,因为能用单层网络解决的问题,用自适应线性网络也一定能解决,而且自适应线性网络的运算速度更快,而对于只能用非线性函数解决的问题,单层精度又不够高,也只有增加层数才能达到期望的结果。

6.2隐层神经元的个数

网络训练精度的提高,可以通过采用一个隐含层,而增加其神经元个数的方法来获得,这在结构实现上要比增加网络层数简单得多。

一般而言,我们用精度和训练网络的时间来恒量一个神经网络设计的好坏:

〔1〕神经元数太少时,网络不能很好的学习,训练迭代的次数也比拟多,训练精度也不高。

〔2〕神经元数太多时,网络的功能越强大,准确度也更高,训练迭代的次数也大,可能会出现过拟合(overfitting)现象。

由此,我们得到神经网络隐层神经元个数的选取原如此是:

在能够解决问题的前提下,再加上一两个神经元,以加快误差下降速度即可。

6.3初始权值的选取

一般初始权值是取值在(−1,1)之间的随机数。

另外威得罗等人在分析了两层网络是如何对一个函数进展训练后,提出选择初始权值量级为s√r的策略,其中r为输入个数,s为第一层神经元个数。

6.4学习速率

学习速率一般选取为0.01−0.8,大的学习速率可能导致系统的不稳定,但小的学习速率导致收敛太慢,需要较长的训练时间。

对于较复杂的网络,在误差曲面的不同位置可能需要不同的学习速率,为了减少寻找学习速率的训练次数与时间,比拟适宜的方法是采用变化的自适应学习速率,使网络在不同的阶段设置不同大小的学习速率。

6.5期望误差的选取

在设计网络的过程中,期望误差值也应当通过比照训练后确定一个适宜的值,这个适宜的值是相对于所需要的隐层节点数来确定的。

一般情况下,可以同时对两个不同的期望误差值的网络进展训练,最后通过综合因素来确定其中一个网络。

BP网

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1