4线性神经网络_第1页
4线性神经网络_第2页
4线性神经网络_第3页
4线性神经网络_第4页
4线性神经网络_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章线性神经网络分析与应用4.1线性神经网络与感知器的区别线性神经网络与感知器的区别在于:线性神经网络的神经元传递函数是线性函数,因此线性神经网络的输出可以取任意值,而感知器的输出只可能是0或者1。线性神经网络在收敛速度与精度上都比感知器要高,但是同感知器一样,线性神经网络只能解决线性分离问题。感知器的每一个输入都有一个输出与之相对应。参照输出向量与期望输出向量的差别,调整网络的权值跟阈值,使得训练误差的平方和最小或者小于一定值,这种学习规则就是Widrow-Hoff学习规则,称为LMS(LeastMeanSquare)算法。4.2线性神经网络原理这里介绍的单层线性神经网络结构,它和多层线性神经网络一样有用。因为对于每一个多层线性神经网络而言,都可以设计出一个性能相当的单层线性神经网络。【例4-1】使用linearlayer创建该网络,并使用两个值配置其维度,以便输入有两个元素,输出有一个。>>net=linearlayer;net=configure(net,[0;0],0);%默认情况下,网络权重和阈值设置为零。可以使用命令查看当前值>>W=net.IW{1,1}%权重W=00>>b=net.b{1}%阈值b=0执行以上结果得到一个初始化后的线性网络,其权重和阈值均为0。对上述网络在给定的输入和目标下进行训练,得到相应的权值和阈值。4.2.3线性滤波器【例4-2】假设输入向量P,期望输出向量T,以及初始输入延迟P1。>>clearall%清除前面所有的变量P={121332};P1={13};T={5642078};%应用newlind函数构造一个网络以满足上面的输入/输出关系和延迟条件net=newlind(P,T,P1);Y=sim(net,P,P1)%验证网络的输出运行程序,输出如下:Y=1×6cell数组{[2.7297]}{[10.5405]}{[5.0090]}{[14.9550]}{[10.7838]}{[5.9820]}4.2.4自适应线性滤波自适应性元件的网络训练过程可以归纳为三个步骤:(1)表达。计算训练的输出矢量,以及与期望输出之间的误差。(2)检查。将网络的输出误差的平方和与期望误差相比较,如果其值小于期望误差,或者训练已经达到事先设定的最大训练次数,则停止训练,否则继续。(3)学习。采用W-H学习规则计算新的权值和阈值,并返回第一步。每进行一次上述三个步骤,就认为是完成一个训练循环次数。如果经过训练,网络仍然不能达到期望目标,可以有两种选择:一是检测一下所要解决的问题,是否适用于线性网络;二是对网络进行进一步的训练。虽然只适用于线性网络,W-H学习规则仍然是重要的,因为它展现了梯度下降法是如何训练一个网络。【例4-3】考虑一个较大的神经元网络的模式联想的设计问题。输入矢量和目标矢量分别是:P=[11.51.2-0.3;-123-0.5;21-1.60.9];T=[0.53-2.21.4;1.1-1.21.7-0.4;30.2-1.8-0.4;-10.4-1.00.6];这个问题可以通过线性方程组的方式求出唯一的解,这是比较复杂,此时就可以通过自适应线性网络的方式得出有一定误差的解。>>clearall;P=[11.51.2-0.3;-123-0.5;21-1.60.9];......4.3线性神经网络函数神经网络工具箱中,为线性网络提供了用于网络设计、创建、分析、训练和仿真的函数,下面进行介绍。1.newlind函数函数返回设计好的线性神经网络net,设计的方法是求一个线性方程组在最小均方误差意义下的最优解;而且值得注意的是:newlind函数一旦调用,就不需要用别的函数重新训练了,可以直接进行仿真测试。函数的语法格式为:net=newlind(P,T,PI):参数P为训练样本;T为期望输出向量;PI为初始输入延迟。【例4-4】利用newlind创建线性神经网络,用线性去逼近任意非线性函数,当输入与输出是非线性关系时,线性神经网络可以通过对网络的训练,得出线性逼近关系。>>clearall;x=-5:5;y=3*x-7;%这是期望直线;randn('state',2);y1=y+randn(1,length(y))*1.5;%加入噪音的直线,制造一种非线性的情况plot(x,y,'-');%把期望直线画出plot(x,y1,'o-');%把实际直线画出,可以看到是曲折的直线P=x;T=y1;%设置好输入向量,与输出期望......【例4-5】利用newlin创建线性神经网络,用线性去逼近任意非线性函数,当输入与输出是非线性关系时,线性神经网络可以通过对网络的训练,得出线性逼近关系。>>clearall;x=-5:5;y=2*x-5;randn('state',2);y1=y+randn(1,length(y))*1.5;%加入噪音的直线,制造一种非线性的情况plot(x,y1,'o-');%把实际直线画出,可以看到是曲折的直线P=x;T=y1;net=newlin(P,1,[0],maxlinlr(P));%用newlin创建一个还没训练的线性网络;x1=-2:2;A=sim(net,x1);holdon;plot(x1,A,'-');%发现是一条y=0的直线,也就是说明,此时的没训练的系统,权值为0,阈值为0。C=net.iw%求出训练后的权值D=net.b%求出阈值net1=train(net,P,T);%训练线性网络,过程如图4-10所示purelin函数在神经网络中,purelin函数实现线性网络的传输。函数的语法格式为:A=purelin(N,FP):N为S×Q维的的网络输入(列)向量矩阵,FP为性能参数(可忽略),返回网络输入向量N的输出矩阵A。【例4-6】purelin函数用法演示。>>x=-5:5;>>y=purelin(x)y=-5-4-3-2-1012345>>y=3*purelin(x)-6y=-21-18-15-12-9-6-30369>>y=purelin(5*x)y=-25-20-15-10-50510152025通过这个函数,我们对线性网络的理解会更加深刻,也可以看出这个函数的作用是Y=v(x),v(x)=w*x+b

