资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,MATLAB,神经网络工具箱,神经元模型,Neuron Model,:多输入,单输出,带偏置,输入,:R,维列向量,权值,:R,维行向量,阀值,:,标量,求和单元,传递函数,输出,常用传递函数,a,W,p,-b,1,-1,阈值函数,MATLAB,函数,:,hardlim,MATLAB,函数,:,hardlims,线性函数,Purelin Transfer Function,:,a,n,MATLAB,函数,:,purelin,Sigmoid,函数,Sigmoid Function,:,特性:,值域,a(0,1),非线性,单调性,无限次可微,|n|,较小时可近似线性函数,|n|,较大时可近似阈值函数,MATLAB,函数,:,logsig,(,对数,),tansig,(,正切,),对数,Sigmoid,函数,正切,Sigmoid,函数,单层神经网络模型,R,维输入,S,个神经元的单层神经网络模型,多层神经网络模型,前馈神经网络,前馈神经网络,(,feed forward NN,),:各神经元接受前级输入,并输出到下一级,无反馈,可用一有向无环图表示。,前馈网络通常分为不同的层,(,layer,),,第,i,层的输入只与第,i,-1,层的输出联结。,可见层:输入层,(,input layer,),和输出层,(,output layer,),隐藏层,(,hidden layer,),:中间层,感知器,感知器,(,perceptron,):,单层网络,传递函数为阀值函数,主要功能是模式分类,感知器的生成,函数,newp,用来生成一个感知器神经网络,net=,newp,(pr,s,tf,lf),net:,函数返回参数,表示生成的感知器网络,pr:,一个,R2,矩阵,由,R,维输入向量的每维最小值和最,大值组成,s:,神经元的个数,tf,:,感知器的传递函数,默认为,hardlim,可选,hardlims,lf:,感知器的学习函数,默认为,learnp,可选,learnpn,net=newp(-2,+2;-2,+2,2)%,生成一个二维输入,两个神经元的感知器,感知器的权值和阀值初始化,newp,默认权值和阀值为零,(,零初始化函数,initzero,).,net=newp(-2,+2;-2,+2,2);,W=net.IW1,1%,显示网络的权值,b=net.b1%,显示网络的阀值,W=,0 0,0 0,b=,0,0,改变默认初始化函数为随机函数,rands,net.inputweights1,1.InitFcn=,rands,;,net.biases1.InitFcn=,rands,;,net=,init(net,);%,重新初始化,直接初始化定义权值和阀值,net.IW1,1=1 2;net.b1=1,感知器学习,感知器学习算法,权值增量,:,阀值增量,:,权值更新,:,阀值更新,:,算法改进,输入样本归一化,权值和阀值训练与学习函数,train,net=,train(net,P,T),设计好的感知器并不能马上投入使用,.,通过样本训练,确定感知器的权值和阀值,.,输入向量,目标向量,被训练网络,net.tranParam.epochs,=10;%,预定的最大训练次数为,10,感知器经过最多训练,10,次后停止,adapt,net=,adapt(net,P,T),自适应训练函数,权值和阀值学习函数,learnp,dW,=,learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS,),dW,:,权值或阀值的变化矩阵,W:,权值矩阵或阀值向量,P:,输入向量,T:,目标向量,E:,误差向量,其他可以忽略,设为,learnpn,归一化学习函数,网络仿真函数,sim,a=,sim(net,P),输入向量,网络输出,分类结果显示绘图函数,plotpv,plotpv(P,T,),plotpc,plotpc(W,b,),画输入向量的图像,画分类线,根据给定的样本输入向量,P,和目标向量,T,以及需分类的向量组,Q,创建一个感知器,对其进行分类,.,例,:,创建一个感知器,P=-0.5-0.6 0.7;0.8 0 0.1;%,已知样本输入向量,T=1 1 0;%,已知样本目标向量,net=newp(-1 1;-1 1,1);%,创建感知器,handle=plotpc(net.iw1,net.b1);%,返回划线的句柄,net.trainParam.epochs,=10;%,设置训练最大次数,net=,train(net,P,T,);%,训练网络,Q=0.6 0.9-0.1;-0.1-0.5 0.5;%,已知待分类向量,Y=,sim(net,Q,);%,二元分类仿真结果,figure;%,新建图形窗口,plotpv(Q,Y,);%,画输入向量,handle=plotpc(net.iw1,net.b1,handle)%,画分类线,实验一 利用感知器进行分类,(1),一个经过训练的感知器对,5,个输入向量进行分类,(2,类,),。,Step 1,两个长度为,5,的向量构成输入样本矩阵,P,,行向量,T,为目标向量。利用,PLOTPV,画出这个向量的图像。例如:,P=-0.5-0.5+0.3-0.1-4;-0.5+0.5-0.5+1.0 5;,T=1 1 0 0 1;,plotpv(P,T,);,%,plotpv,函数利用感知器的输入向量和目标向量来画输入向量的图像,Step 2,建立神经网络,画输入向量的图像,MATLAB,提供函数,newp,来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。,net=newp(-40 1;-1 50,1);,注意:这个神经元的传递函数是,hardlim,函数,也就是阶跃函数。取,0,,,1,两个值。,Hardlims,函数,取,-1,,,1,两个值。,实验一 利用感知器进行分类,(2),添加神经元的初始化值到分类图,Step3,初始化的权值被设为,0,,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。,hold on,linehandle,=plotpc(net.IW1,net.b1);/plotpc,函数用来画分类线,训练神经网络,Step4,Matlab,提供了,adapt,函数来训练感知器,,adapt,函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从,3,个角度去调整,画分类线一直到误差为,0,为止。,E=1;/E,为误差,net.adaptParam.passes,=3;/,决定在训练过程中重复次数,while(,sse(E,)/,sse,函数是用来判定误差,E,的函数,net,Y,E,=,adapt(net,P,T,);/,利用输入样本调节神经网,net,linehandle,=plotpc(net.IW1,net.b1,linehandle);/,画出调整以后的分类线,drawnow,;/,延迟一段时间,end,实验一 利用感知器进行分类,(3),Step 5,模拟,sim,sim,函数能被用来划分任何别的输入向量,例如划分一个输入向量,0.7;1.2.,这个新点的图像为红色,他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。,p=0.7;1.2;,a=,sim(net,p,);/,利用模拟函数,sim,计算出新输入,p,的神经网络的输出,plotpv(p,a,);,circle=,findobj(gca,type,line);,set(circle,Color,red,);,打开,hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。,hold on;,plotpv(P,T,);plotpc(net.IW1,net.b1);hold off;axis(-2 2-2 2);,这个感知器正确的区分了我们的新点,(,用红色表示,),作为”,zero”,类,(,用圆圈表示,),,而不是”,one”,类,(,用,+,号表示,),,尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习。最后放大感兴趣的区域,
展开阅读全文