不错的Matlab神经网络工具箱实用指南.doc

上传人:hw****26 文档编号:3220772 上传时间:2019-05-26 格式:DOC 页数:20 大小:152KB
下载 相关 举报
不错的Matlab神经网络工具箱实用指南.doc_第1页
第1页 / 共20页
不错的Matlab神经网络工具箱实用指南.doc_第2页
第2页 / 共20页
不错的Matlab神经网络工具箱实用指南.doc_第3页
第3页 / 共20页
不错的Matlab神经网络工具箱实用指南.doc_第4页
第4页 / 共20页
不错的Matlab神经网络工具箱实用指南.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、Matlab 的神经网络工具箱实用指南 文章摘要:第一章是神经网络的基本介绍,第二章包括了由工具箱指定的有关网络结构和符号的基本材料以及建立神经网络的一些基本函数,例如 new、init 、adapt 和 train。第三章以反向传播网络为例讲解了反向传播网络的原理和应用的基本过程。第一章 介绍1神经网络神经网络是单个并行处理元素的集合,我们从生物学神经系统得到启发。在自然界,网络功能主要由神经节决定,我们可以通过改变连接点的权重来训练神经网络完成特定的功能。一般的神经网络都是可调节的,或者说可训练的,这样一个特定的输入便可得到要求的输出。如下图所示。这里,网络根据输出和目标的比较而调整,直到

2、网络输出和目标匹配。作为典型,许多输入/目标对应的方法已被用在有监督模式中来训练神经网络。神经网络已经在各个领域中应用,以实现各种复杂的功能。这些领域包括:模式识别、鉴定、分类、语音、翻译和控制系统。如今神经网络能够用来解决常规计算机和人难以解决的问题。我们主要通过这个工具箱来建立示范的神经网络系统,并应用到工程、金融和其他实际项目中去。一般普遍使用有监督训练方法,但是也能够通过无监督的训练方法或者直接设计得到其他的神经网络。无监督网络可以被应用在数据组的辨别上。一些线形网络和 Hopfield 网络是直接设计的。总的来说,有各种各样的设计和学习方法来增强用户的选择。神经网络领域已经有 50

3、年的历史了,但是实际的应用却是在最近 15 年里,如今神经网络仍快速发展着。因此,它显然不同与控制系统和最优化系统领域,它们的术语、数学理论和设计过程都已牢固的建立和应用了好多年。我们没有把神经网络工具箱仅看作一个能正常运行的建好的处理轮廓。我们宁愿希望它能成为一个有用的工业、教育和研究工具,一个能够帮助用户找到什么能够做什么不能做的工具,一个能够帮助发展和拓宽神经网络领域的工具。因为这个领域和它的材料是如此新,这个工具箱将给我们解释处理过程,讲述怎样运用它们,并且举例说明它们的成功和失败。我们相信要成功和满意的使用这个工具箱,对范例和它们的应用的理解是很重要的,并且如果没有这些说明那么用户的

4、埋怨和质询就会把我们淹没。所以如果我们包括了大量的说明性材料,请保持耐心。我们希望这些材料能对你有帮助。这个章节在开始使用神经网络工具箱时包括了一些注释,它也描述了新的图形用户接口和新的运算法则和体系结构,并且它解释了工具箱为了使用模块化网络对象描述而增强的机动性。最后这一章给出了一个神经网络实际应用的列表并增加了一个新的文本-神经网络设计。这本书介绍了神经网络的理论和它们的设计和应用,并给出了相当可观的MATLAB 和神经网络工具箱的使用。2准备工作基本章节第一章是神经网络的基本介绍,第二章包括了由工具箱指定的有关网络结构和符号的基本材料以及建立神经网络的一些基本函数,例如 new、 ini

5、t、adapt 和 train。第三章以反向传播网络为例讲解了反向传播网络的原理和应用的基本过程。帮助和安装神经网络工具箱包含在 nnet 目录中,键入 help nnet 可得到帮助主题。工具箱包含了许多示例。每一个例子讲述了一个问题,展示了用来解决问题的网络并给出了最后的结果。显示向导要讨论的神经网络例子和应用代码可以通过键入 help nndemos 找到。安装神经网络工具箱的指令可以在下列两份 MATLAB 文档中找到:the Installation Guide for MS-Windows and Macintosh 或者 the Installation Guide for UN