learnwh函数learnwh是LMS算法的学习函数,它可以修改神经元的权值和阈值,只要学习率不超出用maxlinlr函数计算的最大值,网络就可以收敛。函数的语法格式为:[dw,LS]=learnwh(W,P,Z,N,A,T,E,gW,gA,D,LP,LS):参数W为权值矩阵;P为输入向量矩阵;Z为权值输入向量;N为网络输入向量;A为输出向量;T为期望输出向量;E为隐含层中的误差的向量;gW为权重梯度;gA为输出梯度;D为神经元距离;LP为学习参数;Ls为学习状态,初始值为空矩阵。【例4-7】给出一个具有2个输入、3个神经元的神经网络,对其定义一个随机输入P和误差E,给出其学习率为0.5,计算其权值变化矩阵。>>%随机产生输入向量和误差向量>>p=rand(2,1);e=rand(3,1);8>>%根据上述输入和误差向量,计算权值变化矩阵>>lp.lr=0.5;dW=learnwh([],p,[],[],[],[],e,[],[],[],lp,[])dW=0.05170.05750.37210.41370.25760.2864通过调用learnwh函数,可以产生出一个标准的线性网络。按照LMS算法学习准则,learnwh函数从一个给定的神经元的输入P、误差E、权值或阈值的学习率lr中,可以得到该神经元的权值变化。dw=lr*e*pn'

maxlinlr函数的语法为:lr=maxlinlr(P):输入参数P为R×Q维矩阵,对不带阈值的线性层得到一个所需要的最大学习率lr。lr=maxlinlr(P,'bias'):针对带有阈值的线性层得到一个所需要的最大学习率。【例4-8】计算给定的3组三维输入向量的最大学习率。>>P=[12-47;0.13106];>>lr=maxlinlr(x)lr=0.0091>>lr=maxlinlr(x,0.3)lr=0.0091>>lr=maxlinlr(x,7)lr=0.0091从结果可以看出无论偏置为多少,此时最大的学习率都是一样的。

