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

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

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

针对不同的应用,BP网络提供了多种训练、学习 方法,如何选择训练函数和学习函数及其参数可参 阅5.2节和5.3节,以及函数详解见附录。
19
BP网络应用实例
1.用于模式识别与分类的BP网络
例5.1以BP神经网络实现对图5.16所示两类模式的 分类。
图 5.16
待分类模式
20
BP网络应用实例
解(1)问题分析 据图5.16所示两类模式可以看出,分类为简单的非 线性分类。有1个输入向量,包含2个输入元素;两 类模式,1个输出元素即可表示;可以以图5.17所 示两层BP网络来实现分类。
图 5.17
两层BP网络
21
BP网络应用实例
(2)构造训练样本集
BP网络应用实例
其次,输出层将隐层模式空间的4个输出模式样本 映射到输出模式空间。 则此时输出层的输人模式空间应该是五维的 ,映射到输出模式空间则是一维的 。 因为隐层模式空间的样本是输人模式样本的映射, 所以可以将输出模式的4个样本映射到如图5.19( C)所示的三维空间 。此时,图中应该有4*1=4个 点。
相关文档
最新文档