bp工具箱利用指南Word格式文档下载.docx
- 文档编号:20526645
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:25
- 大小:94.82KB
bp工具箱利用指南Word格式文档下载.docx
《bp工具箱利用指南Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《bp工具箱利用指南Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
这本书介绍了神经网络的理论和它们的设计和应用,并给出了相当可观的MATLAB和神经网络工具箱的利用。
2.预备工作
大体章节
第一章是神经网络的大体介绍,第二章包括了由工具箱指定的有关网络结构和符号的大体材料和成立神经网络的一些大体函数,例如new、init、adapt和train。
帮忙和安装
神经网络工具箱包括在nnet目录中,键入helpnnet可取得帮忙主题。
工具箱包括了许多例如。
每一个例子讲述了一个问题,展现了用来解决问题的网络并给出了最后的结果。
显示向导要讨论的神经网络例子和应用代码能够通过键入helpnndemos找到。
安装神经网络工具箱的指令能够在以下两份MATLAB文档中找到:
theInstallationGuideforMS-WindowsandMacintosh或theInstallationGuideforUNIX。
第二章神经元模型和网络结构
1.符号
数学符号
下面给出等式和数字顶用到的大体符号:
标量--小写的斜体字.....a,b,c
向量--小写加粗的非斜体字.....a,b,c
矩阵-大写加粗的非斜体字.....A,B,C
向量表示一组数字
数学符号和字符的等价
从数学符号到字符的转换或反过来能够遵循一些规那么,为了便于尔后引用咱们将这些规那么列出。
为了从数学符号变成MATLAB符号用户需要:
变上标为细胞数组标号
例如
变下标为圆括号标号
和
变圆括号标号为二维数组标号
变数学运算符为MATLAB运算符和工具箱函数
2.神经元模型
单神经元
以下图所示为一个单标量输入且无偏置的神经元。
那个输入标量通过乘以权重为标量w的连结点取得结果wp,这仍是一个标量。
那个地址,加权的输入wp仅仅是转移函数f的参数,函数的输入是标量a。
右边的神经元有一个标量偏置b,你既能够以为它仅仅是通过求和节点加在结果wp上,也能够以为它把函数f左移了b个单位,偏置除有一个固定不变的输入值1之外,其他的很像权重。
标量n是加权输入wp和偏置b的和,它作为转移函数f的参数。
函数f是转移函数,它能够为阶跃函数或曲线函数,它接收参数n给出输出a,下一节将给出各类不同的转移函数。
注意神经元中的w和b都是可调整的标量参数。
神经网络的中心思想确实是参数的可调整使得网络展现需要和令人感爱好的行为。
如此,咱们就能够够通过调整权重和偏置参量训练神经网络做必然的工作。
或神经网络自己调整参数以取得想要的结果。
在那个工具箱里所有的神经元都提供偏置,咱们的许多例子中都用到了偏置而且假定它在那个工具箱的大多数情形下都要用到。
可是,若是你情愿的话,你也能够在一个神经元中省略偏置。
正如上面所提到的,在神经元中,标量b是个可调整的参数。
它不是一个输入。
可是驱动偏置的常量1却是一个输入而且当考虑线性输入向量时必然要如此以为。
转移函数
在那个工具箱里包括了许多转移函数。
你能在"
TransferFunctionGraphs"
中找到它们的完全列表。
下面列出了三个最经常使用的函数。
上图所示的阶跃转移函数限制了输出,使得输入参数小于0时输出为0,大于或等于0时输出为1,在第三章中咱们将用它来进行分类。
工具箱中有一个函数hardlim来数学上的阶跃,如上图所示。
咱们能够输入以下代码
n=-5:
:
5;
plot(n,hardlim(n),'
c+:
'
);
它产生一张在-5到5之间的阶跃函数图。
所有在工具箱中的数学转移函数都能够用同名的函数实现。
线性转移函数如以下图所示
这种类型的神经元将在第四章的自适应线性滤波顶用作线性拟合。
以下图显示的曲线转移函数的输入参数是正负区间的任意值,而将输出值限定于0到1之间。
这种传递函数通经常使用于反向传播(BP)网络,这得益于函数的可微性。
在上面所示的每一个转移函数图的右边方框中的符号代表了对应的函数,这些图表将替换网络图的方框中的f来表示所利用的特定的转移函数。
第13章列出了所有的转移函数和图标。
你能够概念自己的传递函数,你能够不限于利用第13章所列的转移函数。
你能够通过运行例如程序nn2n1来实验一个神经元和各类转移函数。
带向量输入的神经元
一个有R个元素输入向量的神经元如以下图所示。
那个地址单个输入元素
乘上权重
取得加权值输入求和节点。
它们的和是Wp,单行矩阵W和向量p的点乘。
那个神经元有一个偏置b,它加在加权的输入上取得网络输入n,和值n是转移函数f的参数。
表达式自然可用MATLAB代码表示为:
n=W*p+b
可是,用户很少要写如此底层的代码,因为这些代码已经被成立到函数中来概念和模拟整个网络。
上面所示的图包括了许多细节。
当咱们考虑有许多神经元和可能是许多神经元组成的多层网络时,咱们可能会漏掉许多细节。
因此,作者设计了一个简练的符号代表单个神经元。
那个符号如以下图中所示,它将会在以后的多重神经元电路顶用到。
那个地址输入向量p用左侧的黑色实心竖条代表,p的维数写在符号p下面,在图中是Rx1。
(注意咱们用的是大写字母,正如在以前句子里R用来表示向量大小时一样。
)因此,p是一个有R个输入元素的向量。
那个输入列向量乘上R列单行矩阵W。
和以前一样,常量1作为一个输入乘上偏置标量b,给转移函数的网络输入是n,它是偏置与乘积Wp的和。
那个和值传给转移函数f取得网络输出a,在那个例子中它是一个标量。
注意若是咱们有超过一个神经元,网络输出就有可能是一个向量。
上面图中概念了神经网络的一层。
一层包括权重的组合,乘法和加法操作(那个地址确实是向量乘积Wp),偏置b和转移函数f。
输入数组,即向量p不包括在一层中。
那个简练的网络符号每一次都会被用到,向量的大小会显示在矩阵变量名字的下面。
咱们希望那个符号会让你明白得神经网络的结构和与之相关的矩阵数学。
正如前面所讨论的,当特定的转移函数在一张图中被利历时,转移函数将用上面所示的符号代替。
下面是几个例子:
你能够通过运行例如程序nnd2n2来实验有2个元素的神经元。
3.网络结构
两个或更多的上面所示的神经元能够组合成一层,一个典型的网络可包括一层或多层。
咱们第一来研究神经元层。
单层神经元网络
有R输入元素和S个神经元组成的单层网络如以下图所示:
在一个单层网络中,输入向量p的每一个元素都通过权重矩阵W和每一个神经元连接起来。
第I个神经元通过把所有加权的输入和偏置加起来取得它自己的标量输出n(i)。
不同的n(i)合起来形成了有S个元素的网络输入向量n。
最后,网络层输出一个列向量a,咱们在图的底部显示了a的表达式。
注意输入元素个数R和神经元个数S一般是不等的,咱们也并非需要这二者相等。
你也能够成立一个简单的复合神经元层,它将上面所示的网络并行的合在一路,利用不同的转移函数。
所有的网络都有相同的输入,而每一个网络都会产生输出。
输入向量元素经加权矩阵W作用输入网络。
W=
注意加权矩阵W的行标标记权重的目的神经元,列标标记待加权的输入标号。
因此,的标号表示从输入信号的第二个元素到第一个神经元的权重是。
有S个神经元和R个输入元素的神经网络也能够简化成以下符号:
那个地址,p是一个有R个元素的输入向量,W是一个SxR的矩阵,a和b是有S个元素的向量。
如前面所概念的,神经元层包括权重矩阵,乘法运算,偏置向量b,求和符和转移函数框。
输入和层
咱们将要讨论多层网络,因此咱们需要拓展咱们的符号来描述如此的网络。
专门是咱们要弄清连接输入的权重矩阵和连接层的权重矩阵之间的区别。
咱们也要分清权重矩阵的目的和源。
咱们将把连接输入的权重矩阵成为输入权重,把来自层输出的权重矩阵称为层矩阵。
进一步说,咱们在各个权重和其他网络元素中将用上标区分源(第二个标号)和目的(第一个标号)。
作为例如,咱们用简化的形式重画了上面所画的单层多输入网络。
你能够看到,咱们把连接输入向量p的权重矩阵标记为输入权重矩阵(IW1,1),第二个标号1是源,第二个标号1是目的。
一样,第一层的元素,比如偏置、网络输入和输出都有上标1来表示它们属于第一层。
在下一章节,咱们将用LW表示层权重矩阵,用IW表示输入权重矩阵。
你能够温习以下这一章开始的符号那一节,它把特定的网络net顶用数学符号表示的层权重矩阵转换成代码,如下所示:
IW1,1net.IW{1,1}
如此,你就能够够写代码来取得对转移函数的网络输入了:
n{1}={1,1}*p+{1}
多层神经元网络
一个网络能够有几层,每一层都有权重矩阵W,偏置向量b和输出向量a。
为了区分这些权重矩阵、输出矩阵等等,在图中的每一层,咱们都为感爱好的变量以上标的形式增加了层数。
你能够看到在下面所示的三层网络图和等式中利用层符号。
上面所示的网络有R1个输入,第一层有S1个神经元,第二层有S2个神经元,以次类推。
一般不同层有不同数量的神经元。
每一个神经元的偏置输入是常量1。
注意中间层的输出就是下一层的输入。
第二层可看作有S1个输入,S2个神经元和S1xS2阶权重矩阵W2的单层网络。
第二层的输入是a1,输出是a2,现在我们已经确定了第二层的所有向量和矩阵,我们就能把它看成一个单层网络了。
其他层也可以照此步骤处理。
多层网络中的层扮演着不同的角色。
给出网络输出的层叫做输出层。
所有其他的层叫做隐层。
上图所示的三层网络有一个输出层(第三层)和两个隐层(第一和第二层)。
有些作者把输入作为第四层,这里不用这种指定。
上面所示的三层网络的简洁画法如下图所示:
多层网络的功能非常强大。
举个例子,一个两层的网络,第一层的转移函数是曲线函数,第二层的转移函数是线性函数,通过训练,它能够很好的模拟任何有有限断点的函数。
这种两层网络集中应用于"
反向传播网络"
。
注意我们把第三层的输出a3标记为y。
我们将使用这种符号来定义这种网络的输出。
4.数据结构
这一节将讨论阻碍网络仿真的输入数据结构的格式。
咱们第一讨论静态网络,在讨论动态网络。
我们将关心两种基本的输入向量类型:
同步(同时或者无时序)向量和异步向量。
对异步向量来说,向量的顺序是非常重要的。
对同步向量来说,顺序是不重要的,并且如果我们已经有一定数量的并行网络我们就能把一个输入向量输入到其中的任意网络。
静态网络中的同步输入仿真
仿真静态网络(没有反馈或延迟)是网络仿真最简单的一种。
在这种情形中,咱们不需要关切向量输入的时刻顺序,因此咱们能够以为它是同时发生的。
另外,为了是问题更简单,咱们假定开始网络仅有一个输入向量。
咱们用下面的网络作为例子。
为了建立这个网络我们可以用以下命令:
net=newlin([-11;
-11],1);
简单起见我们假定权重矩阵和偏置为:
W=[1,2],b=[0]
其命令行是:
{1,1}=[12];
{1}=0;
假定模拟的网络有四个无序向量,即Q=4:
这些同步向量能够用一个矩阵来表示:
P=[1223;
2131];
现在我们就可以模拟这个网络了:
A=sim(net,P)
A=
5485
我们向网络输入一个简单的同步向量矩阵,得到了一个简单的同步向量输出矩阵。
结果不论是由一个网络串行输出还是由四个网络并行输出得到的都是一样的。
由于输入并无关联,输入向量的顺序并不重要。
动态网络中的异步输入仿真
当网络中存在延迟时,顺序发生的输入向量就要按必然的序列输入网络。
为了演示这种情形,咱们用了一个有延迟的简单网络。
net=newlin([-11],1,[01]);
=0;
假定权重矩阵为:
W=[1,2]
命令行为:
{1,1}=[12];
假定输入顺序为:
p
(1)=[1],p
(2)=[2],p(3)=[3],p(4)=[4]
输入序列可以用一个细胞数组来表示:
P={1234};
这样我们就能模拟这个网络了:
[1][4][7][10]
我们输入一个包含输入序列的细胞数组,网络产生一个包含输出序列的细胞数组。
注意异步输入中的输入顺序是很重要的。
在这个例子中,当前输出等于当前输入乘1加上前一个输入乘2。
如果我们改变输入顺序,那么输出结果也回随之改变。
动态网络中的同步输入仿真
若是咱们在上一个例子中把输入作为同步而不是异步应用,咱们就会取得完全不同的响应。
(尽管咱们不清楚什么缘故要在动态网络中利用这种方式。
)这就好象每一个输入都同时加到一个单独的并行网络中。
在前一个例子中,若是咱们用一组同步输入,咱们有:
p1=[1],p2=[2],p3=[3],p4=[4]
这可用下列代码创建:
P=[1234];
模拟这个网络,我们得到:
1234
这个结果和我们同时把每一个输入应用到单独的网络中并计算单独的输出没什么两样。
注意如果我们没有初始化延迟时间,那么缺省值就是0。
在这个例子中,由于当前输入的权重是1,输出就是输入乘1。
在某些特定的情况下,我们可能想要在同一时间模拟一些不同序列的网络响应。
这种情况我们就要给网络输入一组同步序列。
比如说,我们要把下面两个序列输入网络:
p
(1)=[4],p
(2)=[3],p(3)=[2],p(4)=[1]
输入P应该是一个细胞数组,每一个数组元素都包含了两个同时发生的序列的元素。
P={[14][23][32][41]};
A=sim(net,P);
网络输出结果将是:
A={[14][411][78][105]}
你可以看到,每个矩阵的第一列是由第一组输入序列产生的输出序列,每个矩阵的第二列是由第二组输入序列产生的输出序列。
这两组序列之间没有关联,好象他们是同时应用在单个的并行网络上的。
下面的图表显示了当我们有Q个TS长度的序列时,在函数sim中输入P的一般格式。
它函盖了单输入向量的所有的情况。
每一个细胞数组的元素都是一个同步向量矩阵,它对应于每一个序列的同一时间点。
如果有多输入向量,那么在细胞数组中的矩阵里就有多行。
这一节我们我们把同步和异步输入应用到了动态网络中。
在以前的章节中我们把同步输入应用到了静态网络中。
我们也能把异步序列应用到静态网络中。
这不会改变网络的输出响应,但是这会影响训练过的网络的形式。
在下一节你会更清楚的了解这一点。
5.训练方式
在这一节中,咱们将描述两种不同的训练方式。
在增加方式中,每提交一次输入数据,网络权重和偏置都更新一次。
在批处置方式中,仅仅当所有的输入数据都被提交以后,网络权重和偏置才被更新。
增加方式(应用与自适应网络和其他网络)
尽管增加方式更普遍的应用于动态网络,比如自适应滤波,可是在静态和动态网络中都能够应用它。
在这一节中我们将示范怎样把增加方式应用到这两种网络中去。
静态网络中的增加方式
继续考虑前面用过的第一个静态网络的例子,咱们用增加方式来训练它,如此每提交一次输入数据,网络权重和偏置都更新一次。
在那个例子里咱们用函数adapt,并给出输入和目标序列:
假定我们要训练网络建立以下线性函数:
t=2p1+p2
我们以前用的输入是:
目标输出是:
t1=[4],t2=[5],t3=[7],t4=[7]
我们首先用0初始化权重和偏置。
为了显示增加方式的效果,我们把学习速度也设为0。
-11],1,0,0);
{1,1}=[00];
{1}=0;
为了用增加方式,我们把输入和目标输出表示为以下序列:
P={[1;
2][2;
1][2;
3][3;
1]};
T={4577};
前面的讨论中,不论是作为一个同步向量矩阵输入还是作为一个异步向量细胞数组输入,模拟的输出值是一样的。
而在训练网络时,这是不对的。
当我们使用adapt函数时,如果输入是异步向量细胞数组,那么权重将在每一组输入提交的时候更新(就是增加方式),我们将在下一节看到,如果输入是同步向量矩阵,那么权重将只在所有输入提交的时候更新(就是批处理方式)。
我们现在开始用增加方式训练网络:
[net,a,e,pf]=adapt(net,P,T);
由于学习速度为0,网络输出仍然为0,并且权重没有被更新。
错误和目标输出相等。
a=[0][0][0][0]
e=[4][5][7][7]
如果我们设置学习速度为,我们就能够看到当每一组输入提交时,网络是怎么调整的了。
{1,1}.=;
a=[0][2][][]
e=[4][3][][]
由于在第一个输入数据提交前还没有更新,第一个输出和学习速率为0时一样。
由于权重已更新,第二个输出就不一样了。
每计算一次错误,权重都不断的修改。
如果网络可行并且学习速率设置得当,错误将不断的趋向于0。
动态网络中的增加方式
咱们一样也能用增加方式训练动态网络。
事实上,这是最普遍的情形。
让咱们用前面用过的那个有输入延迟的线性网络作为例子,咱们将初始化权重为0,并把学习速度设为。
net=newlin([-11],1,[01],;
为了用增加方式,我们把输入和目标输出表示为细胞数组的元素:
Pi={1};
P={234};
T={357};
这里我们尝试训练网络把当前输入和前一次输入加起来作为当前输出。
输入序列和我们以前使用sim的例子中用过的一样,除了我们指定了输入序列的第一组作为延迟的初始状态。
现在我们可以用adapt来训练网络了:
[net,a,e,pf]=adapt(net,P,T,Pi);
a=[0][][]
e=[3][][]
由于权重没有更新,第一个输出是0。
每一个序列步进,权重都改变一次。
批处置方式
在批处置方式中,仅仅当所有的输入数据都被提交以后,网络权重和偏置才被更新,它也能够应用于静态和动态网络。
咱们将在这一节讨论这两种类型。
静态网络中的批处置方式
批处置方式能够用adapt或train函数来实现,尽管由于由于采纳了更高效的学习算法,train一般是最好的选择。
增加方式只能用adapt来实现,train函数只能用于批处置方式。
让咱们用前面用过的静态网络的例子开始,学习速度设置为。
-11],1,0,;
用adapt函数实现静态网络的批处置方式,输入向量必需用同步向量矩阵的方式放置:
T=[4577];
当咱们挪用adapt时将触发adaptwb函数,这是缺省的线性网络调整函数。
learnwh是缺省的权重和偏置学习函数。
因此,Widrow-Hoff学习法将会被利用:
a=0000
e=4577
注意网络的输出全数为0,因为在所有要训练的数据提交前权重没有被更新,若是咱们显示权重,咱们就会发觉:
>
>
{1,1}
ans=
{1}
ans=
通过了用adapt函数的批处置方式调整,这就和原先不一样了。
此刻用train函数来实现批处置方式。
由于Wi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- bp 工具箱 利用 指南