《神经网络应用》PPT课件.ppt
1,第7讲 神经网络,尚涛,电子信息工程学院Tel:010-82317222,2,主要内容,人工神经网络简介神经网络工具箱应用实例,第一部分 人工神经网络简介,控制系统工具箱(Control System Toolbox)信号处理工具箱(Signal Processing toolbox)系统辨识工具箱(System Identification toolbox)鲁棒控制工具箱(Robust Control toolbox)分析于综合工具箱(-analysis and synthesis toolbox)定量反馈理论工具箱(QFT toolbox)神经网络工具箱(Neural Network toolbox)最优化工具箱(Optimisation toolbox)数据库工具箱(Database toolbox)网络工具箱(Matlab WebServer)等。,Matlab有30个工具箱包,包括,以冯诺依曼型计算机为中心的信息处理技术的高速发展,使得计算机在当今的信息化社会中起着十分重要的作用。但是,当用它来解决某些人工智能问题时却遇到了很大的困难。例如,一个人可以很容易地识别他人的脸孔,但计算机则很难做到这一点。大脑是由生物神经元构成的巨型网络,它在本质上不同于计算机,是一种大规模的并行处理系统,它具有学习、联想记忆、综合等能力,并有巧妙的信息处理方法。人工神经网络来源于对人脑实际神经网络的模拟,一、神经网络发展历史,背景知识,人工神经网络(Artificial Neural Netwroks,简称ANN)是对人类大脑系统的一种仿真,简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,是人工智能研究的一种方法。实际上它是由大量的、功能比较简单的形式神经元互相连接而构成的复杂网络系统,用它可以模拟大脑的许多基本功能和简单的思维方式。尽管它还不是大脑的完美元缺的模型,但它可以通过学习来获取外部的知识并存贮在网络内,可以解决计算机不易处理的难题,特别是语音和图像的识别、理解、知识的处理、组合优化计算和智能控制等一系列本质上是非计算的问题。,2什么是人工神经网络,1943年,美国心理学家W.McCulloch和数学家W.Pitts在提出了一个简单的神经元模型,即MP模型。1958年,F.Rosenblatt等研制出了感知机(Perceptron)。,3几个发展阶段,第一次热潮(40-60年代未),1982年,美国物理学家提出Hopfield模型,它是一个互联的非线性动力学网络他解决问题的方法是一种反复运算的动态过程,这是符号逻辑处理方法所不具备的性质.1987年首届国际ANN大会在圣地亚哥召开,国际ANN联合会成立,创办了多种ANN国际刊物。1990年12月,北京召开首届学术会议。,低潮(70-80年代初),第二次热潮,1.生物神经元模型,二、生物神经元,生物神经元模型就是一个简单的信号处理器。树突是神经元的信号输入通道,接受来自其他神经元的信息。轴突是神经元的信号输出通道。信息的处理与传递主要发生在突触附近。神经元细胞体通过树突接受脉冲信号,通过轴突传到突触前膜。当脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质(乙酰胆碱),使位于突触后膜的离子通道(Ion Channel)开放,产生离子流,从而在突触后膜产生正的或负的电位,称为突触后电位。,2.生物神经元模型的运行机理,突触有两种:兴奋性突触和抑制性突触。前者产生正突触后电位,后者产生负突触后电位。一个神经元的各树突和细胞体往往通过突触和大量的其他神经元相连接。这些突触后电位的变化,将对该神经元产生综合作用,即当这些突触后电位的总和超过某一阎值时,该神经元便被激活,并产生脉冲,而且产生的脉冲数与该电位总和值的大小有关。脉冲沿轴突向其他神经元传送,从而实现了神经元之间信息的传递。,连接权:求和单元:激励函数(响应函数):,三、人工神经元模型,1.人工神经元模型的三要素,模型中 为输入信号,为输出信号,为神经元的阈值。该模型的数学表达式为:,2.人工神经元模型的数学表达一,3.人工神经元模型的数学表达二,阈值函数:分段线性函数:sigmoid函数:,4.激励函数的形式,前馈型网络:反馈型网络:,四、网络结构及工作方式,1.网络结构,学习期:各计算单元状态不变,各连接线上权值通过学习来修改 工作期:连接权固定,计算单元状态变化,以达到某种稳定状态,2.工作方式,有教师学习:外界存在一个教师,对给定的一组输入,提供应有的输出(标准答案),学习系统可根据实际输出与标准答案之间的差值来调整系统参数,五、神经网络的学习方法,1.学习方式,无教师学习:学习系统按照环境提供数据的某些统计规律来调节自身参数,强化学习:环境对系统输出结果只给出评价信息(奖或惩),系统通过强化受奖动作来改善自身性能,考察神经元 k 在 n 时刻的输入和输出 输入:实际输出:应有输出:由误差信号构造能量函数:其中E(.)为求期望算子 求解最优化问题:得出系统参数:,2.学习规则,通常情况下用时刻 n 的瞬时值 代替J,即求解最优化问题 由数值迭代算法(如最速下降法、模拟退火算法等),可得其中 为学习步长,神经学家Hebb提出的学习规则:当某一连接两端的神经元同步激活(或同为抑制)时,该连接的强度应增强,反之应减弱,数学描述如下:其中 分别为 两端神经元的状态最常用的一种情况是:,3.Hebb学习规则,对于多层网络,由于有隐层后学习比较困难,限制了多层网络的发展,BP算法的出现解决了这一困难。,六、BP算法(向后传播算法),对于多层前馈型网络,网络中有两种信号在流通,(1)工作信号,施加的输入信号向前传播直到在输出层产生实际的输出信号,是输入信号和权值的函数(2)误差信号,网络实际输出与应有输出间的差值,它由输出层开始逐层向后传播,1.BP算法的原理,下面推导用于多层前馈型网络学习的BP算法,下面就逐个样本学习的情况来推导BP算法如右图,令单元 j 的净输入为则求 对 的梯度,该单元的误差信号为,定义单元 j 的平方误差为,则输出层总的平方误差的瞬时值为:,设在第 n 次迭代中某一层的第 j 个单元的输出为,2.BP算法,当 j 单元所在层为输出层时,其中 称为局部梯度,权值 的修正量为,当 j 单元所在层为隐层时,权值 的修正量为,其中,第二部分 神经网络工具箱,一、BP网络,1.构造多层前向神经网络,net=newff(A,B,C,trainfun),Matlab命令,A是一个 n 2的矩阵,第 i 行元素为输入信号 x i 的最小值和最大值;,参数说明,B为一 k 维行向量,其元素为各隐层节点数;,trainfun为学习规则采用的训练函数(常见训练函数如下表)。,C为一k 维字符串行向量,每一分量为对应层神经元的激励函数;,常见训练函数,MATLAB中激励函数为,其字符串分别为:logsig,tansig,purelin,激励函数,除了需要输入A,B,C,trainfun外,还有些默认的参数可修改,如下表,可修改参数,注:不同版本Matlab的可修改参数列表可能不同。,net,tr,Y1,E=train(net,X,Y),2.网络训练,网络训练,训练跟踪信息,训练后网络,网络实际输出,误差矩阵,网络训练函数,未经训练网络,网络实际输入,网络应有输出,X为nM矩阵,为输入数据矩阵,M为样本的组数。Y为mM矩阵,为输出数据矩阵。,训练结束后,对新的输入点数据X2,调用sim函数进行泛化,得出这些输入点处的输出矩阵Y2.,数据泛化,Y2=sim(net,X2),用经过训练的网络对于不是样本集的输入,计算出相应的输出。,什么是数据泛化?,3.数据泛化,例7-1 由下面的语句生成一组数据 x 和 y,用神经网络进行数据拟合 x=0:.1:10;y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);可知(x,y)是曲线上的点。,x=0:.1:10;y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);net=newff(0,10,5,1,tansig,tansig);net.trainParam.epochs=1000;net=train(net,x,y);x0=0:.1:10;figure(1)y1=sim(net,x0);plot(x,y,o,x0,y1,r),nntool命令产生神经网络图形交互界面如下,二、神经网络交互式界面,第三部分 应用实例,实例1.蠓虫分类问题的神经网络方法(1989年MCM竞赛题目),生物学家试图对两种蠓虫(Af与Apf)进行鉴别,依据的资料是触角和翅膀的长度,已经测得9只Af和6只Apf的数据如下:,9只Af触角长:1.24 1.36 1.38 1.38 1.38 1.40 1.48 1.54 1.56翅膀长:1.72 1.74 1.64 1.82 1.90 1.70 1.82 1.82 2.08,6只Apf触角长:1.14 1.18 1.20 1.26 1.28 1.30翅膀长:1.78 1.96 1.86 2.00 2.00 1.96,问题:(1)如何凭借原始资料(15 对数据,被称之为学习样本)制定一种方法,正确区分两类蠓虫;(2)依据确立的方法,对以下三个样本:(1.24,1.80),(1.28,1.84),(1.40,2.04)加以识别,解法一:建立两层前向神经网络如下:,隐层节点可适量选取(没有具体标准)。X=为输入矩阵,x1对应于触角长,x2 对应于翅膀长。Y=为输出矩阵规定Af对应的应有输出为,Apf对应的应有输出为,以上神经网络模型的MATLAB程序如下:,x=1.24 1.36 1.38 1.38 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.82 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96;%原始数据x=x-1.1;%数据标准化y=0 0 0 0 0 0 0 0 0 1 1 1 1 1 1;1 1 1 1 1 1 1 1 1 0 0 0 0 0 0;%应有的输出net=newff(0,1;0 1,5,2,tansig,tansig);%建立两层前向神经网络%net.trainParam.goal=0.0000001;%设定训练误差net.trainParam.epochs=2000;%设定最大训练步数net=train(net,x,y);%训练网络y1=sim(net,x)%输出数据yy=sim(net,1.24 1.28 1.40;1.80 1.84 2.04)%数据泛化,解法二:建立单层感知器模型如下:,X=为输入矩阵,x1对应于触角长,x2对应于翅膀长。Y=为输出矩阵,规定Af对应的应有输出为,Apf对应的应有输出为,以上神经网络模型的MATLAB程序如下:,x=1.24 1.36 1.38 1.38 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.82 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96;%原始数据x=x-1.1;%数据标准化y=0 0 0 0 0 0 0 0 0 1 1 1 1 1 1;1 1 1 1 1 1 1 1 1 0 0 0 0 0 0;%应有的输出net=newp(minmax(x),2);%建立单层两节点感知器模型%net.trainParam.goal=0.0000001;%设定训练误差net.trainParam.epochs=200;%设定最大训练步数net=train(net,x,y);%训练网络y1=sim(net,x)%输出数据yy=sim(net,1.24 1.28 1.40;1.80 1.84 2.04)%数据泛化plotpv(x,y)%绘制输入向量和目标向量plotpc(net.iw1,1,net.b1)%绘制分界线,