matlab辅助神经网络设计
更新时间:2024-04-04 04:48:01 阅读量: 综合文库 文档下载
目 录
第一节 神经网络基本理论
一、人工神经网络概论 二、生物神经元模型
三、Matlab的神经网络工具包 第二节 感知器
一、感知器神经元模型 二、感知器的网络结构 三、感知器神经网络的学习规则 四、感知器神经网络的训练
五、重要的感知器神经网络函数的使用方法 六、感知器神经网络应用举例 第三节 线性神经网络
一、线性神经元模型 二、线性神经网络结构
三、线性神经学习网络的学习规则 四、线性神经网络训练
五、重要线性神经网络函数的使用方法 六、线性神经网络的应用举例 第四节 BP网络
一、BP网络的网络结构 二、BP网络学习规则 三、BP网络的训练
四、重要BP神经网络函数的使用方法 五、BP网络的应用举例 第五节 径向基函数网络
一、径向基函数神经网络结构 二、径向基函数的学习算法
1
三、重要径向基函数的函数使用方法 第六节 反馈网络
一、Hopfield网络的结构与算法 二、Hopfield网络运行规则 三、重要的反馈网络函数 四、重要的自组织网络函数 五、反馈网络应用举例 第七节 自组织网络
一、自组织特征映射的网络结构 二、自组织特征映射网络的学习 三、自组织特征映射网络的训练 四、重要的自组织网络函数 五、自组织网络应用举例
2
第一节 神经网络基本理论
一、人工神经网络概论
近代神经生理学和神经解剖学的研究结果表明,人脑是由约一千多亿个神经元(大脑皮层约140多亿,小脑皮层约1000多亿)交织在一起的、极其复杂的网状结构,能完成智能、思维、情绪等高级精神活动,无论是脑科学还是智能科学的发展都促使人们对人脑(神经网络)的模拟展开了大量的工作,从而产生了人工神经网络这个全新的研究领域。
人工神经网络(ANNS)常常简称为神经网络(NNS),是以计算机网络系统模拟生物神经网络的智能计算系统, 是对人脑或自然神经网络的若干基本特性的抽象和模拟。网络上的每个结点相当于一个神经元,可以记忆(存储)、处理一定的信息,并与其它结点并行工作。
神经网络的研究最早要追述到40年代心理学家Mcculloch和数学家Pitts合作提出的兴奋与抑制型神经元模型和Hebb提出的神经元连接强度的修改规则,其成果至今仍是许多神经网络模型研究的基础。50~60年代的代表性工作主要有Rosenblatt的感知器模型、Widrow的自适应网络元件Adaline。然而在1969年Minsky和Papert合作发表的Perceptron一书中阐述了一种消极悲观的论点,在当时产生了极大的消极影响,加之数字计算机正处于全盛时期并在人工智能领域取得显著成就,这导致了70年代人工神经网络的研究处于空前的低潮阶段。80年代以后,传统的Von Neumann数字计算机在模拟视听觉的人工智能方面遇到了物理上不可逾越的障碍。与此同时Rumelhart、Mcclelland和Hopfield等人在神经网络领域取得了突破性进展,神经网络的热潮再次掀起。目前较为流行的研究工作主要有:前馈网络模型、反馈网络模型、自组织网络模型等方面的理论。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。
求解一个问题是向人工神网络的某些结点输入信息,各结点处理后向其它结点输出,其它结点接受并处理后再输出,直到整个神经网工作完毕,输出最后结果。如同生物的神经网络,并非所有神经元每次都一样地工作。如
3
视、听、摸、想不同的事件(输入不同),各神经元参与工作的程度不同。当有声音时,处理声音的听觉神经元就要全力工作,视觉、触觉神经元基本不工作,主管思维的神经元部分参与工作;阅读时,听觉神经元基本不工作。在人工神经网络中以加权值控制结点参与工作的程度。正权值相当于神经元突触受到刺激而兴奋,负权值相当于受到抑制而使神经元麻痹直到完全不工作。
如果通过一个样板问题“教会”人工神经网络处理这个问题,即通过“学习”而使各结点的加权值得到肯定,那么,这一类的问题它都可以解。好的学习算法会使它不断积累知识,根据不同的问题自动调整一组加权值,使它具有良好的自适应性。此外,它本来就是一部分结点参与工作。当某结点出故障时,它就让功能相近的其它结点顶替有故障结点参与工作,使系统不致中断。所以,它有很强的容错能力。
人工神经网络通过样板的“学习和培训”,可记忆客观事物在空间、时间方面比较复杂的关系,适合于解决各类预测、分类、评估匹配、识别等问题。例如,将人工神经网络上的各个结点模拟各地气象站,根据某一时刻的采样参数(压强、湿度、风速、温度),同时计算后将结果输出到下一个气象站,则可模拟出未来气候参数的变化,作出准确预报。即使有突变参数(如风暴,寒流)也能正确计算。所以,人工神经网络在经济分析、市场预测、金融趋势、化工最优过程、航空航天器的飞行控制、医学、环境保护等领域都有应用的前景。
人工神经网络的特点和优越性使它近年来引起人们的极大关注,主要表现在三个方面:
第一,具有自学习功能。例如实现图像识别时,只需把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。人工神经网络计算机将为人类提供经济预测、市场预测、效益预测,其前途是很远大的。
第二,具有联想存储功能。人的大脑是具有联想功能的。如果有人和你提起你幼年的同学张某某,你就会联想起张某某的许多事情。用人工神经网
4
络的反馈网络就可以实现这种联想。
第三,具有高速寻找最优解的能力。寻找一个复杂问题的最优解,往往需要很大的计算量,利用一个针对某问题而设计的人工神经网络,发挥计算机的高速运算能力,可能很快找到最优解。
人工神经网络是未来微电子技术应用的新领域,智能计算机的构成就是作为主机的冯·诺依曼计算机与作为智能外围机的人工神经网络的结合。
二、生物神经元模型
神经元是脑组织的基本单元,其结构如图1所示,神经元由三部分构成:细胞体,树突和轴突;每一部分虽具有各自的功能,但相互之间是互补的。
树突是细胞的输入端,通过细胞体间联结的节点“突触”接受四周细胞传出的神经冲动;轴突相当于细胞的输出端,其端部的众多神经未梢为信号的输出端子,用于传出神经冲动。
神经元具有兴奋和抑制的两种工作状态。当传入的神经冲动,使细胞膜电位升高到阀值(约为40mV)时,细胞进入兴奋状态,产生神经冲动,由轴突输出。相反,若传入的神经冲动,使细胞膜电位下降到低于阀值时,细胞进入抑制状态,没有神经冲动输出。
图1 生物神经元结构
二、人工神经元模型
人工神经元模型是以大脑神经细胞的活动规律为原理的,反映了大脑神
5
经细胞的某些基本特征,但不是也不可能是人脑细胞的真实再现,从数学的角度而言,它是对人脑细胞的高度抽象和简化的结构模型。虽然人工神经网络有许多种类型,但其基本单元—人工神经元是基本相同的。如图2是一个典型的人工神经元模型:
图2 人工神经元模型
神经元模型相当于一个多输入单输出的非线性阀值元件,X1,X2,?,Xn表示神经元的n个输入,W1,W2,?,Wn表示神经元之间的连接强度,称为连接权,
?WiXi称为神经元的激活值,O表示这个神经元的输出,每
?WiXi-θ)
个神经元有一个阀值θ,如果神经元输入信号的加权和超过θ,神经元就处于兴奋状态。以数学表达式描述为:
O=f(
三、Matlab的神经网络工具包
由于神经网络自身的特点,计算中经常涉及到大量的训练样本数据、复杂的运算操作、繁琐的程序设计等问题。对此,具有强大功能的数学软件Matlab,为我们提供了神经网络工具箱Neural Netwoks Toolbox (NNT)及丰富的函数命令。NNT是进行神经网络训练和仿真的优良平台。常用来对网络进行初始化、仿真、设计、调整、优化。集成化的处理方式、友好的界面、形象的演示过程、简易的操作,为神经网络应用者节约了大量的不必要的编程时间,使得非专业人士应用神经网络成为了可能。
Matlab是Mathworks公司开发的工程计算软件包,其中有一个神经网络工具包,可以用来方便地创建各种神经网络,对数据进行学习和模拟输出。
Matlab中普遍采用的是物理和工程学中强有力的矩阵描述的语言,简洁优美。
6
第二节 感知器
感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。
一、感知器神经元模型
感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图2.1为感知器神经元模型。
图2.1 感知器神经元模型
感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:
x1 o x2 o ┇ xR o 1 wi1 wi2 wiR θ i o ?1,x?0f(x)?? (2.1)
?0,x?0而感知器神经元模型的实际输出为
?R?o?f??wixi?b? (2.2)
?i??1?其中b为阀值
二、感知器的网络结构
图2.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。
7
P o
1 o R×Q N S×R b S×1
n S×Q a S×Q 图2.2 感知器神经网络结构
根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:
ni??wijpj (2.3)
j?1R而其输出ai为
ai=f (ni+bi) (2.4)
由式2.1易知
?1ni?bi?0ai?? (2.5)
?0ni?bi?0则当输入ni+bi大于等于0,即有ni≥-bi时,感知器的输出为1;否则输出为0。
上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。
图2.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。
1 o P o R×Q w1 S×R b S×1 o a1 W2 b a2 图2.3 感知器神经网络结构
三、感知器神经网络的学习规则
感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。
8
如图2.2所示的输入向量P、输出和量a和目标向量为t的感知器神经网络,感知器的学习规则是根据以下输出矢量a可能出现的几种情况未进行参与调整的:
1)如果第i个神经元的输出是正确的,即有ai=t1,则与第i个神经元联接的权值和阀值保持不变。
2)如果第i个神经元的输出是不正确,应该有两种情况。
i)实际输出为0,而理想输出为1,即有ai=0,而ti=1,则所有的输入j对权值和阀值进行调整,修正值Δw1j=pj,Δbj=1。
ii)实际输出为1,而期望输出为0,即有ai=1,而ti=0,则对所有的输入j进行权值和阀值调整,Δw1j=-pj,Δbi=-1。
基于感知器误差e=t-a,感知器学习规则可望写为:
Δw1j=ei·pj
可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。
四、感知器神经网络的训练
要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。
我们可以用以下方法训练网络:
1) 确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图2.2的网络结构。
2)初始化:权值向量w和阀值向量b分别赋予[-1,+1]之间的随机值,并且给出训练的最大次数。
3)根据输入向量P、最新权值向量w和阀值向量b,计算网络输出向量a。
9
4)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5)。
5)根据感知器学习规则调查权向量,并返回3)。
五、重要的感知器神经网络函数的使用方法
对于感知器的初始化、训练、仿真,在MATLABP神经网络工具箱中分别提供了init( ), trainp( )和sim( )函数。
1.初始化函数init( )
感知器初始化函数init( )可得到R个输入,S个神经元数的感知器层的权值和阀值,其调用格式为:
[w,b]=init(R,S)
另外,也可以利用输入向量P和目标向量t来初始化。 [w,b]=init(p,t)
在介绍trainp( )函数前,让我们先介绍一下训练的控制参数tp。 tp=[disp_freq max_epoch]
其中disp_freq指定两次显示间训练次数,缺省值为1;map_epoch指定训练的最大次数,缺省值为100。
调用训练函数trainp( )函数后又得到新的权值矩阵,阀值向量以及误差te。trainp( )函数所需要的输入变量为:输入向量P、目标向量t以及网络的初始权值和阀值,训练的控制参数tp。调用格式为:
[w,b,te]=trainp(w,b,p,t,tp)
由于函数trainp( )并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要用下列验证语句验证一下。
a=sim(p, w, b);
if all(a= =t),disp( ′It works!′),end
假如网络不能成功运行,就可以继续运用trainp( )函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。
3.仿真函数sim( )
sim( )函数主要用于计算网络输出。它的调用比较简单。
10
a=sim(p,w,b)
六、感知器神经网络应用举例
为了便于消化与理解感知器神经网络的四只问题,下面将给出一个具体的问题进行分析,问题的描述如下:
两种蠓虫Af和Apf已由生物学家W.L.Grogan与w. w. Wirth(1981)根据它们触角长度和翼长中以区分。见表2.1中9Af蠓和6只Apf蠓的数据。根据给出的触角长度和翼长可识别出一只标本是Af还是Apf。
1.给定一只Af或者Apf族的蒙,你如何正确地区分它属于哪一族? 2.将你的方法用于触角长和翼中分别为(1.24,1.80)、(1.28,1.84)、(1.40,2.04)的三个标本
表2.1
Af Apf 触重长 翼 长 触角长 翼 长 1.24 1.72 1.14 1.78 1.36 1.74 1.18 1.96 1.38 1.64 1.20 1.86 1.378 1.82 1.26 2.00 1.38 1.90 1.28 2.00 1.40 1.70 1.30 1.96 1.48 1.70 1.54 1.82 1.56 2.08 输入向量为:
p=[1.24 1.36 1.38 1.378 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.20 1.26 1.28 1.30;1.72 1.74 1.64 1.82 1.90 1.70 1.70 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96 ]
目标向量为:
t=[1 1 1 1 1 1 1 1 1 0 0 0 0 0 0] 图形显示,目标值1对应的用“+”、目标值0对应的用“o”来表示:
plotpv(p,t)
为解决该问题,利用函数newp构造输入量在[0,2.5]之间的感知器神经网络模型:
net=newp([0 2.5;0 2.5],1) 初始化网络: net=init(net)
11
P(2)Vectors to be Classified2.32.22.121.91.81.71.61.51.40.911.11.21.31.4P(1)1.51.61.71.8图2.4 样本图形显示 利用函数adapt调整网络的权值和阀值,直到误差为0时训练结束: [net, y, e]=adapt(net, p, t)
训练结束后可得如图2.5的分类方式,可见感知器网络将样本正确地分成两类:
Vectors to be Classified2.32.22.12P(2)1.91.81.71.61.51.40.911.11.21.31.4P(1)1.51.61.71.8 图2.5 网络训练结果
感知器网络训练结束后,可以利用函数sim进行仿真,解决实际的分类问题:
p1=[1.24;1.80] a1=sim(net,p1) p2=[1.28;1.84] a2=sim(net,p2) p3=[1.40;2.04] a3=sim(net,p3) 网络仿真结果为: a1=0 a2=0 a3=0
12
第三节 线性神经网络
线性神经网络是最简单的一种神经元网络,由一个或多个线性神经元构成。1959年,美国工程师B.widrow和M.Hoft提出自适应线性元件(Adaptive linear element,简称Adaline)是线性神经网络的最早典型代表。它是感知器的变化形式,尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度,而且提高了训练精度。线性神经网络与感知器神经网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出0或1。此外,线性神经网络一般采用Widrow-Hoff(简称W-H)学习规则或者最小场方差(Least mean Square,简称LMS)规则来调整网络的权值和阀值。
线性神经网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。
一、线性神经元模型
线性神经元可以训练学习一个与之对应的输入/输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。
图3.1描述了一个具有R个输入的由纯线性函数组成的线性神经元。
图3.1 线性神经元模型
由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:
a=g(w*p,b) ┇ PR o wR P1 o P2 o w1 w2 b 1
a 13
其中函数g(x)为线性函数。
二、线性神经网络结构
如图3.2描述了一个由S个神经元相并联形成一层网络,这种网络也称为Madaline网络。
W-H学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。
1 o P o R×1 N S×R b S×1
图3.2 线性神经元网络
n S×1 a S×1 三、线性神经学习网络的学习规则
前面我们提到过,线性神经网络采用W-H学习规则。W-H学习规则是Widrow是Hoft提出的用来求得权值和阀值的修正值的学习规则。
首先要定义一个线性网络的输出误差函数:
E(w,b)=
11(t―a)2=(t―w*p)2 3.1 22由式3.1可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过W-H学习规则来计算权值和偏差的变化,并使网络的误差平方和最小化,总能够训练一个网络的误差趋于最小值。这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上E(w,b)的梯度,对于第i输出节点为:
?wij???或表示为:
?E??(ti?ai)pj 3.2 ?wij 14
?wij???ipj 3.3
?bi???i 3.4
这里δi定义为第i个输出节点的误差:
δi=ti―ai 3.5
式3.3称为W-H学习规则。W-H学习规则的权值变化量正比于网络的输出误差及网络的输入向量。它不需求导数,所以算法简单,又具有收敛速度快和精度高的优点。
式3.3中的?称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。
四、线性神经网络训练
首先给线性神经网络提供输入向量P,计算线性网络层的输出向量a,并求得误差e=t―a;
然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用W-H规则调整权值和阀值,反复进行。
如果经过训练网络不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下, 所要解决的问题,是否适合于线性神经网络。
五、重要线性神经网络函数的使用方法
在MATLAB神经网络工具箱中提供了基于线性神经网络的初始化函数initlin( )、设计函数solvelin( )、仿真函数simulin( )以及训练函数trainwh和adaptwh。下面我们将分别介绍多种函数的使用方法。
1.初始化函数initlin( )
函数initlin( )对线性神经网络初始化时,将权值和阀值取为绝对值很小的数。其使用格式
[w,b]=initlin(R,S)
R为输入数,S为神经元数。
另外,R和S也可用输入向量P和目标向量t来代替,即 [w,b]=initlin(p,t) 2.设计函数solvelin( )
15
与大多数其它神经网络不同,只要已知其输入向量P和目标向量t,就可以直接设计出线性神经网络使得线性神经网络的权值矩阵误差最小。其调用命令如下:
[w,b]=solve lin(p,t); 3.仿真函数simulin( )
函数simulin( )可得到线性网络层的输出 a=simulin(p,w,b)
其中a为输出向量,b为阀值向量 4.训练函数trainwh 和adaptwh( )
线性神经网络的训练函数有两种:trainwh( )和adaptwh( )。其中函数trainwh可以对线性神经网络进行离线训练;而函数adaptwh( ) 可以对线性神经网络进行在线自适应训练。
利用trainwh( )函数可以得到网络的权矩阵w,阀值向量b,实际训练次数te 以及训练过程中网络的误差平方和lr。
[w,b,te,lr]=trainwh(w,b,p,t,tp) 输入变量中训练参数tp为:
·tp(1)指定两次更新显示间的训练次数,其缺省值为25; ·tp(2)指定训练的最大次数,其缺省值为100; ·tp(3)指定误差平方和指标,其缺省值为0.02;
·tp(4)指定学习速率,其缺省值可由maxlinlr( )函数(此函数主要用于计算采用W-H规则训练线性网络的最大的稳定的分辨率)得到。
而利用函数adaptwh( )可以得到网络的输出a、误差e、权值矩阵w和阀值向量b。
[a,e,w,b]=adaptwh(w,b,p,t,lr)
输入变量lr为学习速率,学习速率lr 为可选参数,其缺省值为1.0。 另外,函数maxlinlr( )的调用格式为: lr=maxlinlr(p);
六、线性神经网络的应用举例
为了理解线性神经网络的理论及其应用问题,下面给出一个实际问题进
16
行分析,设计一个线性神经网络,用于信号仿真及信号预测。
首先输入信号样本为: time=1:0.0025:5; p=sin(sin(time)*time*10); 目标信号为: t=p*2+2;
图形显示样本信号的规律为: plot(time, p, time, t, ’---’) title(‘Input and Target Signals’) xlabel(‘Time’)
ylabel(‘Input__ Target__’)
Tnput and Target Signals43.532.5Input__ Target__21.510.50-0.5-111.522.53Time3.544.55 图3.3 样本信号
利用输入样本信号和理想输出进行线性神经网络初始化: [w,b]=initlin(p,t)
然后利用函数adaptwh对构造的网络进行训练, lr=0.01; [a, e, w, b]=adaptwh(w, b, p, t, lr) 其中lr为学习率,a为网络的输出,e为误差。 仿真结果与目标信号对比分析: plot(time, a, time, t, ‘--’) title(‘Output and Target Signals’)
17
xlabel(‘Time’); ylabel(‘Output__ Target__’)
Output and Target Signals43.53Output__ Target__2.521.510.5011.522.53Time3.544.55 图3.4 仿真结果与目标信号对比分析
误差分析: plot(time,e)
hold on; plot([min(time) max(time)],[0 0],':r') xlabel('Time'); ylabel('Error')
Error Signal43.532.521.510.50-0.5Error11.522.53Time3.544.55 图3.5 误差分析
18
第四节 BP网络
感知器神经网络模型和线性神经网络模型虽然对人工神经网络的发展起了很大的作用,它们的出现也曾掀起了人们研究神经网络的热潮。但它们有许多不足之处。人们也曾因此失去了对神经网络研究的信心,但rumelhart、mcclellard和他们的同事洞悉到网络信息处理的重要性,并致力于研究并行分布信息处理方法,探索人类认知的微结构,于1985年发展了BP网络的学习算法。从而给人工神经网络增添了活力,使其得以全面迅速地恢复发展起来。
BP网络是一种多层前馈神经网络,其神经元的激励函数为S型函数,因此输出量为0到1之间的连续量,它可以实现从输入到输出的任意的非线性映射。由于其权值的调整是利用实际输出与期望输出之差,对网络的各层连接权由后向前逐层进行校正的计算方法,故而称为反向传播(Back-Propogation)学习算法,简称为BP算法。BP算法主要是利用输入、输出样本集进行相应训练,使网络达到给定的输入输出映射函数关系。算法常分为两个阶段:第一阶段(正向计算过程)由样本选取信息从输入层经隐含层逐层计算各单元的输出值;第二阶段(误差反向传播过程)由输出层计算误差并逐层向前算出隐含层各单元的误差,并以此修正前一层权值。BP网络主要用于函数逼近、模式识别、分类以及数据压缩等方面。
一、BP网络的网络结构
BP网络通常至少有一个隐含层,如图4.1所示的是一个具有R个输入和一个隐含层的神经网络模型。
1 o 隐含层 输出层 P o R×Q W1 S1×R a1 f1 1 o S1×q w2 S2×S1 a2 B1 S1×1 f2 S2×q b2 图4.1 具有一个隐含层的BP网络结构
感知器与线性神经元的主要差别在于激励函数上:前者是二值型的,而
后者是线性的。BP网络除了在多层网络上与已介绍过的模型有不同外,其
19
主要差别也表现在激励函数上。
图4.2所示的两种S型激励函数的图形,可以看到f(· )是连续可微的单调递增函数,这种激励函数的输出特性比较软,其输出状态的取值范围为[0,1]或者[-1,+1],其硬度可以由参数λ来调节。函数的输入输出关系表达式如下所示:
双极型的S型激励函数:f(net)?2, f(net)∈(-1,1)
1?exp(??net)1, f(net)∈(0,1)
1?exp(??net)单极型的S型激励函数:f(net)?
图4.2 sigmoid型函数图形
对于多层网络,这种激励函数所划分的区域不再是线性划分,而是由一个非线性的超平面组成的区域。
因为S型函数具有非线性的大系数功能。它可以把输入从负无穷到正无穷大的信号变换成-1到+1之间输出,所以采用S型函数可以实现从输入到输出的非线性映射。
二、BP网络学习规则
BP网络最为核心的部分便是网络的学习规则。用BP算法训练网络时有两种方式:一种是每输入一样本修改一次权值;另一种是批处理方式,即使组成一个训练周期的全部样本都依次输入后计算总的平均误差。这里我们主要探讨的是后一种方式。
20
下面我们给出两层网络结构示意简图4.3,并以此探讨BP算法。 BP网络的学习过程主要由以下四部分组成: 1)输入样本顺传播
输入样本传播也就是样本由输入层经中间层向输出层传播计算。这一过程主要是
输入样本求出它所对应的实际输出。
① 隐含层中第i个神经元的输出为
?R??a1i?f1??w1ijpj?b1i???j?1?② 输出层中第k个神经元的输出为:
i?1,2,?,s1 (4.1)
a2k?S1???f2?wa?b2k?,??2ki1i?i?1?i?1,2,?s2 (4.2)
其中f1(·), f2 (·)分别为隐含层的激励函数。 2)输出误差逆传播
在第一步的样本顺传播计算中我们得到了网络的实际输出值,当这些实际的输出值与期望输出值不一样时,或者说其误差大于所限定的数值时,就要对网络进行校正。
首先,定义误差函数
1s22E(w,b)=?(tk?a2k) (4.3)
2k?1其次,给出权值的变化 ① 输出层的权值变化
从第i个输入到第k个输出的权值为:
?w2ki????E????ki?a1i (4.4) ?w2ki其中:
?ki?ekf2' (4.5)
ek?lk?a2k (4.6)
② 隐含层的权值变化
21
从第j个输入到第i个输出的权值为:
?wij????E????ij?pj?w1ij0???1 (η为学习系数)
(4.7)
其中:
?ij?ei?f1' (4.8)
ei???ki?w2ki (4.9)
k?1s2由此可以看出:①调整是与误差成正比,即误差越大调整的幅度就越大。②调整量与输入值大小成比例,在这次学习过程中就显得越活跃,所以与其相连的权值的调整幅度就应该越大,③调整是与学习系数成正比。通常学习系数在0.1~0.8之间,为使整个学习过程加快,又不会引起振荡,可采用变学习率的方法,即在学习初期取较大的学习系数随着学习过程的进行逐渐减小其值。
最后,将输出误差由输出层经中间层传向输入层,逐层进行校正。 3)循环记忆训练
为使网络的输出误差尽可能的小,对于BP网络输入的每一组训练样本,一般要经过数百次甚至上万次的反复循环记忆训练,才能使网络记住这一样本模式。
这种循环记忆训练实际上就是反复重复上面介绍的输入模式正向传播和输出误差逆传播过程。
4)学习结束的检验
当每次循环记忆结束后,都要进行学习是否结束的检验。检验的目的主要是检查输出误差是否已经符合要求。如果小到了允许的程度,就可以结束整个学习过程,否则还要进行循环训练。
三、BP网络的训练
对BP网络进行训练时,首先要提供一组训练样本,其中每个样本由输入样本和输出对组成。当网络的所有实际输出与其理想输出一致时,表明训练结束。否则,通过修正权值,使网络的实际输出与理想输出一致。
22
实际上针对不同具体情况,BP网络的训练有相应的学习规则,即不同的最优化算法,沿减少理想输出与实际输出之间误差的原则,实现BP网络的函数逼近、向量分类和模式识别。以图4.3为例来说明BP网络训练的主要过程。
图4.3 含一个隐含层的BP网络结构
首先:网络初始化,构造合理的网络结构(这里我们采用图4.3的网络结构),取可调参数(权和阀值)为[-1,1]上服从均匀分布随机数,并取定期望误差、最大循环次数和修正权值的学习率的初始值。
其次,利用相应的BP网络学习规则对网络进行训练,求得权值修正后的误差平方和。
最后,检查网络误差平方和是否降低到期望误差之下,若是,训练结束,否则继续。
四、重要BP神经网络函数的使用方法
函数initff( )和simuff可以用来初始化和仿真不超过三层的前馈型网络。函数trainbp( )、trainbpx( )、trainlm( )可用来训练BP网络。其中trainlm( )的训练速度最快,但它需要更大的存储空间,也就是说它是以空间换取了时间;trainbpx( )的训练速度次之;trainlm( )最慢。
1.初始化函数initff( )
函数initff( )的主要功能就是对至多三层的BP网络初始化。其使用格式有多种,现列如下:
[w,b]=initff(p, s, f)
[w1, b1, w2, b2]=initff(p, s1, f1, s2, f2)
[w1, b1, w2, b2, w3, b3]=initff(p, s1, f1, f2, s3, f3)
23
[w, b]=initff(p, s, t)
[w1,b1,w2,b2]=initff(p, s1, f1, s2, t)
[w1, b1, w2, b2, w3, b3]=initff(p, s1, f1, s2, f2, s3, t)
[w, b]=initff(p, s, f)可得到s个神经元的单层神经网络的权值和阀值,其中p为输入向量,f为神经元的激励函数。
BP网络有一个特点很重要,即p中的每一行中必须包含网络期望输入的最大值和最小值,这样才能合理地初始化权值和阀值。
2.仿真函数simuff( )
BP网络是由一系列网络层组成,每一层都从前一层得到输入数据,函数simuff( )可仿真至多三层前馈型网络。对于不同的网络层数,其使用格式为:
a=simuff(p, w1, b1, f1)
a=simuff(p, w1, b1, f1, w2, b2, f2)
a=simuff(p, w1, b1, f1, w2, b2, f2, w3, b3, f3)
以上三式分别为单层、双层和三层网络结构的仿真输出。 3.训练函数
关于前面所提到的几种BP网络训练函数,在这里只介绍其中之一:trainbp( )。
函数trainbp( )利用BP算法训练前馈型网络。trainbp( )函数可以训练单层、双层和三层的前馈型网络,其调用格式分别为:
[w, b, te, tr]=trainbp(w, b, f′,p, t, tp)
[w1, b1, w2, b2, te, tr]=trainbp(w1,b1, f1′,w2, b2, f2′,p, t, tp)
[w1,b1,w2,b2,w3,b3,te,tr]=trainbp(w1, b1, f1′,w2, b2, f2′,w3, b3, f3′,p, t, tp)
可选训练参数tp内的四个参数依次为:
·tp(1)指定两次显示间的训练次数,其缺省值25; ·tp(2)指定训练的最大次数,其缺省值100; ·tp(3)指定误差平方和指标,其缺省值0.02; ·tp(4)指定学习速率,其缺省值0.01;
24
只有网络误差平方和降低到期望误差之下,或者达到了最大训练次数,网络才停止学习。学习速率指定了权值与阀值的更新比例,较小学习速率会导致学习时间较长,但可提高网络权值收敛效果。
五、BP网络的应用举例
BP网络的函数逼近举例:设计一个BP网络,其隐含层神经元的激励函数为双曲正切函数,输出层神经元的激励函数为线性函数,学习样本为21组单输入矢量,理想输出为相应的单输出矢量。
输入矢量为: p=-1:0.1:1; 理想输出矢量为:
t=[-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201];
输入输出的函数关系曲线: plot(p,t) xlabel('Input') ylabel('Output')
0.80.60.40.2Output0-0.2-0.4-0.6-0.8-1-1-0.8-0.6-0.4-0.20Input0.20.40.60.81 图4.4 输入输出关系
利用输入和理想输出进行BP神经网络初始化:
[w1,b1,w2,b2]=initff(p,5,'tansig',t,'purelin')
25
利用函数trainbp对构造的BP网络进行训练: df=10 me=8000 eg=0.02 lr=0.01 tp=[df me eg lr]
[w1,b1,w2,b2,ep,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',p,t,tp)
其中df指定两次显示间的训练次数,其缺省值25;me指定训练的最大次数,其缺省值100;eg指定误差平方和指标,其缺省值0.02;lr指定学习速率,其缺省值0.01;
训练结果与理想输出对比分析:
Function Approximation0.80.60.40.20-0.2-0.4-0.6-0.8-1-1Output: -, Target: +-0.8-0.6-0.4-0.20Input0.20.40.60.81 图4.5 训练结果与理想输出对比分析
网络的训练过程中,网络收敛效果一定程度上要受网络初始化的初始值的影响,实际输出和理想输出的误差的变化情况可以反映网络学习的效果,这一点可以通过如图4.6反映:
ploterr(tr, eg)
其中tr为网络学习的循环次数。
26
2Sum-Squared Network Error for 535 Epochs10101Sum-Squared Error10010-110-2050100150200250300Epoch350400450500 图4.6 误差曲线
% 读入训练数据和测试数据
Input = []; Output = []; str = {'Test','Check'}; Data = textread([str{1},'.txt']);
% 读训练数据 Input = Data(:,1:end-1); % 取数据表的前五列(主从成分)
Output = Data(:,end); % 取数据表的最后一列(输出值) Data = textread([str{2},'.txt']);
% 读测试数据 CheckIn = Data(:,1:end-1); % 取数据表的前五列(主从成分)
CheckOut = Data(:,end);
27
% 取数据表的最后一列(输出值)
Input = Input'; Output = Output'; CheckIn = CheckIn'; CheckOut = CheckOut';
% 矩阵赚置
[Input,minp,maxp,Output,mint,maxt] = premnmx(Input,Output);
% 标准化数据
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%
% 神经网络参数设置 %====可以修正处 Para.Goal = 0.0001; % 网络训练目标误差 Para.Epochs = 800; % 网络训练代数 Para.LearnRate = 0.1; % 网络学习速率
%==== Para.Show = 5; % 网络训练显示间隔
Para.InRange = repmat([-1 1],size(Input,1),1);
% 网络的输入变量区间
Para.Neurons = [size(Input,1)*2+1 1];
% 网络后两层神经元配置 Para.TransferFcn= {'logsig' 'purelin'};
% 各层的阈值函数 Para.TrainFcn = 'trainlm';
28
% 网络训练函数赋值 % traingd : 梯度下降后向传播法 % traingda : 自适应学习速率的梯度下降法
% traingdm : 带动量的梯度下降法
% traingdx :
% 带动量,自适应学习速率的梯度下降法
Para.LearnFcn = 'learngdm';
% 网络学习函数 Para.PerformFcn = 'sse'; % 网络的误差函数 Para.InNum = size(Input,1);
% 输入量维数
Para.IWNum = Para.InNum*Para.Neurons(1);
% 输入权重个数
Para.LWNum = prod(Para.Neurons);
% 层权重个数
Para.BiasNum = sum(Para.Neurons);
% 偏置个数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%
Net = newff(Para.InRange,Para.Neurons,Para.TransferFcn,...
Para.TrainFcn,Para.LearnFcn,Para.PerformFcn);
% 建立网络
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%
Net.trainParam.show = Para.Show;
% 训练显示间隔赋值
29
Net.trainParam.goal = Para.Goal;
% 训练目标误差赋值
Net.trainParam.lr = Para.LearnRate;
% 网络学习速率赋值
Net.trainParam.epochs = Para.Epochs;
% 训练代数赋值
Net.trainParam.lr = Para.LearnRate; Net.performFcn = Para.PerformFcn;
% 误差函数赋值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 调试
Out1 =sim(Net,Input); % 仿真刚建立的网络 Sse1 =sse(Output-Out1); % 刚建立的网络误差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[Net TR] = train(Net,Input,Output);
% 训练网络并返回
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Out3 =sim(Net,Input); % 对学习训练后的网络仿真
30
第五节 径向基函数网络
我们前面所学习的多层前馈型网络模型对于每个输入输出数据对,网络的每一个权值均需要调整,这样的神经网络称之为全局逼近神经网络。全局逼近神经网络学习速度很慢,这对于控制来说常常是不可忽视的。下面我们将介绍一种新的网络:径向基函数(Radial basis Fanction简记为RBF)网络。
径向基函数网络属于局部逼近网络,所谓局部逼近网络就是对于每个输入输出数据对,只有少量的权值需要进行调整,也正是基于这一点才使得局部逼近网络具有学习速度快的优点。另外,BP网络用于函数逼近时,权值的调整是同梯度下降法,存在局部极小和收敛速度慢等缺点。而RBF网络在逼近能力、分类能力和学习速度等方面均优于BP网络。
一、径向基函数神经网络结构
如图5.1所示为径向基函数神经网络结构图。径向基函数网络输出单元是线性求和单元,所以输出是各隐单元输出的加权和。隐单元的作用函数用径向基函数,输入到隐单元间的权值固定为1,只有隐单元到输出单元的权值可调。
Si
pj
wki
ak
输入层 隐含层
输出层
图5.1 RBF网络结构图
31
二、径向基函数的学习算法
径向基函数网络的学习算法常用的有两种:一种是无导师学习,另一种便是有导师学习。这里我们只介绍无导师学习。
无导师学习也称非监督学习,地所有样本的输入进行聚类,求得各隐层节点的RBF的中心Ci。具体的算法步骤如下:
1.给定各隐节点的初始中心Ci( · );
2.计算距离(欧氏距离)并求出最小距离的节点;
di (t) = ‖p (t) ―Ci(t―1)‖, 1≤i≤m
dmin(t)=mindi(t)=dr(t) (5.1)
式中,Ci——第i个隐节点的中心, i=1,2,?,m; ‖·‖——通常为欧氏范数。
3.调整中心
Ci(t)=Ci(t―1), 1≤i≤m, i≠r Cr(t)=Ci(t―1)+η(p(t)-Cr(t―1)) 式中,η——学习速率,0<η<1。
4.计算节点r的距离
dr(t)=‖p(t)-Cr(t)‖ (5.3)
三、重要径向基函数的函数使用方法
径向基函数网络的仿真是用函数simurb( )来实现的,传递函数是radbas( ),而它的训练可以用两个函数来实现,solverb或solverbe。
1.仿真函数simurb ( )
径向基函数网络只有一个隐含层,隐含层单元采用径向基函数作为其输出特性,输入层到输出层之间的权值均固定为1,输出节点为线性求和单元,隐含层到输出层节点之间的权值可以调节。径向基函数网络能在有限步内以任意精度拟合函数,而且训练时间比较短。
仿真函数simurb( )可得网络层的输出 a=simurb(p,w1,b1,w2,b2)
式中,p为输入矢量,w1,b1为径向基神经元层的权值和阀值,w2,b2为线性神经元的权值和阀值。
32
2.径向基传递函数rodbas( )
径向基传递函数用于径向基网络中,其使用方式多种: radbas(n) radbas(z,b)
其中radbas(n)函数可对网络输入矩阵n中的所有元素如同径向基函数。 radbas(z,b)函数提供成批处理矢量,并且提供阀值的情况,这时阀值b与加权输入矩阵z是分开的,阀值b乘以z 中的每个矢量,以形成网络的输入矢量,然后利用径向基函数网络输入转换成输出。
对于径向基函数的训练可用两个函数来实现。现在我们介绍如下: 1)solverb ( )
径向基函数网络能较好地拟合任意有限值函数,而且可以通过快速的设计来取代漫长的训练。
利用solverb ( )函数可得到径向基函数隐层的权值w1和阀值b1,还得到了线性输出层的权值w2和阀值b2。
[w1, b1, w2, b2]=solverb(p, t, tp) 其中设计参数tp指示如何进行训练。
·tp(1)指定更新显示之间的迭代次数,其缺省值25; ·tp(2)指定最多的神经元数,其缺省值100; ·tp(3)误差平方和门限,缺省值为0.02; ·tp(4)指定径向基层的宽度,缺省值1.0。 2)函数solverbe( )
函数solverbe( )的订功能是精确径向基函数求解。利用solverbe( )也可得到径向基网络隐层的权值w1和阀值b1,以及线性输出层的权值w2和阀值b2。其调用格式如下
[w1, b1, w2, b2]=solverbe(p, t, sc)
式中的可逆变量sc为径向基函数的宽度,即从函数值为1到其值为0.5之间的距离,其缺省值为1。
33
第六节 反馈网络
按照人工神经元网络运行过程中信息的流向分类。现有网络可分为前馈型和反馈型以及它们的结合。从计算的观点看,前馈型神经元网络大部分是学习网络而不具有的力学行为。在反馈式神经网络中,所有单元都是一样的,它们之间可以相互连接,所以反馈式神经网络可以用一个无向完备图来表示。从系统的观点看,反馈网络是一个非线性动力学系统。它必然具有一般非线性动力学系统的许多性质,如网络系统具有若干个稳定状态,当网络从某一初始状态开始运动,网络系统总可以收敛到某一个稳定的平衡状态;还有系统稳定的平衡状态可以通过设计网络的权值而被存储到网络中。在某些情况下,还有随机性和不可预测性等,因此,比前馈网络的内容要广阔和丰富得多。
反馈式的单层网络有多种,本节主要讨论的是美国加洲工学院物理学家J.Hopfield于1982年提出的一种网络,称为Hopfield网络。这种网络分为离散和连续型两种。Hopfield是从物理学磁场理论中受到启发,结合生物神经网络的思维机理而提出的这一网络模型的。并且引用了物理学中有关能量的概念。
Hopfield将“能量函数”的概念引入到对称Hopfield网络的研究中,给出了网络的稳定性判据,并用来进行约束优先问题(如旅行商(简称TSP)问题)的求解,实现A/D转换等。另外,Hopfield网络与电子模拟线路之间存在着明显的对应关系,使得该网络易于理解且便于实现。
一、Hopfield网络的结构与算法
由于Hopfield网络模型是从物理学磁场理论受到启发而提出的,所以我们可以模拟磁场的结构画出图6.1所示的有四个神经元的Hopfield网络模型。
Hopfield网络中的各个神经元是彼此连接的,即每个神经元都将自己的输出通过连接权传送给其它神经元,同时每个神经元又都接收其它神经元传来的信息对于离散型Hopfield网络中每个神经元的输出只能取“1”或“0”(或“-1”)两种状态。
34
图6.1 Hopfield网络模型
对于有几个神经元的网络结构,其各个神经元的状态,可用向量P表示
p=[p1, p2, ?, pn]
这里p取pi=1或0 (i=1,2,?,n)
对于Hopfield网络已有定理证明,当网络满足以下两个条件时,Hopfield学习算法总是收敛的。
① 网络的连接权矩阵元自连接且具有对称性,即
wii=0 (i=1,2,?,n) wij=wji (i,j=1,2,?,n)
这一假设条件虽然与生物神经网络的实际情况不相符合(生物神经元之间连接强度不对称),但是却与磁场中各磁旋的相互作用情况相一致。 ② 网络中各神经元以同步或异步方式,依据运行规则改变其状态,即各神经元按随机选取方式,依据运行规则改变状态,且当某个神经元改变状态时,其它所有神经元保持原状态不变。这一点符合生物神经网络的情况。
二、Hopfield网络运行规则
Hopfield网络运行规则中的神经元模型与前面讲过的神经元基本是相同的,如图6.2所示。
设Hopfield网络由S个这样的神经元构成。时刻t第i个神经元的输出为
ai(t+1)=sign(Hi) 6.1
35
Hi=
?j?inwij aj(t)-bi 6.2
式中sign(x)为符号函数
?1sign(x)???0x?0x?0
7.3
P1 o P2 o ┇ PR o wi1 wi2 wiR i bi ai 图6.2 Hopfield网络神经元结构简图
式6.1表明,当所有其它神经元输出的加权总和超过第i神经元的阀值时,此神经元将处于兴奋状态,否则将处于抑制状态。这里应特别注意的是,按式6.1改变状态的神经元ai,并不是按顺序进行的,而是按随机的方式选取的。下面将Hopfield工作运行规则总结如下: ① 从网络中随机选取一个神经元pi;
② 按式6.2求所选中的神经元ai的所有输入的加权总和:
Hi??wijaj?bi
j?1j?in ③ 按式6.1计算pi的第t+1时刻的输出值,即:如果Hi(t)不小于零,那么ai(t+1)=1;否则置ai(t+1)=0。
④ ai以外的所有神经元输出保持不变。
aj(t+1)=aj(t) j=1,2,?,n且j≠i
⑤ 返回①。直至网络进入稳定状态,另外值得一提的是,反馈网络的具有一个重要特点——具有稳定状态,也称为吸引子。
三、重要的反馈网络函数
在MATLAB神经网络工具箱中对Hopfield网络的设计和仿真分别提供
36
了函数solvehop( )和函数simuhop( )。 1.设计函数solvehop( )
Hopfield网络神经元的输出通过权值矩阵反馈到神经元的输入,从任何初始输出向量开始,网络不断更新,直至达到稳定的输出向量。Hopfield网络的设计包括权值及对称饱和线性层的阀值,以便使目标向量成为网络的稳定输出向量。调用格式为:
[w,b]=solverhop(t)
通过对solverhop( )函数的调用可迅速得到一个权值矩阵和阀值向量。
2.仿真函数simuhop( )
调用仿真函数simuhop( )又同时得到最终的输出矢量和仿真过程中产生的所有输入向量矩阵X,即
[a,x]=simuhop(a,w,b,t)
上式中输入变量a为初始输出向量w为权值矩阵,b为阀值向量,t为步数。
四、反馈网络应用举例
下面给出一个含有两个神经元的Hopfield网络实例: figure(gcf) echo on t=[1 -1;-1 1] plot(t(1,:),t(2,:),'r*') axis([-1.1 1.1 -1.1 1.1])
alabel('a(1)','a(2)','Hopfield Network State Space') pause
[w,b]=solvehop(t) pause
a=simuhop(t,w,b) pause a=rands(2,1)
[a,aa]=simuhop(a,w,b,50)
37
hold on
plot(aa(1,1),aa(2,1),'wx',aa(1,:),aa(2,:)) pause hold on color='rgbmy' for i=1:25 a=rands(2,1);
[a,aa]=simuhop(a,w,b,20);
plot(aa(1,1),aa(2,1),'wx',aa(1,:),aa(2,:),color(rem(i,5)+1)) drawnow end echo off
Hopfield Network State Space10.80.60.40.2a(2)0-0.2-0.4-0.6-0.8-1-1-0.8-0.6-0.4-0.20a(1)0.20.40.60.81 图6.3 网络训练结果
38
第七节 自组织网络
在人脑的感觉通道上的一个很重要的组织原理是神经元有序地排列着,并且往往可以反应出所感觉到折在刺激的某些物理特性。例如在听觉通道的每一层次上,其神经元与神经纤维在结构上的排列与频率的关系十分密切,对于某个频率,相应的神经元具有最大的响应。这种听觉通道上的神经元的有序排列一直延续到听觉皮层。尽管许多低层次上的神经元是预先排列好的,但高层次上的神经组织则是通过自组织地形成的。
kohonen根据大脑神经系统的这一特征,于1981年提出了自组织特征映射(self-Organizing feature Map)神经网络,简称SOFM网络。自组织特征映射法是一种无教师的聚类方法,与传统的模式聚类方法相比,它的形成的聚类中心能映射到一个曲面或平面上,并且保持拓扑结构不变。
下面我们通过对自组织特征映射网络论述来了解自组织网络。
一、自组织特征映射的网络结构
自组织网络主要有输入层和竞争层两层。输入层用于接收样本,而竞争层完成对输入样本进行分类。这两个层次的神经元进行全互连连接,即一层次的每个神经元与另一层次的每个神经元均连接。有时竞争层各神经元之间还有侧抑制连接。在竞争层中,让竞争获胜的那个神经元g的兴奋程度最高,并使其周围Ng的区域间的神经元在不同程度上都得到兴奋,而在Ng区域以外的神经元都受到不同程度的抑制,即形成图7.1 的墨西哥帽(mexican Hat)函数形状的兴奋区域。
图7.1 自组织网络神经细胞状态分布图
39
这个Ng区域也可以是任何其它形状,但一般是均匀对称的,例如正方形或六角形等。Ng是时间的函数,也可用Ng(t)表示,随t增加,Ng(t)的范围不断减小,最后得到的Ng(t)区域反映了它所对应的输入模式的属性。 自组织特征映射网络的激励函数为二值型函数。在竞争层中,每个神经元都有自己的邻域,图7.2为一个在二维层中的主神经元。主神经元具有在其周围增加直径的邻域。一个直径为1的邻域包括主神经及它的直接周围神经元所组成的区域;直径为2的邻域包括直径为1的神经元以及它们的邻域。图中主神经元的位置是通过从左上端第一列开始顺序从左到右,从上到下找到的。如图中的10×10神经元层,其主神经元位于46。
图7.2 二维神经元展示意图
二、自组织特征映射网络的学习
自组织特征映射网络的竞争层是一个二维平面阵列,由M=m2个神经元组成,图7.3是一种典型的二维竞争层神经元与输入层神经元之间的连接方式。输入是R维,输出是二维。 设网络的信号按某种顺序输入: p(t)={p,t}, i=1,2,?R} 共N个样本, ai(t)=
?i?1Rwji(t)pi(t) j=1,2,?,M
则基本的SOFM算法可以归纳为:
① 权值初始化,对各节点的权赋以随机数作为初始值wji(0),
40
i=1,2,?,R,j=1,2,?,M。
竞争层 M=m2个神经元
图7.3 SOFM网络模型
② 在样本集中随机选采样本p(t)输入。
③ 在输出节点集中寻找最佳匹配的节点C(即其权向量与n值最近的),如用欧氏(Euclid)距离,则C应为
‖p(t)―wc(t)‖=min{‖p(t)―wj(t)‖} (wj为P维向量)
j④ 权值学习:
??wj(t)??(t)h(t)[p(t)?wj(t)]j?Ncwj(i+1)=wj(i?1)??
w(t)j?N?0?j ⑤ t←t+1,转向②。
41
μ(t)为学习步长,h(t)为邻域大小,它们都随迭代次数而变化。
三、自组织特征映射网络的训练
SOFM网络在训练开始时其输入为竞争的胜利者代表某类模式。然后定义获胜节点的邻域节点,即以获胜节点为中心的某一半径内的所有节点,并对与其相似的权矩阵进行调整。随着训练的继续进行,获胜节点C的半径将逐渐变小,直到最后只包含获胜节点C本身。也就是说,在训练的初始阶段,不但对获胜的节点作权值的调整,而且对其周围较大范围内的几何邻接节点,也和相应的调整,而随着训练过程的进行,与获胜输出节点相连的权矩阵就越来越接近,其所代表的模式类,此时,需要对获胜节点进行较细致的权矩阵调整,同时,只对其几何邻接较近的节点进行相应的调整。这样,在训练结束后,几何上相近的输出节点的连接的权矢量既有联系,又相互有区别;保证了对于某一类输入模式获胜节点,能作出最大的响应。而相邻节点作出较小的响应。几何上相邻的节点代表特征上相似的模式类别。 训练设计步骤(适用于输入向量P具有某种概率分布的数组): 1.初始化:由输入向量确定网络结构,设置网络竞争层神经元节点;将输入模式P作归一化处理;归一随机化处理初始权值;设置最大训练次数max-cyde并确定基本学习速率lr以及最大邻层数。 2.学习速率是线性下降的: n=cycle/max_cycle; LR=(1-n)·lr;
这使得学习速率随着循环次数的增加,从lr*(maxcycle-1)/max=cycle逐渐降至0。
3.邻层数也是递减
h=max([ceil(max_neighba(1-x*4))1];
4.计算输入向量加权和,并通过竞争求出获胜节点。 A=compet(w*p);
5.根据获胜节点求出相邻层(以二维为例),并进行权值修正。 i=find(A==1); in=neighbad (i,[x,y],n);
42
dw=learnk(w,p,in,LR); w=w+dw;
6.检查是否达到最大训练次数max_cycle,如果达到了则输出或显示结果,否则转(2)继续训练。
四、重要的自组织网络函数
函数initc( )、simaC( )和trainc( )可分别用于竞争层的初始化,仿真和训练。函数initsm( )、simusm( )和trainsm( )分别用于自组织映射网络的初始化、仿真和训练。函数nbgrid( )、nbdist( )、nbman( )可生成一系列矩阵,以便用于定义自组织映射中神经元之间的邻域关系。 1.初始化
首先我们介绍一下竞争层初始化函数initc( )。利用函数initc( )可得到S个神经元的竞争层的权值和阀值。另外有一点特别重要,输入向量P的每一行中包含了网络输入的最大值和最小值,这样才能合适地初始化权值和阀值。输入变量为输入向量P和神经元数S,调用格式为
w=initc(p>s).
另外自组织网络初始化函数initc( )也可得到S个神经元的自组织网络的权值。与函数initc( )一样,输入向量P的每一行中包含了网络期望输入的最大值和最小值,这样才能合适地初始化权值和阀值。并且其调用格式也与函数initc( )一样为
w=initsm(p,s);
2.仿真
竞争层的仿真函数simue( )在任何时候只有最大网络输入的神经元的输出为1,其它神经元的输出为0。调用格式为:
a=simuc (p,w);
而自组织网络仿真函数simusm( )可得到自组织映射网络的输出,只有最大网络输入的神经元的输出为1,相邻神经元的输出为0.5,其余神经元的输出为0。调用格式为:
a=simusm(p,w,m,n);
式中m为自组织网络的邻阵,变量n为邻域的大小,其缺省值为1。
43
3.训练
对于竞争层的训练采用trainc( )函数,通过调整初始权值矩阵w和阀值向量b,得到了相应于随机顺序选取的输出向量P的新的权值矩阵,以便对一组输入向量进行分类。
w=trainc(w,p,tp);
输入变量tp为可选的训练参数:
·tp(1) 指定更新显示间的训练次数,其缺省值为25; ·tp(2) 指定训练的最大次数,其缺省值为100; ·tp(3) 指定学习速率,其缺省值为0.01; ·tp(4) 指定跟踪性能(0~1),其缺省值为0.999; ·tp(5) 指定加权性能(0~1)其缺省值为0.1。
tp(4)越接近于1,计算神经元输出均值就越慢;tp(5)越小,高均值或低均值对神经元阀值的影响也就越小,从而获得稳定的结果。
自组织映射网络的训练函数trainsm( )是利用Kohonen规则训练自组织映射网络。自组织映射网络由分布在一维或多维空间中的神经元构成的层组成,在任何时候,只有最大网络输入的神经元的输出为1,相邻的神经元的输出为0.5,其余神经元的输出为0。
w=trainsm(w,b,p,tp);
可选的训练参数tp为:
·tp(1) 指定两次更新显示间的次数,其缺省值为25; ·tp(2) 指定训练的最大次数,其缺省值为100; ·tp(3) 指定初始学习速率,其缺省值为1。
五、自组织网络应用举例
应用自组织网络对输入样本进行分类。
首先利用函数nngenc生成聚类数据点,具体生成过程如下: x=[0 1;0 1] 聚类数据点的范围; clusters=8 聚类数;
points=10 每个聚类的数据点个数; std_dev=0.05 聚类偏差;
44
p=nngenc(x, clusters, points, std_dev) 图形显示聚类数据点: plot(p(1,:),p(2,:),'+')
1.210.80.60.40.20-0.2-0.100.10.20.30.40.50.60.70.80.9 图7.4 聚类数据点 再运用函数initc初始化自组织神经网络,得到相应的网络节点和权值的初始值,再运用函数trainc对所构件的网络进行训练:
w=initc(p,8) df=25 me=1000 lr=0.1 tp=[df me lr] w=trainc(w,p,tp)
Competitive Learning: 1000 cycles1.210.80.60.40.20-0.2-0.100.10.20.30.40.50.60.70.80.9 图7.5 网络训练结果 45
对训练成熟的网络,可以利用函数simuc进行仿真: p1=[0.1; 0.4] a1=simuc(p1, w) 输出仿真结果: a1 =
(1, 1) 1 p2=[0.6; 0.2] a2=simuc(p2, w) 输出仿真结果:a2 =
(7, 1)
1 46
正在阅读:
matlab辅助神经网络设计04-04
升降国旗杆作文500字07-08
对曾国藩的评价02-13
热门-小学班级元旦联欢会主持词04-09
学校2017年度心理咨询室工作总结01-07
对河北衡水酒厂商品价格变动之浅析04-04
小升初语文毕业考试———修辞手法的练习05-20
小学优秀班集体事迹材料01-23
篮球多选题12-19
管理学原理 考试作业1 14秋及以后05-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 神经网络
- 辅助
- matlab
- 设计
- 关于用友8.72中计提坏账准备的问题探讨
- 空气弹簧项目可行性研究报告 - 图文
- 遥感数字图像处理教程 期末复习整理
- 一、施工方案与技术措施 - 图文
- 小学校本教材《中华古诗文读本子集》(含对照译文)
- 开放英语1(2)2012.06.26
- 火力发电厂锅炉汽包双色水位计缺陷原因分析及治理方法
- 实验5-进程管理和文件系统管理
- 中南大学物理化学考试试卷-2013
- 不同风速推算方法的研究
- 电大会计本科审计案例分析
- 三重管高压旋喷止水帷幕施工方案
- 工程造价咨询廉洁服务承诺
- 原创牛津英语5A期末综合测试卷 - 图文
- 学生教务管理信息系统的应用及其改进建议
- 试析国际法和国内法的关系
- 医用有机化学案例版书后习题答案
- 张姓婴儿取名
- 安全知识考试提纲
- 我觉得鲁滨逊是一个具有大无畏冒险进取精神的人