第 4 章 神经计算基本方法(BP神经网络MATLAB仿真程序设计)例子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BP网络应用实例
其次,输出层将隐层模式空间的4个输出模式样本 映射到输出模式空间。 则此时输出层的输人模式空间应该是五维的 ,映射到输出模式空间则是一维的 。 因为隐层模式空间的样本是输人模式样本的映射, 所以可以将输出模式的4个样本映射到如图5.19( C)所示的三维空间 。此时,图中应该有4*1=4个 点。
图 5.16
待分类模式
20
BP网络应用实例
解(1)问题分析 据图5.16所示两类模式可以看出,分类为简单的非 线性分类。有1个输入向量,包含2个输入元素;两 类模式,1个输出元素即可表示;可以以图5.17所 示两层BP网络来实现分类。
图 5.17
两层BP网络
21
BP网络应用实例
(2)构造训练样本集
40
BP网络应用实例
(2)神经网络仿真程序设计 ①构造训练样本集,并构成训练所需的输人矢量p 和目标矢量t通过画图工具,获得数字0~9的原始图 像,为便于编程,将其存于文件(0~9).bmP文 件中;按照同样的方法,可以改变字体/字号,获 得数字0~9更多的训练样本,将其存于文件(10~ 19).bmp,(20~29)bmp,…文件中。 本例选用了3种字体、3种字号,共90个由数字0~9 的样本构成的训练样本集。
13
BP网络的基本设计方法
4.隐层的节点数
一个具有无限隐层节点的两层BP网络可以实现任意从输 人到输出的非线性映射。 但对于有限个输人模式到输出模式的映射,井不需要无 限个隐层节点,这就涉及到如何选择隐层节点数的问题 ,而这一问题的复杂性,使得至今为止,尚未找到一个 很好的解析式,隐层节点数住住根据前人设计所得的经 验和自己进行试验来确定。
目录
BP神经网络
BP神经元及BP网络模型 BP网络的学习 BP网络泛化能力的提高 BP网络的局限性 BP网络的MATLAB仿真程序设计
2
BP网络学习算法
其误差曲面是关于w和b的二维曲面,如图5.4所示。
图5.4 单个BP神经元的误差曲面和及其等值线
3
BP网络学习算法
因为BP神经元的传输函数为非线性函数,所以其误 差函数往往有多个极小点。 如图5.5所示,若误差曲面有两个极小点m和n, 则当学习过程中,如果误差先到达局部极小点m点 ,在该点的梯度为gk=0,则按式(5.2)将无法继 续调整权值和阈值,学习过程结束,但尚未达到全 局极小点n。
23
BP网络应用实例
(4) 程序设计
例 5.1创建和训练 BP的 MATLAB程序 %Example51Tr clear all; %定义输入向量和目标向量 P=[12;-11;-21;-4 0]’; t=[0.2 0.8 0.8 0.2]; %创建BP网络和定义训练函数及参数
24
BP网络应用实例
25
BP网络应用实例
%存储训练好的神经网络 save net51 net;
26
BP网络应用实例
BP网络的初始化函数的默认值为initnw,该初始化 函数的详解见附录。 在本例中,将随机初始化权值和阈值,所以每次运 行上述程序的结果将不相同。 当达不到要术时,可以反复运行以上程序,直到满 足要术为止。其中的一种运行结果如下:
18
BP网络的基本设计方法
6.训练方法及参数选择

