1第一节神经网络基本理论一、人工神经网络概论近代神经生理学和神经解剖学的研究结果表明,人脑是由约一千多亿个神经元(大脑皮层约140多亿,小脑皮层约1000多亿)交织在一起的、极其复杂的网状结构,能完成智能、思维、情绪等高级精神活动,无论是脑科学还是智能科学的发展都促使人们对人脑(神经网络)的模拟展开了大量的工作,从而产生了人工神经网络这个全新的研究领域。人工神经网络(ANNS)常常简称为神经网络(NNS),是以计算机网络系统模拟生物神经网络的智能计算系统,是对人脑或自然神经网络的若干基本特性的抽象和模拟。网络上的每个结点相当于一个神经元,可以记忆(存储)、处理一定的信息,并与其它结点并行工作。神经网络的研究最早要追述到40年代心理学家Mcculloch和数学家Pitts合作提出的兴奋与抑制型神经元模型和Hebb提出的神经元连接强度的修改规则,其成果2至今仍是许多神经网络模型研究的基础。50~60年代的代表性工作主要有Rosenblatt的感知器模型、Widrow的自适应网络元件Adaline。然而在1969年Minsky和Papert合作发表的Perceptron一书中阐述了一种消极悲观的论点,在当时产生了极大的消极影响,加之数字计算机正处于全盛时期并在人工智能领域取得显著成就,这导致了70年代人工神经网络的研究处于空前的低潮阶段。80年代以后,传统的VonNeumann数字计算机在模拟视听觉的人工智能方面遇到了物理上不可逾越的障碍。与此同时Rumelhart、Mcclelland和Hopfield等人在神经网络领域取得了突破性进展,神经网络的热潮再次掀起。目前较为流行的研究工作主要有:前馈网络模型、反馈网络模型、自组织网络模型等方面的理论。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。求解一个问题是向人工神网络的某些结点输入信息,3各结点处理后向其它结点输出,其它结点接受并处理后再输出,直到整个神经网工作完毕,输出最后结果。如同生物的神经网络,并非所有神经元每次都一样地工作。如视、听、摸、想不同的事件(输入不同),各神经元参与工作的程度不同。当有声音时,处理声音的听觉神经元就要全力工作,视觉、触觉神经元基本不工作,主管思维的神经元部分参与工作;阅读时,听觉神经元基本不工作。在人工神经网络中以加权值控制结点参与工作的程度。正权值相当于神经元突触受到刺激而兴奋,负权值相当于受到抑制而使神经元麻痹直到完全不工作。如果通过一个样板问题“教会”人工神经网络处理这个问题,即通过“学习”而使各结点的加权值得到肯定,那么,这一类的问题它都可以解。好的学习算法会使它不断积累知识,根据不同的问题自动调整一组加权值,使它具有良好的自适应性。此外,它本来就是一部分结点参与工作。当某结点出故障时,它就让功能相近的其它结点顶替有故障结点参与工作,使系统不致中断。所以,它有很4强的容错能力。人工神经网络通过样板的“学习和培训”,可记忆客观事物在空间、时间方面比较复杂的关系,适合于解决各类预测、分类、评估匹配、识别等问题。例如,将人工神经网络上的各个结点模拟各地气象站,根据某一时刻的采样参数(压强、湿度、风速、温度),同时计算后将结果输出到下一个气象站,则可模拟出未来气候参数的变化,作出准确预报。即使有突变参数(如风暴,寒流)也能正确计算。所以,人工神经网络在经济分析、市场预测、金融趋势、化工最优过程、航空航天器的飞行控制、医学、环境保护等领域都有应用的前景。人工神经网络的特点和优越性使它近年来引起人们的极大关注,主要表现在三个方面:第一,具有自学习功能。例如实现图像识别时,只需把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。人工神经5网络计算机将为人类提供经济预测、市场预测、效益预测,其前途是很远大的。第二,具有联想存储功能。人的大脑是具有联想功能的。如果有人和你提起你幼年的同学张某某,你就会联想起张某某的许多事情。用人工神经网络的反馈网络就可以实现这种联想。第三,具有高速寻找最优解的能力。寻找一个复杂问题的最优解,往往需要很大的计算量,利用一个针对某问题而设计的人工神经网络,发挥计算机的高速运算能力,可能很快找到最优解。人工神经网络是未来微电子技术应用的新领域,智能计算机的构成就是作为主机的冯·诺依曼计算机与作为智能外围机的人工神经网络的结合。二、生物神经元模型神经元是脑组织的基本单元,其结构如图1所示,神经元由三部分构成:细胞体,树突和轴突;每一部分虽具有各自的功能,但相互之间是互补的。6树突是细胞的输入端,通过细胞体间联结的节点“突触”接受四周细胞传出的神经冲动;轴突相当于细胞的输出端,其端部的众多神经未梢为信号的输出端子,用于传出神经冲动。神经元具有兴奋和抑制的两种工作状态。当传入的神经冲动,使细胞膜电位升高到阀值(约为40mV)时,细胞进入兴奋状态,产生神经冲动,由轴突输出。相反,若传入的神经冲动,使细胞膜电位下降到低于阀值时,细胞进入抑制状态,没有神经冲动输出。图1生物神经元结构三、人工神经元模型人工神经元模型是以大脑神经细胞的活动规律为原理7的,反映了大脑神经细胞的某些基本特征,但不是也不可能是人脑细胞的真实再现,从数学的角度而言,它是对人脑细胞的高度抽象和简化的结构模型。虽然人工神经网络有许多种类型,但其基本单元—人工神经元是基本相同的。如图2是一个典型的人工神经元模型:图2人工神经元模型神经元模型相当于一个多输入单输出的非线性阀值元件,X1,X2,…,Xn表示神经元的n个输入,W1,W2,…,Wn表示神经元之间的连接强度,称为连接权,WiXi称为神经元的激活值,O表示这个神经元的输出,每个神经元有一个阀值θ,如果神经元输入信号的加权和超过θ,神经元就处于兴奋状态。以数学表达式描述为:O=f(WiXi-θ)四、Matlab的神经网络工具包由于神经网络自身的特点,计算中经常涉及到大量的8训练样本数据、复杂的运算操作、繁琐的程序设计等问题。对此,具有强大功能的数学软件Matlab,为我们提供了神经网络工具箱NeuralNetwoksToolbox(NNT)及丰富的函数命令。NNT是进行神经网络训练和仿真的优良平台。常用来对网络进行初始化、仿真、设计、调整、优化。集成化的处理方式、友好的界面、形象的演示过程、简易的操作,为神经网络应用者节约了大量的不必要的编程时间,使得非专业人士应用神经网络成为了可能。Matlab是Mathworks公司开发的工程计算软件包,其中有一个神经网络工具包,可以用来方便地创建各种神经网络,对数据进行学习和模拟输出。Matlab中普遍采用的是物理和工程学中强有力的矩阵描述的语言,简洁优美。9第二节感知器感知器(Pereceptron)是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt于1958年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。一、感知器神经元模型感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图2.1为感知器神经元模型。x1x2xRoo┇oiwi1wi2wiRθ1o10图2.1感知器神经元模型感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:0,00,1)(xxxf(2.1)而感知器神经元模型的实际输出为Riiibxwfo1(2.2)其中b为阀值二、感知器的网络结构图2.2所描述的是一个简单的感知器网络结构,输入层有R个输入,Q个输出,通过权值wij与s个感知器神经元连接组成的感知器神经网络。图2.2感知器神经网络结构根据网络结构,可以写出感知器处理单元对其输入的加PoN1obR×QS×RS×1S×QnS×Qa11权和操作,即:Rjjijipwn1(2.3)而其输出ai为ai=f(ni+bi)(2.4)由式2.1易知0001iiiiibnbna(2.5)则当输入ni+bi大于等于0,即有ni≥-bi时,感知器的输出为1;否则输出为0。上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。图2.3描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。Pow11obR×QS×RS×1a1W2a2图2.3感知器神经网络结构ob12三、感知器神经网络的学习规则感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。如图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,感知器学习规则可望写为:13Δw1j=ei·pj可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。四、感知器神经网络的训练要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。我们可以用以下方法训练网络:1)确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图2.2的网络结构。2)初始化:权值向量w和阀值向量b分别赋予[-1,+1]14之间的随机值,并且给出训练的最大次数。3)根据输入向量P、最新权值向量w和阀值向量b,计算网络输出向量a。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()函数前,让我们先介绍一下训练的控15制参数tp。tp=[disp_freqmax_epoch]其中disp_freq指定两次显示间训练次数,缺省值为1;map_epoch指定训练的最大次数,缺省值为100。调用训练函数trainp()函数后又得到新的权值矩阵,阀值向量以及误差te。trainp()函数所需要的输入变量为:输入向量P、目标向量t以及网络的初始权值和阀值,训练的控制参数tp。调用格式为:[w,b,te]=trainp(w,b,p,t,tp)由于函数trainp()并不能保证感知器网络所得到的网络权值和阀值