linearlayer函数在R2014b版本以后,提供了linearlayer函数代替newlin函数创建线性神经网络,函数的语法格式为:net=linearlayer(inputDelays,widrowhoffLR):参数intputdelay为输入延迟的值;widrowhoffLR为学习率。返回值net是创建好的线性层,还要进行训练才具有分类、拟合、识别的能力。【例4-9】利用linearlayer创建线性神经网络,用线性去逼近任意非线性函数,当输入与输出是非线性关系时,线性神经网络可以通过对网络的训练,得出线性逼近关系。>>x=-5:5;y=2*x-5;randn('state',2);y1=y+randn(1,length(y))*1.5;%加入噪音的直线,制造一种非线性的情况plot(x,y1,'o-');%把实际直线画出,可以看到是曲折的直线P=x;T=y1;lr=maxlinlr(P,'bias')net=linearlayer(0,lr);net1=train(net,P,T);%训练线性网络,效果如图4-12所示

mse函数mse函数是线性神经网络的性能函数,以均方误差来评价网络的精确程度。函数的语法式为:perf=mse(net,t,y,ew):输入参数net为网络;t为目标矩阵或单元阵列;y为输出矩阵或单元数组;ew为错误的权重(可选);输出参数perf平均绝对误差。【例4-10】计算一个矩阵的均方误差。>>clearall;>>randn('seed',2);%设定随机种子>>a=randn(3,4)%3×4矩阵a=0.2820-0.71231.12191.8966-0.8983-1.17571.06441.24721.14280.14151.50761.0075>>mse(a)%计算均方误差ans=1.2445>>b=a(:);%把矩阵a整理成向量>>sum(b.^2)/length(b)%手工计算均方误差ans=1.2445>>mse(b)%对向量b计算均方误差ans=1.2445plotes函数在神经网络中,plotes函数用于绘制一个单独神经元的误差曲面。函数的语法格式为:plotes(WV,BV,ES,V):参数WV为N维的权值行向量;BV为M维的阈值行向量;ES为误差向量组成的M×N维的矩阵;V为视角,默认值为[-37.5,30]。plotes函数绘制的误差曲线图是由权值和阈值确定的,由errsurf函数计算得到。【例4-11】根据输入样本及目标数据,绘制其误差曲面及轮廓线。>>clearall;p=[324]; %输入样本t=[0.40.81]; %目标数据wv=-4:0.4:4; %权值bv=wv; %阈值ES=errsurf(p,t,wv,bv,'logsig'); %计算误差曲面plotes(wv,bv,ES,[6030]); %绘制误差曲面运行程序,效果如图4-13所示。

图4-13误差曲面4.4线性神经网络的实现【例4-12】说明如何设计线性神经元来预测给定最后5个值的时间序列中的下一个值。(1)定义波形>>time=0:0.025:5;%时间定义为0到5秒,步长为1/40秒>>%定义关于时间的信号signal=sin(time*4*pi);plot(time,signal)%效果如图4-15所示xlabel('时间');ylabel('信号');title('信号预测');

图4-15需要预测的信号

【例4-13】利用线性神经网络解决逻辑与问题。由于方程的个数超过了自变量的个数,因此方程没有精确解,只有近似解,用伪逆法可以求得权值向量的值。>>clearall;%%定义变量P=[0,0,1,1;0,1,0,1] %输入向量d=[0,0,0,1] %期望输出向量lr=maxlinlr(P,'bias') %根据输入矩阵求解最大学习率%%线性网络实现net1=linearlayer(0,lr); %创建线性网络net1=train(net1,P,d); %线性网络训练%%显示disp('线性网络输出')%命令行输出Y1=sim(net1,P)disp('线性网络二值输出');YY1=Y1>=0.5disp('线性网络最终权值:')w1=[net1.iw{1,1},net1.b{1,1}]plot([0,0,1],[0,1,0],'o');%图形窗口输出holdon;......

【例4-14】用一种简单的方式解决线性不可分的问题。>>%%定义变量P1=[0,0,1,1;0,1,0,1];%4点坐标p2=P1(1,:).^2;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论