6、IX。第二章 神经元模型和网络结构1符号数学符号下面给出等式和数字中用到的基本符号:标量-小写的斜体字.a,b,c向量-小写加粗的非斜体字.a,b,c矩阵 - 大写加粗的非斜体字 .A,B,C向量表示一组数字数学符号和字符的等价从数学符号到字符的转换或者反过来可以遵循一些规则,为了便于今后引用我们将这些规则列出。为了从数学符号变为 MATLAB 符号用户需要:变上标为细胞数组标号例如 变下标为圆括号标号例如 和 变圆括号标号为二维数组标号例如 变数学运算符为 MATLAB 运算符和工具箱函数例如 2神经元模型单神经元下图所示为一个单标量输入且无偏置的神经元。这个输入标量通过乘以权重为标量 w

7、的连结点得到结果 wp,这仍是一个标量。这里,加权的输入 wp 仅仅是转移函数 f 的参数,函数的输入是标量 a。右边的神经元有一个标量偏置 b,你既可以认为它仅仅是通过求和节点加在结果 wp 上,也可以认为它把函数 f 左移了b 个单位,偏置除了有一个固定不变的输入值 1 以外,其他的很像权重。标量 n 是加权输入 wp 和偏置 b 的和,它作为转移函数 f 的参数。函数 f 是转移函数,它可以为阶跃函数或者曲线函数,它接收参数 n 给出输出 a,下一节将给出各种不同的转移函数。注意神经元中的 w 和 b 都是可调整的标量参数。神经网络的中心思想就是参数的可调整使得网络展示需要和令人感兴趣的

8、行为。这样,我们就可以通过调整权重和偏置参量训练神经网络做一定的工作。或者神经网络自己调整参数以得到想要的结果。在这个工具箱里所有的神经元都提供偏置,我们的许多例子中都用到了偏置并且假定它在这个工具箱的大多数情况下都要用到。可是,如果你愿意的话,你也可以在一个神经元中省略偏置。正如上面所提到的,在神经元中,标量 b 是个可调整的参数。它不是一个输入。可是驱动偏置的常量 1 却是一个输入而且当考虑线性输入向量时一定要这样认为。转移函数在这个工具箱里包括了许多转移函数。你能在“Transfer Function Graphs“中找到它们的完全列表。下面列出了三个最常用的函数。上图所示的阶跃转移函数

9、限制了输出,使得输入参数小于 0 时输出为 0,大于或等于0 时输出为 1,在第三章中我们将用它来进行分类。工具箱中有一个函数 hardlim 来数学上的阶跃,如上图所示。我们可以输入以下代码n = -5:0.1:5;plot(n,hardlim(n),c+:);它产生一张在-5 到 5 之间的阶跃函数图。所有在工具箱中的数学转移函数都能够用同名的函数实现。线性转移函数如下图所示这种类型的神经元将在第四章的自适应线性滤波中用作线性拟合。下图显示的曲线转移函数的输入参数是正负区间的任意值,而将输出值限定于 0 到 1之间。这种传递函数通常用于反向传播(BP)网络,这得益于函数的可微性。在上面所示

10、的每一个转移函数图的右边方框中的符号代表了对应的函数,这些图表将替换网络图的方框中的 f 来表示所使用的特定的转移函数。第 13 章列出了所有的转移函数和图标。你能够定义自己的传递函数,你可以不限于使用第 13 章所列的转移函数。你能够通过运行示例程序 nn2n1 来试验一个神经元和各种转移函数。带向量输入的神经元一个有 R 个元素输入向量的神经元如下图所示。这里单个输入元素乘上权重得到加权值输入求和节点。它们的和是 Wp,单行矩阵 W 和向量 p 的点乘。这个神经元有一个偏置 b,它加在加权的输入上得到网络输入 n,和值 n 是转移函数 f的参数。表达式自然可用 MATLAB 代码表示为:

11、n =W*p + b可是,用户很少要写如此底层的代码,因为这些代码已经被建立到函数中来定义和模拟整个网络。上面所示的图包括了许多细节。当我们考虑有许多神经元和可能是许多神经元组成的多层网络时,我们可能会漏掉许多细节。因此,作者设计了一个简洁的符号代表单个神经元。这个符号如下图中所示,它将会在以后的多重神经元电路中用到。这里输入向量 p 用左边的黑色实心竖条代表,p 的维数写在符号 p 下面,在图中是Rx1。 (注意我们用的是大写字母,正如在以前句子里 R 用来表示向量大小时一样。 )因此,p 是一个有 R 个输入元素的向量。这个输入列向量乘上 R 列单行矩阵 W。和以前一样,常量 1 作为一个

