下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 神经网络建模 (2)

神经网络建模 (2).ppt

神经网络建模 (2)

匡春燕2008
2013-07-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《神经网络建模 (2)ppt》,可适用于人文社科领域

人工神经网络建模人工神经网络建模数学与信息科学系、神经网络简介、神经网络简介人工神经网络是在现代神经科学的基础上发展起来的旨在模拟人脑结构以及功能的一种抽象的数学模型,其中Hopfield神经网络、ART神经网络、BP神经网络是常用的网络。Hopfield神经网络是由相同的神经元构成的单元是一类不具有学习能力的单层自联想网络她的网络模型由一组可使某一个能量函数最小的微分方程组成。ART神经网络主要用于模式识别她的不足之处在于对转换、失真和规模变化较敏感BP神经网络是误差反向传播的多层前向网络,其信息处理机制由神经元激活特性和网络拓扑结构决定,神经元的传递函数是非线性函数,网络结构由输入层、隐含层、输出层组成,同层节点间无关联,异层节点前向连接。、人工神经元模型、人工神经元模型人工神经网络的基本单元的神经元模型人工神经元的三个要素人工神经元的三个要素激活(传递)函数的取法激活(传递)函数的取法在Matlab工具箱里包括了许多激活(传递)函数。在“TransferFunctionGraphs”中可以找到它们的完全列表函数名功能purelin线性传递函数hardlim硬限幅递函数hardlims对称硬限幅递函数satli饱和线性传递函数satlins对称饱和线性传递函数logsig对数S形传递函数tansig正切S形传递函数radbas径向基传递函数compet竞争层传递函数、网络结构以及工作方式、网络结构以及工作方式从连接方式看NN主要有两种网络拓扑结构:前馈型网络:结点分为输入单元和计算单元反馈型网络:所有结点都是计算单元NN的工作过程主要分为两个阶段:第一阶段:学习期此时个计算单元状态不变各连线上的权值可通过学习来修改第二阶段:工作期此时各连接权值固定计算各单元状态变化网络结构:前馈型神经网络网络结构:前馈型神经网络两个或更多的上面所示的神经元可以组合成一层一个典型的网络可包括一层或者多层。我们首先来研究神经元层。单层神经元网络有R输入元素和S个神经元组成的单层网络如下图所示n{}=netIW{,}*pnetb{}多层神经元网络多层神经元网络上面所示的网络有R个输入第一层有S个神经元第二层有S个神经元…中间层的输出就是下一层的输入。第二层可看作有S个输入S个神经元和SxS阶权重矩阵W的单层网络。第二层的输入是a输出是a现在我们已经确定了第二层的所有向量和矩阵我们就能把它看成一个单层网络了。其他层也可以照此步骤处理。多层网络的功能非常强大。例、一个两层的网络第一层的转移函数是曲线函数第二层的转移函数是线性函数通过训练它能够很好的模拟任何有有限断点的函数。这种两层网络集中应用于“反向传播网络”。注意:我们把第三层的输出a标记为y。我们将使用这种符号来定义这种网络的输出。中间层的输出就是下一层的输入。第二层可看作有S个输入S个神经元和SxS阶权重矩阵W的单层网络。第二层的输入是a输出是a现在我们已经确定了第二层的所有向量和矩阵我们就能把它看成一个单层网络了。其他层也可以照此步骤处理。多层网络的功能非常强大。例、一个两层的网络第一层的转移函数是曲线函数第二层的转移函数是线性函数通过训练它能够很好的模拟任何有有限断点的函数。这种两层网络集中应用于“反向传播网络”。注意:我们把第三层的输出a标记为y。我们将使用这种符号来定义这种网络的输出。创建网络创建网络newp创建感知器网络newlind设计一线性层newlin创建一线性层newff创建一前馈BP网络newcf创建一多层前馈BP网络newfftd创建一前馈输入延迟BP网络newrb设计一径向基网络newrbe设计一严格的径向基网络newgrnn设计一广义回归神经网络newpnn设计一概率神经网络newc创建一竞争层newsom创建一自组织特征映射newhop创建一Hopfield递归网络newelm创建一Elman递归网络数据结构:影响网络仿真的输入数据结构的格式数据结构:影响网络仿真的输入数据结构的格式静态网络中的同步输入仿真:例动态网络中的异步输入仿真:当网络中存在延迟时顺序发生的输入向量就要按一定的序列输入网络。为了演示这种情况我们以一个有延迟的简单网络为例。动态网络中的异步输入仿真:当网络中存在延迟时顺序发生的输入向量就要按一定的序列输入网络。为了演示这种情况我们以一个有延迟的简单网络为例。动态网络中的同步输入仿真动态网络中的同步输入仿真如果我们在上例中把输入作为同步而不是异步应用我们就会得到完全不同的响应。这就好象每一个输入都同时加到一个单独的并行网络中。在前一个例子中如果我们用一组同步输入我们有:p=,p=,p=,p=这可用下列代码创建:P=模拟这个网络我们得到:A=sim(net,P)A=在某些特定的情况下我们可能想要在同一时间模拟一些不同序列的网络响应。这种情况我们就要给网络输入一组同步序列。比如说我们要把下面两个序列输入网络:p()=,p()=,p()=,p()=p()=,p()=,p()=,p()=输入P应该是一个细胞数组每一个数组元素都包含了两个同时发生的序列的元素。P={}现在我们就可以模拟这个网络了:A=sim(net,P)网络输出结果将是:A={}可以看到每个矩阵的第一列是由第一组输入序列产生的输出序列每个矩阵的第二列是由第二组输入序列产生的输出序列。这两组序列之间没有关联好象他们是同时应用在单个的并行网络上的。前面的讨论中不论是作为一个同步向量矩阵输入还是作为一个异步向量细胞数组输入模拟的输出值是一样的。在训练网络时这是不对的。当我们使用adapt函数时如果输入是异步向量细胞数组那么权重将在每一组输入提交的时候更新(就是增加方式)如果输入是同步向量矩阵那么权重将只在所有输入提交的时候更新(就是批处理方式)。训练方式训练方式两种不同的训练方式()增加方式:每提交一次输入数据网络权重和偏置都更新一次()在批处理方式中:仅仅当所有的输入数据都被提交以后网络权重和偏置才被更新增加方式(应用于自适应网络和其他网络)虽然增加方式更普遍的应用于动态网络比如自适应滤波但是在静态和动态网络中都可以应用它。静态网络中的增加方式静态网络中的增加方式用增加方式来训练静态同步仿真中的例这样每提交一次输入数据网络权重和偏置都更新一次。在此我们用函数adapt并给出输入和目标序列:假定我们要训练网络建立以下线性函数:t=pp我们的输入是:目标输出是:t=,t=,t=,t=首先用初始化权重和偏置。为了显示增加方式的效果先把学习速度也设为。net=newlin(,,,)netIW{,}=netb{}=为了用增加方式我们把输入和目标输出表示为以下序列:P={}T={}用增加方式训练网络:net=newlin(,,,)netIW{,}=netb{}=P={}T={}net,a,e,pf=adapt(net,P,T)由于学习速度为网络输出仍然为并且权重没有被更新。错误和目标输出相等。a=e=如果我们设置学习速度为我们就能够看到当每一组输入提交时网络是怎么调整的了。netinputWeights{,}learnParamlr=netbiases{,}learnParamlr=net,a,e,pf=adapt(net,P,T)a=e=、BP神经网络、BP神经网络、概述BP网络是采用WidrowHoff学习算法和非线性可微转移函数的多层网络。一个典型的BP网络采用的是梯度下降算法也就是WidrowHoff算法所规定的。backpropagation就是指的为非线性多层网络计算梯度的方法。现在有许多基本的优化算法例如变尺度算法和牛顿算法。神经网络工具箱提供了许多这样的算法。一个经过训练的BP网络能够根据输入给出合适的结果虽然这个输入并没有被训练过。这个特性使得BP网络很适合采用输入目标对进行训练而且并不需要把所有可能的输入目标对都训练过。为了提高网络的适用性神经网络工具箱提供了两个特性规则化和早期停止。、基础网络结构)常用的前馈型BP网络的转移函数有logsigtansig有时也会用到线性函数purelin。当网络的最后一层采用曲线函数时输出被限制在一个很小的范围内如果采用线性函数则输出可为任意值。如果需要也可以创建其他可微的转移函数。)在BP网络中转移函数可求导是非常重要的tansig、logsig和purelin都有对应的导函数dtansig、dlogsig和dpurelin。为了得到更多转移函数的导函数,可以输入tansig(‘deriv’)ans=dtansig、基础网络结构)常用的前馈型BP网络的转移函数有logsigtansig有时也会用到线性函数purelin。当网络的最后一层采用曲线函数时输出被限制在一个很小的范围内如果采用线性函数则输出可为任意值。如果需要也可以创建其他可微的转移函数。)在BP网络中转移函数可求导是非常重要的tansig、logsig和purelin都有对应的导函数dtansig、dlogsig和dpurelin。为了得到更多转移函数的导函数,可以输入tansig(‘deriv’)ans=dtansig网络构建和初始化网络构建和初始化训练前馈网络的第一步是建立网络对象。函数newff建立一个可训练的前馈网络。net=newff(PR,SSSNl,{TFTFTFNl},BTF,BLF,PF)这里需要个输入参数。第一个参数是一个RxS的矩阵以定义R个输入向量的最小值和最大值。第二个参数是一个每层神经元个数的数组。第三个参数是包含每层用到的转移函数名称的细胞数组。最后一个参数是用到的训练函数的名称。例、创建一个二层网络例、创建一个二层网络它的输入是两个元素的向量第一层有四个神经元第二层有三个神经元。第一层的转移函数是tansigmoid输出层的转移函数是linear。输入向量的第一个元素的范围是到输入向量的第二个元素的范围是到训练函数是traingd。net=newff(,,,{‘tansig’,‘purelin’},‘traingd’)这个命令建立了网络对象并且初始化了网络权重和偏置因此网络就可以进行训练了。在训练前馈网络之前权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。net=init(net)对前馈网络来说有两种不同的初始化方式经常被用到:initwb和initnw。)initwb函数根据每一层自己的初始化参数(netinputWeights{i,j}initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands它使权重在到之间随机取值值这种方式经常用在转换函数是线性函数时。)initnw通常用于转换函数是曲线函数。它根据Nguyen和WidrowNgWi为层产生初始权重和偏置值使得每层神经元的活动区域能大致平坦的分布在输入空间。它比起单纯的给权重和偏置随机赋值有以下优点:()减少神经元的浪费(因为所有神经元的活动区域都在输入空间内)。()有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。在训练前馈网络之前权重和偏置必须被初始化。初始化权重和偏置的工作用命令init来实现。net=init(net)对前馈网络来说有两种不同的初始化方式经常被用到:initwb和initnw。)initwb函数根据每一层自己的初始化参数(netinputWeights{i,j}initFcn)初始化权重矩阵和偏置。前馈网络的初始化权重通常设为rands它使权重在到之间随机取值值这种方式经常用在转换函数是线性函数时。)initnw通常用于转换函数是曲线函数。它根据Nguyen和WidrowNgWi为层产生初始权重和偏置值使得每层神经元的活动区域能大致平坦的分布在输入空间。它比起单纯的给权重和偏置随机赋值有以下优点:()减少神经元的浪费(因为所有神经元的活动区域都在输入空间内)。()有更快的训练速度(因为输入空间的每个区域都在活动的神经元范围中)。初始化函数被newff所调用。因此当网络创建时它根据缺省的参数自动初始化。init不需要单独的调用。可是我们可能要重新初始化权重和偏置或者进行自定义的初始化。例如我们用newff创建的网络它缺省用initnw来初始化第一层。如果我们想要用rands重新初始化第一层的权重和偏置我们用以下命令:netlayers{}initFcn='initwb'netinputWeights{,}initFcn='rands'netbiases{,}initFcn='rands'netbiases{,}initFcn='rands'net=init(net)网络模拟(SIM)网络模拟(SIM)用函数sim模拟一个网络。sim接收网络输入p网络对象net返回网络输出a这里是simuff用来模拟上面建立的带一个输入向量的网络。p=a=sim(net,p)a=(用这段代码得到的输出是不一样的这是因为网络初始化是随机的。)例、调用sim来计算一个同步输入向量网络的输出:p=a=sim(net,p)a=网络训练网络训练一旦网络加权和偏差被初始化网络就可以开始训练了。我们能够训练网络来做函数近似(非线性后退)模式结合或者模式分类。训练处理需要一套适当的网络操作的例子网络输入p和目标输出t。在训练期间网络的加权和偏差不断的把网络性能函数netperformFcn减少到最小。前馈网络的缺省性能函数是均方误差mse网络输出和目标输出t之间的均方误差。反向传播算法反向传播算法反向传播学习算法最简单的应用是沿着性能函数最速增加的方向梯度的负方向更新权重和偏置。这种递归算法可以写成:xk=xkak*gk这里xk是当前权重和偏置向量gk是当前梯度ak是学习速率。有两种不同的办法实现梯度下降算法:增加模式和批处理模式。在增加模式中网络输入每提交一次梯度计算一次并更新权重。在批处理模式中当所有的输入都被提交后网络才被更新。增加模式训练法(ADAPT)增加模式训练法(ADAPT)现在我们就可以开始训练网络了。当然我们要指定输入值和目标值如下所示:p=t=如果我们要在每一次提交输入后都更新权重那么我们需要将输入矩阵和目标矩阵转变为细胞数组。每一个细胞都是一个输入或者目标向量。p=numcell(p,)t=numcell(t,)现在就可以用adapt来实现增加方式训练了:net,a,e=adapt(net,p,t)训练结束以后就可以模拟网络输出来检验训练质量了。a=sim(net,p)a=带动力的梯度下降(LEARDGDM)批处理训练方式批处理梯度下降法(TRAINGD)带动量的批处理梯度下降法(批处理训练方式TRAINGDM)例、蠓虫分类问题例、蠓虫分类问题、蠓虫分类问题生物学家试图对两种蠓虫(Af与Apf)进行鉴别依据的资料是触角和翅膀的长度已经测得了支Af和支Apf的数据如下:Af:(,)(,)(,)(,)(,)(,)(,)(,)(,)Apf:(,)(,)(,)(,)(,)(,)(i)根据如上资料如何制定一种方法正确地区分两类蠓虫。(ii)对触角和翼长分别为(,)(,)与(,)的个标本用所得到的方法加以识别。(iii)设Af是宝贵的传粉益虫Apf是某疾病的载体是否应该修改分类方法。问题分析:要求依据已知资料(支Af的数据和支Apf的数据)制定一种分类方法类别是已经给定的(Af或Apf)。我们将支Af及支Apf的数据集合称之为学习样本。多层前馈网络为解决此问题考虑一个其结构如下图所示的人工神经网络问题分析:要求依据已知资料(支Af的数据和支Apf的数据)制定一种分类方法类别是已经给定的(Af或Apf)。我们将支Af及支Apf的数据集合称之为学习样本。多层前馈网络为解决此问题考虑一个其结构如下图所示的人工神经网络输入层输出层中间层(隐层)以s=,,,分别表示学习样本中的个样品对样品s而言对任何一组确定的输入Ik^s(k=,)隐单元j的输入是相应的输出状态是网络的最终输出是以s=,,,分别表示学习样本中的个样品对样品s而言对任何一组确定的输入Ik^s(k=,)隐单元j的输入是相应的输出状态是网络的最终输出是对于任何一组确定的输入输出是所有权的函数。如果我们能够选定一组适当的权值使得对应于学习样本中任何一组Af样品的输入输出为(,)对应于Apf的输入数据输出为(,)那么蠓虫分类问题实际上就解决了。因为对于任何一个未知类别的样品只要将其触角及翅膀长度输入网络视其输出模式靠近(,)亦或(,)就可能判断其归属。当然有可能出现介于中间无法判断的情况。现在的问题是如何找到一组适当的权值实现上面所设想的网络功能。向后传播算法在年美国加州大学的一个研究小组提出了所谓向后传播算法(BackPropagation)。我们希望对应于学习样本中Af样品的输出是(,)对应于Apf的输出是(,)这样的输出称之为理想输出。实际上要精确地作到这一点是不可能的只能希望实际输出尽可能地接近理想输出。为清楚起见把对应于样品s的理想输出记为向后传播算法在年美国加州大学的一个研究小组提出了所谓向后传播算法(BackPropagation)。我们希望对应于学习样本中Af样品的输出是(,)对应于Apf的输出是(,)这样的输出称之为理想输出。实际上要精确地作到这一点是不可能的只能希望实际输出尽可能地接近理想输出。为清楚起见把对应于样品s的理想输出记为度量了在一组给定的权下实际输出与理想输出的差异由此寻找一组恰当的权的问题自然地归结为求适当W的值使E(W)达到极小的问题最速下降法最速下降法对每一个变量wij或w而言这是一个连续可微的非线性函数为了求得其极小点与极小值最为方便的就是使用最速下降法。最速下降法是一种迭代算法为求出E(W)的(局部)极小它从一个任取的初始点W出发计算在W点的负梯度方向这是函数在该点下降最快的方向只要就可沿该方向移动一小段距离达到一个新的点。不断重复这一过程一定能达到E的一个(局部)极小点。就本质而言这就是BP算法的全部内容。然而对人工神经网络问题而言这一算法的具体形式是非常重要的下面我们就来给出这一形式表达。对于隐单元到输出单元的权wij而言最速下降法给出的每一步的修正量是对于隐单元到输出单元的权wij而言最速下降法给出的每一步的修正量是可以看出所有权的修正量都有如下形式指标p对应于两个单元中输出信号的一端q对应于输入信号的一端v或者代表H或者代表I。由实际输出与理想输出的差及决定而则需依赖算出因此这一算法才称为向后传播算法。由实际输出与理想输出的差及决定而则需依赖算出因此这一算法才称为向后传播算法。利用这一迭代算法最终生成在一定精度内满足要求的的过程称为人工神经网络的学习过程。可以看出这里所提供的学习机制是元与元之间权的不断调整学习样本中任何一个样品所提供的信息最终将包含在网络的每一个权之中。参数h的大小则反映了学习效率。、蠓虫分类问题求解、蠓虫分类问题求解clearp=,,,,,,,,,p=,,,,,,p=pp'pr=minmax(p)goal=ones(,),zeros(,)zeros(,),ones(,)subplot(,,)plot(p(:,),p(:,),'h',p(:,),p(:,),'o')subplot(,,)net=newff(pr,,,{'logsig','logsig'})nettrainParamshow=nettrainParamlr=nettrainParamepochs=nettrainParamgoal=enet=train(net,p,goal)x='y=sim(net,p)y=sim(net,x)例、人口预测以下是从《北京统计年鉴》中得到的年的北京城近郊区户籍人口统计结果作为样本数据建立人工神经网络模型预测、年的北京城近郊区户籍人口例、人口预测以下是从《北京统计年鉴》中得到的年的北京城近郊区户籍人口统计结果作为样本数据建立人工神经网络模型预测、年的北京城近郊区户籍人口北京市人口数统计表:数据处理后的样本数据:样本训练net=newff(minmax(p),,,{'tansig','purelin'},'trainlm')建立网络inputWeights=netIW{,}当前输入层权值和阈值inputbias=netb{}layerWeights=netLW{,}当前网络层权值和阈值layerbias=netb{}网络参数设置netperformFcn='mse'nettrainParamshow=nettrainParamgoal=enettrainParamepochs=nettrainParamlr=nettrainParammc=net=train(net,p,t)训练网络y=sim(net,p)x=:plot(x,y,‘h',x,t,’*’)e=tyholdonplot(x,e)样本检验y=sim(net,p)x=:plot(x,y,'*')holdonplot(x,t,'red')预测样本y=sim(net,py)最终编制的人口数量预测的BP神经网络主程序进行预测检验结果显示、、、、年预测值分别为:。将结果还原即为万人。实际样本值分别为:。检验结果与实际样本的差值的绝对值分别为万人这里取最大的误差万人与实际样本比值为检验结果的误差较小可以达到预测的效果。网络训练成功后预测可得到年北京市人口为万人。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/47

神经网络建模 (2)

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利