针对不同的应用,BP网络提供了多种训练、学习 方法,如何选择训练函数和学习函数及其参数可参 阅5.2节和5.3节,以及函数详解见附录。
19
BP网络应用实例
1.用于模式识别与分类的BP网络
例5.1以BP神经网络实现对图5.16所示两类模式的 分类。
根据图5.16所示两类模式确定的训练样本集为
其中:因为BP网络的输出为logsig函数,所以目标 向量的取值为0.2和0.8,分别对应两类模式。在程 序设计时,通过判决门限0.5区分两类模式。
22
BP网络应用实例
(3)训练函数的选择
因为处理问题简单,所以选择最速下降BP算法 (traingd训练函数)训练该网络,以熟悉该算法。
式中:n为隐层节点数;n1为输人节点数;n0为输 出节点数; a为 1~10之间的常数。
16
BP网络的基本设计方法
5.传输函数 BP网络中的传输函数通常采用S(sigmoid)型函数:
17
BP网络的基本设计方法
在某些特定情况下,还可能采用纯线性(pureline )函数。 如果BP网络的最后一层是Sigmoid函数,那么整个 网络的输出就限制在一个较小的范围内(0~1之间 的连续量); 如果BP网络的最后一层是Pureline函数,那么整个 网络的输出可以取任意值。
37
BP网络应用实例
例5.2设计基于BP神经网络的印刷体字符0~9的识别 系统。 解字符识别,特别是手写体字符识别,在实际生活 中具有很重要的意义。这里只说明神经网络的设计 ,不探讨字符识别的其他更多的内容,假设识别的 对象是印刷体数字。 经过前期处理,获得16X16的二值图像,如图5. 20所示,其二值图像数据作为神经网络的输入。
net=newff([-1 1;-1 1],[5 1],{‘logsig’,’logsig’},’traingd’); net.trainParam. goal=0.001; net.trainParam. epochs=5000;%训练神经网络 [net,tr]= train(net,p,t); %输出训练后的权值和阈值 iwl=net.IW{l} bl=net. b{ 1} lw2=net.LW{ 2} b2=net, b{2}
11
来自百度文库
BP网络的基本设计方法
(1)节点数即为待分类模式总数m,此时对应第j个待 分类模式的输出为
即第j个节点输出为1,其余输出均为0。而以输出全为0表 示拒识,即所输入的模式不属于待分类模式中的任何一 种模式。
12
BP网络的基本设计方法
(2)节点数为 个。这种方式的输出是m种输出模 式的二进制编码。
44
BP网络应用实例
x=imread(m,’bmp’); bw=im2bw(x,0.5); 为二值图像 [i,j]=find(bw==0); )的行号和列号 imin=min(i); )的最小行号 imax=max(i); )的最大行号 %读人训练样本图像丈件 %将读人的训练样本图像转换 %寻找二值图像中像素值为0(黑
36
BP网络应用实例
第三,根据判决规则确定决策空间,进行模式分类 。因为第一种模式的目标输出为0.8,第二类模式 的目标输出为0.2,所以可以在0.2~0.8之间选择一 判决门限(如0.5),判决规则为 >0.5判为第一 种模式;决规则为 >0.5判为第一种模式; < 0.5判为第二种模式。若把输出空间作为决策空间, 则决策边界是 轴上的一点 =0.5;若将决策空间 变换到二维空间( ,p1),如图5.19(d)所示, 则决策边界为 =0.5的直线;若将决策空间变换 到三维空间( ,p1,p2)则决策边界为 =0.5的平 面。
4
BP网络学习算法
图5.5具有多个极小点的误差曲面
5
BP网络学习算法
另外一种情况是学习过程发生振荡,如图5.6所示 。 误差曲线在m点和n点的梯度大小相同,但方向相反 ,如果第k次学习使误差落在m点,而第k十1次学习 又恰好使误差落在n点。 那么按式(5.2)进行的权值和阈值调整,将在m 点和n点重复进行,从而形成振荡。
27
BP网络应用实例
28
BP网络应用实例
误差性能曲线如图5.18所示,从曲线上可以看出 ,训练经过了5000次仍然未达到要术的目标误差0 .001,说明采用训练函数traingd进行训练的收敛 速度是很慢的。 虽然训练的误差性能未达到要术的目标误差,但这 井不妨碍我们以测试样本对网络进行仿真。
6
BP网络学习算法
图5.6学习过程出现振荡的情况
7
BP网络的基本设计方法
BP网络的设计主要包括输人层、隐层、输出层及各 层之间的传输函数几个方面。 1.网络层数 大多数通用的神经网络都预先确定了网络的层数,而 BP网络可以包含不同的隐层。
8
BP网络的基本设计方法
但理论上已经证明,在不限制隐层节点数的情况下 ,两层(只有一个隐层)的BP网络可以实现任意非 线性映射。 在模式样本相对较少的情况下,较少的隐层节点, 可以实现模式样本空间的超平面划分,此时,选择 两层BP网络就可以了;当模式样本数很多时,减小 网络规模,增加一个隐层是必要的,但BP网络隐层 数一般不超过两层。
9
BP网络的基本设计方法
2.输入层的节点数 输人层起缓冲存储器的作用,它接收外部的输人数据 ,因此其节点数取决于输人矢量的维数。比如,当 把32X32大小的图像的像素作为输人数据时,输人 节点数将为1024个。
10
BP网络的基本设计方法
3.输出层的节点数
输出层的节点数取决于两个方面,输出数据类型和表示 该类型所需的数据大小。 当BP网络用于模式分类时,以二进制形式来表示不同模 式的输出结果,则输出层的节点数可根据待分类模式数 来确定。若设待分类模式的总数为_则有两种方法确定 输出层的节点数:
14
BP网络的基本设计方法
一般认为,隐层节点数与术解问题的要求、输人输 出单元数多少都有直接的关系。 另外,隐层节点数太多会导致学习时间过长; 而隐层节点数太少,容错性差,识别未经学习的样 本能力低,所以必须综合多方面的因素进行设计。
15
BP网络的基本设计方法
对于用于模式识别/分类的 BP网络,根据前人经 验,可以参照以下公式进行设计:
29
BP网络应用实例
图 5.18例 5.1的训练性能曲线
30
BP网络应用实例
例 5.1网络仿真的 MATLAB程序 %Example51Sim load net51 net; %加载训练后的 BP网络 p=[1 2;-1 1;-2 1;-4 0]’ %测试输人向量 a2=sim(net,pI); %仿真输出结果 a2=a2>0.5 %根据判决门限,输出分类结果
31
BP网络应用实例
运行结果为 p1= 1 -1 -2 -4 2 1 1 0 a2= 0 1 1 0 结果表明可以完成上述两类模式的分类。
32
BP网络应用实例
下面结合图5.19进一步理解BP神经网络用于模式 分类的原理。 首先,隐层将输入模式空间4个样本映射到隐层 模式空间。图5.19(a)是输入模式空间(二维) ,两类模式的4个点示于图中;而 隐层有5个神经元,所以隐层模式空间是五维的超 立体空间 ,难以用图形表示出来。
41
BP网络应用实例
图 5. 21数宇。的不同训练样本图像
42
BP网络应用实例
从图中可以看出,形成图像的字体、字号不同,在 图片中的位置也不相同,所以必须对它进行预处理 ,使各个图像在成为神经网络输人向量时具有统一 的形式。 预处理的基本方法是:截取数字图像像素值为0( 黑)的最大矩形区域(如图5.21中第一个数字 0 的虚线框),将此区域的图像经过集合变换,使之 变成 16 X 16的二值图像;然后将该二值图像进行 反色处理,以这样得到图像各像素的数值0,1构成 神经网络的输人向量。所有训练样本和测试样本图 像都必须经过这样的处理。
33
BP网络应用实例
图 5.19例 5.1模式分类的图解说明
34
BP网络应用实例
将4个隐层模式空间的样本投影到如图5.19(b)所 示的三维空间,此时,应该有4X5=20个点,但从 图中只看到8个,这是因为其中12个点在投影空间 的位置与图中的8个点相同或很接近,在图上不能 分辨出来。
35
43
BP网络应用实例
例 5. 2形成输人矢量 P和目标矢量t的 MATLAB程序 %Example52PT clear all; 正在生成输人向量和目标向量,请稍等· · for kk=0:89 p1=ones(16,16); %初始化 16X16的二值图像像素值(全白) m=strcat(int2str(kk),’.bmp’); %形成训练样 本图像的丈件名(0~89.bmp)
38
BP网络应用实例
图5.20数学宇符16X16的二值化图像示意图
39
BP网络应用实例
(1)BP神经网络结构分析 按照 BP神经网络设计方法选用两层 BP网络,其 输人节点数为 16 X 16=256,隐层传输函数为 sigmoid函数。假设用一个输出节点表示10个数字 ,则输出层传输函数为pureline,隐层节点 ,取为25。
相关文档
最新文档