12、输入乘上偏置标量 b,给转移函数的网络输入是 n,它是偏置与乘积 Wp 的和。这个和值传给转移函数 f 得到网络输出 a,在这个例子中它是一个标量。注意如果我们有超过一个神经元,网络输出就有可能是一个向量。上面图中定义了神经网络的一层。一层包括权重的组合,乘法和加法操作(这里就是向量乘积 Wp) ,偏置 b 和转移函数 f。输入数组,即向量 p 不包括在一层中。这个简洁的网络符号每一次都会被用到,向量的大小会显示在矩阵变量名字的下面。我们希望这个符号会让你理解神经网络的结构以及与之相关的矩阵数学。正如前面所讨论的,当特定的转移函数在一张图中被使用时,转移函数将用上面所示的符号代替。下面是几个例

13、子:你可以通过运行示例程序 nnd2n2 来试验有 2 个元素的神经元。3网络结构两个或更多的上面所示的神经元可以组合成一层,一个典型的网络可包括一层或者多层。我们首先来研究神经元层。单层神经元网络有 R 输入元素和 S 个神经元组成的单层网络如下图所示:在一个单层网络中,输入向量 p 的每一个元素都通过权重矩阵 W 和每一个神经元连接起来。第 I 个神经元通过把所有加权的输入和偏置加起来得到它自己的标量输出 n(i)。不同的 n(i)合起来形成了有 S 个元素的网络输入向量 n。最后,网络层输出一个列向量 a,我们在图的底部显示了 a 的表达式。注意输入元素个数 R 和神经元个数 S 通常是

14、不等的,我们也并不需要这两者相等。你也可以建立一个简单的复合神经元层,它将上面所示的网络并行的合在一起,使用不同的转移函数。所有的网络都有相同的输入,而每一个网络都会产生输出。输入向量元素经加权矩阵 W 作用输入网络。W= 注意加权矩阵 W 的行标标记权重的目的神经元,列标标记待加权的输入标号。因此, 的标号表示从输入信号的第二个元素到第一个神经元的权重是 。有 S 个神经元和 R 个输入元素的神经网络也能够简化成以下符号:这里,p 是一个有 R 个元素的输入向量, W 是一个 SxR 的矩阵, a 和 b 是有 S 个元素的向量。如前面所定义的,神经元层包括权重矩阵,乘法运算,偏置向量 b,

15、求和符和转移函数框。输入和层我们将要讨论多层网络,所以我们需要拓展我们的符号来描述这样的网络。特别是我们要弄清连接输入的权重矩阵和连接层的权重矩阵之间的区别。我们也要分清权重矩阵的目的和源。我们将把连接输入的权重矩阵成为输入权重,把来自层输出的权重矩阵称为层矩阵。进一步说,我们在各个权重和其他网络元素中将用上标区分源(第二个标号)和目的(第一个标号) 。作为示例,我们用简化的形式重画了上面所画的单层多输入网络。你可以看到,我们把连接输入向量 p 的权重矩阵标记为输入权重矩阵(IW1,1),第二个标号 1 是源,第二个标号 1 是目的。同样,第一层的元素,比如偏置、网络输入和输出都有上标 1 来

16、表示它们属于第一层。在下一章节,我们将用 LW 表示层权重矩阵,用 IW 表示输入权重矩阵。你可以复习以下这一章开始的符号那一节,它把特定的网络 net 中用数学符号表示的层权重矩阵转换成代码,如下所示:IW1,1 net. IW1,1这样,你就可以写代码来得到对转移函数的网络输入了:n1=net.IW1,1*p+net.b1多层神经元网络一个网络可以有几层,每一层都有权重矩阵 W,偏置向量 b 和输出向量 a。为了区分这些权重矩阵、输出矩阵等等,在图中的每一层,我们都为感兴趣的变量以上标的形式增加了层数。你能够看到在下面所示的三层网络图和等式中使用层符号。上面所示的网络有 R1 个输入,第一

