《专题二:神经网络优秀PPT.ppt》由会员分享,可在线阅读,更多相关《专题二:神经网络优秀PPT.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、人工神经网络建模专题Artificial Neural Network 生物神经元之间的相互连接从而让信息传递的部位披称为突触(Synapse)。突触按其传递信息的不同机制,可分为化学突触和电突触、其中化学突触占大多数,其神经冲动传递借助于化学递质的作用。生物神经元的结构大致描述如下图所示。什么是神经网络模型?定义一:神经网络,有时也称作多层感知器(MLPs),本质上是人脑处理信息方式的简化模型。它通过模拟大量相互连接的简洁处理单元工作,这些处理单元似乎神经元的抽象化版本。定义二:神经网络是指用大量的简洁计算单元(即神经元)构成的非线性系统,它在确定程度上仿照了人脑神经系统的信息处理、存储及检
2、索功能。定义三:一个神经网络是一个由简洁处理元构成的规模宏大的并行分布式处理器。自然具有存储学问和使之可用的特性。神经网络在两个方面与人脑相像:1.神经网络获得的学问是从外界环境中学习得到的。2.互连神经元的连接强度,即突触权值,用于储存获得的学问。多层感知器多层感知器 假如在输入和输出层间加上一层或假如在输入和输出层间加上一层或多层的神经元多层的神经元(隐层神经元隐层神经元),就可构成多层前,就可构成多层前向网络,这里称为多层感知器。向网络,这里称为多层感知器。这里需指出的是:多层感知器只允许调整一这里需指出的是:多层感知器只允许调整一层的连接权。这是因为按感知器的概念,无法层的连接权。这是
3、因为按感知器的概念,无法给出一个有效的多层感知器学习算法。给出一个有效的多层感知器学习算法。上述三层感知器中,有两层连接权,输入层与隐层单元间的权值是随机设置的固定值,不被调整;输出层与隐层间的连接权是可调整的。1.2激活(传递)函数的取法在Matlab工具箱里包括了很多激活(传递)函数。在“Transfer Function Graphs”中可以找到它们的完全列表 函数名 功 能 purelin 线性传递函数 hardlim 硬限幅递函数 hardlims 对称硬限幅递函数 satli 饱和线性传递函数 satlins 对称饱和线性传递函数 logsig 对数S 形传递函数 tansig 正
4、切S 形传递函数 radbas 径向基传递函数 compet 竞争层传递函数 1.3、网络结构以及工作方式从连接方式看NN主要有两种网络拓扑结构:前馈型网络:结点分为输入单元和计算单元反馈型网络:全部结点都是计算单元NN的工作过程主要分为两个阶段:第一阶段:学习期,此时个计算单元状态不变,各连线上的权值可通过学习来修改其次阶段:工作期,此时各连接权值固定,计算各单元状态变更网络结构:前馈型神经网络 两个或更多的上面所示的神经元可以组合成一层,一个典型的网络可包括一层或者多层。我们首先来探讨神经元层。单层神经元网络 有R输入元素和S个神经元组成的单层网络如下图所示n1=net.IW1,1*p+n
5、et.b1多层神经元网络 上面所示的网络有R1个输入,第一层有S1个神经元,其次层有S2个神经元中间层的输出就是下一层的输入。其次层可看作有S1个输入,S2个神经元和S1xS2 阶权重矩阵W2 的单层网络。其次层的输入是a1,输出是a2,现在我们已经确定了其次层的全部向量和矩阵,我们就能把它看成一个单层网络了。其他层也可以照此步骤处理。多层网络的功能特殊强大。例、一个两层的网络,第一层的转移函数是曲线函数,其次层的转移函数是线性函数,通过训练,它能够很好的模拟任何有有限断点的函数。这种两层网络集中应用于“反向传播网络”。留意:我们把第三层的输出a3标记为y。我们将运用这种符号来定义这种网络的输
6、出。神经网络模型节点n神经网络模型的学习过程(A)模型的特点模型的特点1、有指导的学习、有指导的学习2、前馈网络、前馈网络3、反向传播算法、反向传播算法(B)可变参数可变参数1、隐含层的数目、隐含层的数目2、学习效率、学习效率3、动态常量、动态常量4、停止准则、停止准则 神经网络模型节点n神经网络的主要特点 并行分布处理并行结构和并行实现,适于实时和动态处理 非线性映射可以处理非线性问题 适应和集成适用于困难、大规模和多变量系统,可以在线 运行和定性定量分析 自学习训练可以解决数学模型和规则难以解决的问题nClementine中神经网络的特有功能:n 敏感度分析:以帮助说明神经网络结果 修剪和
7、验证:以避开过度训练 动态网络 :自动找出合适的网络结构设计 神经网络模型节点n神经网络模型的主要功能n 分类(Cl)n 预料(Pr)n 限制(Ct)n 函数拟合(Ft)n神经网络的不足:n 模型为黑匣子,得到的结果不易说明n 模型可能会出现过拟合的状况n 结果可能是局部最小值,而非全局最优值n 1.4创建网络newp 创建感知器网络 newlind 设计一线性层 newlin 创建一线性层 newff 创建一前馈 BP 网络 newcf 创建一多层前馈 BP 网络 newfftd 创建一前馈输入延迟 BP 网络newrb 设计一径向基网络 newrbe 设计一严格的径向基网络 newgrnn
8、 设计一广义回来神经网络 newpnn 设计一概率神经网络 newc 创建一竞争层 newsom 创建一自组织特征映射 newhop 创建一 Hopfield 递归网络 newelm 创建一 Elman 递归网络 1.5数据结构:影响网络仿真的输入数据结构的格式静态网络中的同步输入仿真:例1动态网络中的异步输入仿真:当网络中存在延迟时,依次发生的输入向量就要按确定的序列输入网络。为了演示这种状况,我们以一个有延迟的简洁网络为例。动态网络中的同步输入仿真n假如我们在上例中把输入作为同步而不是异步应用,我们就会得到完全不同的响应。这就好象每一个输入都同时加到一个单独的并行网络中。在前一个例子中,假
9、如我们用一组同步输入,我们有:np1=1,p2=2,p3=3,p4=4 n这可用下列代码创建:P=1 2 3 4;n模拟这个网络,我们得到:nA=sim(net,P)nA=n1 2 3 4 n在某些特定的状况下,我们可能想要在同一时间模拟一些不同序列的网络响应。这种状况我们就要给网络输入一组同步序列。比如说,我们要把下面两个序列输入网络:n p(1)=1,p(2)=2,p(3)=3,p(4)=4 n p(1)=4,p(2)=3,p(3)=2,p(4)=1 n 输入 P应当是一个细胞数组,每一个数组元素都包含了两个同时发生n的序列的元素。nP=1 4 2 3 3 2 4 1;n现在我们就可以模拟
10、这个网络了:nA=sim(net,P);n网络输出结果将是:nA=1 4 4 11 7 8 10 5 n可以看到,每个矩阵的第一列是由第一组输入序列产生的输出序列,每个矩阵的其次列是由其次组输入序列产生的输出序列。这两组序列之间没有关联,好象他们是同时应用在单个的并行网络上的。前面的探讨中,不论是作为一个同步向量矩阵输入还是作为一个异步向量细胞数组输入,模拟的输出值是一样的。在训练网络时,这是不对的。当我们运用adapt函数时,假如输入是异步向量细胞数组,那么权重将在每一组输入提交的时候更新(就是增加方式);假如输入是同步向量矩阵,那么权重将只在全部输入提交的时候更新(就是批处理方式)。1.6
11、训练方式 两种不同的训练方式(1)增加方式:每提交一次输入数据,网络权重和偏置都更新一次;(2)在批处理方式中:仅仅当全部的输入数据都被提交以后,网络权重和偏置才被更新.增加方式(应用于自适应网络和其他网络)虽然增加方式更普遍的应用于动态网络,比如自适应滤波,但是在静态和动态网络中都可以应用它。静态网络中的增加方式 用增加方式来训练静态同步仿真中的例1,这样每提交一次输入数据,网络权重和偏置都更新一次。在此我们用函数adapt,并给出输入和目标序列:假定我们要训练网络建立以下线性函数:t=2p1+p2.我们的输入是:目标输出是:t1=4,t2=5,t3=7,t4=7 首先用0初始化权重和偏置。
12、为了显示增加方式的效果,先把学习速度也设为0。net=newlin(-1 1;-1 1,1,0,0);net.IW1,1=0 0;net.b1=0;为了用增加方式,我们把输入和目标输出表示为以下序列:P=1;2 2;1 2;3 3;1;T=4 5 7 7;用增加方式训练网络:net=newlin(-1 1;-1 1,1,0,0);net.IW1,1=0 0;net.b1=0;P=1;2 2;1 2;3 3;1;T=4 5 7 7;net,a,e,pf=adapt(net,P,T);由于学习速度为0,网络输出照旧为0,并且权重没有被更新。错误和目标输出相等。a=0 0 0 0 e=4 5 7 7
13、 假如我们设置学习速度为0.1,我们就能够看到当每一组输入提交时,网络是怎么调整的了。net.inputWeights1,1.learnParam.lr=0.1;net.biases1,1.learnParam.lr=0.1;net,a,e,pf=adapt(net,P,T);a=0 2 6.0 5.8 e=4 3 1.0 1.2 2、BP神经网络2.1、概述BP网络是接受Widrow-Hoff学习算法和非线性可微转移函数的多层网络。一个典型的BP网络接受的是梯度下降 算 法,也 就 是 Widrow-Hoff算 法 所 规 定 的。backpropagation就是指的为非线性多层网络计算梯
14、度的方法。现在有很多基本的优化算法,例如变尺度算法和牛顿算法。神经网络工具箱供应了很多这样的算法。一个经过训练的BP网络能够依据输入给出合适的结果,虽然这个输入并没有被训练过。这个特性使得BP网络很适合接受输入/目标对进行训练,而且并不须要把全部可能的输入/目标对都训练过。为了提高网络的适用性,神经网络工具箱供应了两个特性-规则化和早期停止。2.2、基础、基础 网络结构网络结构 1)常用的前馈型)常用的前馈型BP网络的转移函数有网络的转移函数有logsig,tansig有时也会用到线性函数有时也会用到线性函数purelin。当网络。当网络的最终一层接受曲线函数时输出被限制在一个很的最终一层接受
15、曲线函数时输出被限制在一个很小的范围内,假如接受线性函数则输出可为随意小的范围内,假如接受线性函数则输出可为随意值。假如须要也可以创建其他可微的转移函数。值。假如须要也可以创建其他可微的转移函数。2)在)在BP网络中,转移函数可求导是特殊重要网络中,转移函数可求导是特殊重要的,的,tansig、logsig和和purelin都有对应的导函都有对应的导函数数dtansig、dlogsig和和dpurelin。为了得到更多。为了得到更多转移函数的导函数转移函数的导函数,可以输入可以输入tansig(deriv)ans=dtansig 网络构建和初始化训练前馈网络的第一步是建立网络对象。函数newf
16、f建立一个可训练的前馈网络。net=newff(PR,S1 S2.SNl,TF1 TF2.TFNl,BTF,BLF,PF)这里须要4个输入参数。第一个参数是一个RxS1的矩阵以定义R个输入向量的最小值和最大值。其次个参数是一个每层神经元个数的数组。第三个参数是包含每层用到的转移函数名称的细胞数组。最终一个参数是用到的训练函数的名称。例、创建一个二层网络 它的输入是两个元素的向量,第一层有四个神经元,其次层有三个神经元。第一层的转移函数是tan-sigmoid,输出层的转移函数是linear。输入向量的第一个元素的范围是-1到2,输入向量的其次个元素的范围是0到5,训练函数是traingd。ne
17、t=newff(-1 2;0 5,4,3,tansig,purelin,traingd);这个叮嘱建立了网络对象并且初始化了网络权重和偏置,因此网络就可以进行训练了。在训练前馈网络之前,权重和偏置必需被初始化。初始化权重和偏置的工作用叮嘱init来实现。net=init(net);对前馈网络来说,有两种不同的初始化方式常常被用到:initwb和initnw。1)initwb函数依据每一层自己的初始化参数(net.inputWeightsi,j.initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands,它使权重在-1到1之间随机取值值,这种方式常常用在转换函数是线性函数时。2
18、)initnw通常用于转换函数是曲线函数。它依据Nguyen和WidrowNgWi90为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。它比起单纯的给权重和偏置随机赋值有以下优点:(1)削减神经元的奢侈(因为全部神经元的活动区域都在输入空间内)。(2)有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。n初始化函数被newff所调用。因此当网络创建n时,它依据缺省的参数自动初始化。ninit不须要单独的调用。可是我们可能要重新初始化权重和偏置或者进行自定义的初始化。例如,我们用newff创建的网络,它缺省用initnw来初始化第一层。假如我们想要用ra
19、nds重新初始化第一层的权重和偏置,我们用以下叮嘱:n net.layers1.initFcn=initwb;net.inputWeights1,1.initFcn=rands;net.biases1,1.initFcn=rands;net.biases2,1.initFcn=rands;n net=init(net);网络模拟(SIM)用函数sim 模拟一个网络。sim 接收网络输入p,网络对象net,返回网络输出a,这里是simuff用来模拟上面建立的带一个输入向量的网络。p=1;2;a=sim(net,p)a=-0.1011(用这段代码得到的输出是不一样的,这是因为网络初始化是随机的。)
20、例、调用sim来计算一个同步输入3向量网络的输出:p=1 3 2;2 4 1;a=sim(net,p)a=-0.1011-0.2308 0.4955增加模式训练法(ADAPT)现在我们就可以起先训练网络了。当然我们要指定输入值和目标值如下所示:p=-1-1 2 2;0 5 0 5;t=-1-1 1 1;假如我们要在每一次提交输入后都更新权重,那么须要将输入矩阵和目标矩阵转变为细胞数组。每一个细胞都是一个输入或者目标向量。p=num2cell(p,1);t=num2cell(t,1);现在就可以用adapt来实现增加方式训练了:net,a,e=adapt(net,p,t);训练结束以后,就可以模
21、拟网络输出来检验训练质量了。a=sim(net,p)a=-0.9995-1.0000 1.0001 1.0000 n带动力的梯度下降(LEARDGDM)n批处理训练方式 n批处理梯度下降法(TRAINGD)n带动量的批处理梯度下降法(批处理训练方式 TRAINGDM)例1、蠓虫分类问题1、蠓虫分类问题 生物学家试图对两种蠓虫(Af与Apf)进行鉴别,依据的资料是触角和翅膀的长度,已经测得了9支Af和6支Apf的数据如下:Af:(1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(
22、1.54,1.82),(1.56,2.08);Apf:(1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96).(i)依据如上资料,如何制定一种方法,正确地区分两类蠓虫。(ii)对触角和翼长分别为(1.24,1.80),(1.28,1.84)与(1.40,2.04)的3个标本,用所得到的方法加以识别。(iii)设Af是珍贵的传粉益虫,Apf是某疾病的载体,是否应当修改分类方法。问题分析:要求依据已知资料(问题分析:要求依据已知资料(9支支Af的数据和的数据和6支支Apf的数的数据)制定一种分类方法,类别是已经
23、给定的(据)制定一种分类方法,类别是已经给定的(Af或或Apf)。)。我们将我们将9支支Af及及6支支Apf的数据集合称之为学习样本。的数据集合称之为学习样本。2 多层前馈网络多层前馈网络为解决此问题,考虑一个其结构如下图所示的人工神经网络为解决此问题,考虑一个其结构如下图所示的人工神经网络输入层输出层中间层(隐层)以以s=1,2,15,分别表示学习样本中的,分别表示学习样本中的15个样个样品,对样品品,对样品s而言,对任何一组确定的输入而言,对任何一组确定的输入I_ks(k=1,2)隐单元隐单元j 的输入是的输入是相应的输出状态是相应的输出状态是网络的最终输出是网络的最终输出是 对于任何一组
24、确定的输入 ,输出是全部权的函数。假如我们能够选定一组适当的权值,使得对应于学习样本中任何一组Af样品的输入,输出为(1,0),对应于Apf的输入数据,输出为(0,1),那么蠓虫分类问题事实上就解决了。因为,对于任何一个未知类别的样品,只要将其触角及翅膀长度输入网络,视其输出模式靠近(1,0)亦或(0,1),就可能推断其归属。当然,有可能出现介于中间无法推断的状况。现在的问题是,如何找到一组适当的权值,实现上面所设想的网络功能。4、蠓虫分类问题求解nclearnp1=1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;n1.40,1.70;1.4
25、8,1.82;1.54,1.82;1.56,2.08;np2=1.14,1.82;1.18,1.96;1.20,1.86;1.26,2.00n1.28,2.00;1.30,1.96;np=p1;p2;npr=minmax(p);ngoal=ones(1,9),zeros(1,6);zeros(1,9),ones(1,6);nsubplot(1,2,1)nplot(p1(:,1),p1(:,2),h,p2(:,1),p2(:,2),o)nsubplot(1,2,2)nnet=newff(pr,3,2,logsig,logsig);nnet.trainParam.show=10;nnet.trai
26、nParam.lr=0.05;nnet.trainParam.epochs=3000;nnet.trainParam.goal=1e-10;nnet=train(net,p,goal);nx=1.24 1.80;1.28 1.84;1.40 2.04;ny0=sim(net,p)ny=sim(net,x)例2、人口预料以下是从北京统计年鉴中得到的 1980-2010年的北京城近郊区户籍人口统计结果作为样本数据,建立人工神经网络模型,预料、2011年的北京城近郊区户籍人口北京市人口数统计表:年份人数(万人)年份人数(万人)1980498.41996631.81981510.2 1997638.7
27、1982521.31998646.21983534.01999651.81984540.72000658.91985542.82001667.41986553.02002678.61987563.22003689.21988573.92004698.81989582.12005707.219905922006713.21991598.72007718.51992604.32008730.91993609.52009743.81994616.12010749.61995625.1数据处理后的样本数据:样本用途样本组数输入一输入二输入三输入四输出学习样本10.49840.51020.52130.5
28、340.540720.51020.52130.5340.54070.542830.52130.5340.54070.54280.55340.5340.54070.54280.5530.563250.54070.54280.5530.56320.573960.54280.5530.56320.57390.582170.5530.56320.57390.58210.59280.56320.57390.58210.5920.598790.57390.58210.5920.59870.6043100.58210.5920.59870.60430.6095110.5920.59870.60430.609
29、50.6161120.59870.60430.60950.61610.6251130.60430.60950.61610.62510.6318140.60950.61610.62510.63180.6387150.61610.62510.63180.63870.6462160.62510.63180.63870.64620.6518170.63180.63870.64620.65180.6589180.63870.64620.65180.65890.6674190.64620.65180.65890.66740.6786200.65180.65890.66740.67860.6892210.6
30、5890.66740.67860.68920.6988220.66740.67860.68920.69880.7072检验样本230.6786 0.68920.69880.70720.7132240.6892 0.69880.70720.71320.7185250.6988 0.70720.71320.71850.7309260.7072 0.71320.71850.73090.7438270.7132 0.71850.73090.74380.7496n%样本训练nnet=newff(minmax(p),6,1,tansig,purelin,trainlm);%建立网络ninputWeight
31、s=net.IW1,1;%当前输入层权值和阈值ninputbias=net.b1;nlayerWeights=net.LW2,1;%当前网络层权值和阈值nlayerbias=net.b2;n%网络参数设置nnet.performFcn=mse;nnet.trainParam.show=20;nnet.trainParam.goal=1e-5;nnet.trainParam.epochs=1000;nnet.trainParam.lr=0.15;nnet.trainParam.mc=0.9;nnet=train(net,p,t);%训练网络ny=sim(net,p);nx=1984:2005;n
32、plot(x,y,h,x,t,*)ne=t-y;nhold on;nplot(x,e);n%样本检验ny2=sim(net,p2);nx=1:5;nplot(x,y2,*);nhold onnplot(x,t2,red);n%预料样本ny3=sim(net,py);n最终编制的人口数量预料的BP神经网络主程序进行预料,检验结果显示2006、2007、2008、2009、2010年预料值分别为:0.7258,0.7340,0.7405 0.7460,0.7503。将结果还原即为725.8,734.0,740.5,746.0,750.3万人。实际样本值分别为:716.2,725.5,735.9,7
33、43.8,752.6。检验结果与实际样本的差值的确定值分别为9.6,8.5,4.6,2.2,2.3万人,这里取最大的误差9.6万人,与实际样本比值为1.34%,检验结果的误差较小,可以达到预料的效果。n网络训练成功后,预料可得到2011年北京市人口为753.4万人。bpnet=newff(pr,12 4,logsig,logsig,traingdx,learngdm);%建立BP神经网络,12个隐层神经元,4个输出神经元%tranferFcn属性 logsig 隐层接受Sigmoid传输函数%tranferFcn属性 logsig 输出层接受Sigmoid传输函数%trainFcn属性 traingdx 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数%learn属性 learngdm 附加动量因子的梯度下降学习函数 net.trainParam.epochs=1000;%允许最大训练步数2000步net.trainParam.goal=0.001;%训练目标最小误差0.001net.trainParam.show=10;%每间隔100步显示一次训练结果net.trainParam.lr=0.05;%学习速率0.05 常用参数
限制150内