17、层有 S1 个神经元,第二层有 S2 个神经元,以次类推。一般不同层有不同数量的神经元。每一个神经元的偏置输入是常量 1。注意中间层的输出就是下一层的输入。第二层可看作有 S1 个输入,S2 个神经元和S1xS2 阶权重矩阵 W2 的单层网络。第二层的输入是 a1,输出是 a2,现在我们已经确定了第二层的所有向量和矩阵,我们就能把它看成一个单层网络了。其他层也可以照此步骤处理。多层网络中的层扮演着不同的角色。给出网络输出的层叫做输出层。所有其他的层叫做隐层。上图所示的三层网络有一个输出层(第三层)和两个隐层(第一和第二层) 。有些作者把输入作为第四层,这里不用这种指定。上面所示的三层网络的简洁

18、画法如下图所示:多层网络的功能非常强大。举个例子,一个两层的网络,第一层的转移函数是曲线函数,第二层的转移函数是线性函数,通过训练,它能够很好的模拟任何有有限断点的函数。这种两层网络集中应用于“反向传播网络 “。注意我们把第三层的输出 a3 标记为 y。我们将使用这种符号来定义这种网络的输出。4数据结构这一节将讨论影响网络仿真的输入数据结构的格式。我们首先讨论静态网络,在讨论动态网络。我们将关心两种基本的输入向量类型:同步(同时或者无时序)向量和异步向量。对异步向量来说,向量的顺序是非常重要的。对同步向量来说,顺序是不重要的,并且如果我们已经有一定数量的并行网络我们就能把一个输入向量输入到其中

19、的任意网络。静态网络中的同步输入仿真仿真静态网络(没有反馈或者延迟)是网络仿真最简单的一种。在这种情况中,我们不需要关心向量输入的时间顺序,所以我们可以认为它是同时发生的。另外,为了是问题更简单,我们假定开始网络仅有一个输入向量。我们用下面的网络作为例子。为了建立这个网络我们可以用以下命令:net = newlin(-1 1;-1 1,1);简单起见我们假定权重矩阵和偏置为W=1,2,b=0其命令行是:net.IW1,1 = 1 2;net.b1 = 0;假定模拟的网络有四个无序向量,即 Q=4:这些同步向量可以用一个矩阵来表示:P = 1 2 2 3; 2 1 3 1;现在我们就可以模拟这个

20、网络了:A = sim(net,P)A =5 4 8 5我们向网络输入一个简单的同步向量矩阵,得到了一个简单的同步向量输出矩阵。结果不论是由一个网络串行输出还是由四个网络并行输出得到的都是一样的。由于输入并无关联,输入向量的顺序并不重要。动态网络中的异步输入仿真当网络中存在延迟时,顺序发生的输入向量就要按一定的序列输入网络。为了演示这种情况,我们用了一个有延迟的简单网络。为了建立这个网络我们可以用以下命令:net = newlin(-1 1,1,0 1);net.biasConnect = 0;假定权重矩阵为:W=1,2命令行为:net.IW1,1 = 1 2;假定输入顺序为:p(1)=1,

21、p (2)=2,p(3)=3, p(4)=4输入序列可以用一个细胞数组来表示:P = 1 2 3 4;这样我们就能模拟这个网络了:A = sim(net,P)A =1 4 7 10我们输入一个包含输入序列的细胞数组,网络产生一个包含输出序列的细胞数组。注意异步输入中的输入顺序是很重要的。在这个例子中,当前输出等于当前输入乘 1 加上前一个输入乘 2。如果我们改变输入顺序,那么输出结果也回随之改变。 动态网络中的同步输入仿真如果我们在上一个例子中把输入作为同步而不是异步应用,我们就会得到完全不同的响应。 (虽然我们不清楚为什么要在动态网络中使用这种方式。 )这就好象每一个输入都同时加到一个单独的并行网络中。在前一个例子中,如果我们用一组同步输入,我们有:p1=1, p2=2,p 3=3, p4=4这可用下列代码创建:P =1 2 3 4;模拟这个网络,我们得到:A = sim(net,P)A =1 2 3 4这个结果和我们同时把每一个输入应用到单独的网络中并计算单独的输出没什么两样。注意如果我们没有初始化延迟时间,那么缺省值就是 0。在这个例子中,由于当前输入的权重是 1,输出就是输入乘 1。在某些特定的情况下,我们可能想要在同一时间模拟一些不同序列的网络响应。这种情况我们就要给网络输入一组同步序列。比如说,我们要把下面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。