数学建模神经网络之算法.ppt_第1页
数学建模神经网络之算法.ppt_第2页
数学建模神经网络之算法.ppt_第3页
数学建模神经网络之算法.ppt_第4页
数学建模神经网络之算法.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、神经网络算法简介,主讲:何仁斌,实际应用问题,1、蠓虫的分类问题 2、DNA序列分类问题 3、癌症诊断问题 ,神经网络算法简介,感知器 感知器(perceptron)是由美国科学家F.Rosenblatt于1957年提出的,其目的是为了模拟人脑的感知和学习能力。感知器是最早提出的一种神经网络模型。它特别适合于简单的模式分类问题,如线性可分的形式。,神经网络算法简介,以两个输入的单层感知器神经元为例,w 权重; b 阈值 如果设 w(1,1)=-1,w(1,2)=2,b=1,单层感知器,多层感知器,性能指标:均方误差达到最小,涉及算法,注意:单层感知器的局限性是:仅对线性可分问题具有分类能力。,

2、分类问题的MATLAB软件实现,以蠓虫分类问题为例,% 输入向量 P=1.241.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.3; 1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96; % 目标向量 T=1 1 1 1 1 1 1 1 1 0 0 0 0 0 0; % 绘制输入向量 plotpv(P,T);,1)单层感知器,% 建立一个感知器 net=newp(0 3;0 3,1); % 绘制输入向量 plotpv(P,T)

3、; E=1; % 初始化感知器 net=init(net); linehandle=plotpc(net. IW 1,net. b 1);,分类问题的MATLAB软件实现,分类问题的MATLAB软件实现,% 修正感知器网络 while(sse(E) net,Y,E=adapt(net,P,T); %返回学习后的网络,Y是输出,E是误差 linehandle=plotpc(net. IW 1,net. b 1,linehandle); %分界线绘制函数 drawnow; %更新分界线 end;,% 利用训练好的感知器对未知类别样本进行分类 p=1.24,1.28,1.4;1.8,1.84,2.0

4、4; a=sim(net,p); plotpv(p,a); ThePoint=findobj(gca,type,line); set(ThePoint,Color,red); hold on; plotpv(P,T); plotpc(net. IW 1,net. b 1); hold off; disp(End of percept),分类问题的MATLAB软件实现,分类结果:,Af,Apf,以上结果是图形化的结果,如下给出数值化的结果:mcfl1.m,P=1.241.36 1.38 1.38 1.38 1.4 1.48 1.54 1.56 1.14 1.18 1.2 1.26 1.28 1.

5、3; 1.72 1.74 1.64 1.82 1.9 1.7 1.82 1.82 2.08 1.78 1.96 1.86 2.0 2.0 1.96; % 目标向量 T=1 1 1 1 1 1 1 1 1 0 0 0 0 0 0; % 建立一个感知器 net=newp(0 3;0 3,1); % 网络训练次数 net.adaptParam.passes=100 net=adapt(net,P,T); %返回自适应的神经网络 % 输出仿真结果 Y=sim(net,P) % 利用训练好的感知器进行分类 p=1.24,1.28,1.4;1.8,1.84,2.04; a=sim(net,p),仿真结果:

6、,Y = Columns 1 through 11 1 1 1 1 1 1 1 1 1 0 0 Columns 12 through 15 0 0 0 0 a = 1 1 1 准确率达到100%。,BP网络(Back-Propagation Network),目前,在人工神经网络的实际应用中,决大部分的神经网络模型是采用BP网络和它的变化形式。BP网络主要用于: 函数逼近 模式识别 分类 数据压缩,学习过程由信号的正向传播与反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出(教师信号)不符合时,则转入误差的反向传播阶段。误差反传

7、是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此信号作为修正各单元权值的依据。,BP算法的基本思想:,隐层到输出层之间的权值矩阵: W = W1, W2, ,Wl ,1、网络结构,2、各层信号之间的数学关系,输出层 ok = f (netk) , netk = j=0:mwjkyj , k = 1,2,l, 对隐层 yk = f (netj) , netj = i=0:nvijxi , j = 1,2,m, 传递函数一般用:f (x) = 1/ (1+exp(-x) (s型函数) 误差函数: Eh = 0.5*(j=0:l(thj-o

8、hj)2) , thj, ohj分别为期望输出和网络的实际输出。,MATLAB中有关BP网络的重要函数,newff 创建前向BP网络 格式: net = newff(PR,S1 S2.SNl,TF1 TF2.TFNl,BTF,BLF,PF),其中:PR R维输入元素的R2阶最大最小值矩阵; Si 第i层神经元的个数,共N1层; TFi 第i层的转移函数,默认tansig; BTF BP网络的训练函数,默认trainlm; BLF BP权值/偏差学习函数,默认learngdm PF 性能函数,默认mse;(误差),MATLAB中有关BP网络的重要函数,例如: net=newff(0 20;0 1

9、6;0 12;0 12;0 13,5 1, logsig purelin,traingdx);,三层神经网络结构: 中间层为5 输出层为1,输入层5维向量的取值范围,训练函数,转移函数,(1)purelin 线性传递函数; (2)tansig 双曲正切S型(sigmoid)传递函数; (3)logsig 对数S型(sigmoid)传递函数;,1、转移函数:,(1),(2),(3),2、训练函数:,trainlm Levenberg-Marquardt的BP算法训练函数; trainbfg BFGS拟牛顿BP算法训练函数; trainrp 具有弹性的BP算法训练; traingd 梯度下降是BP

10、算法训练; traingda 梯度下降自适应lr的BP算法训练; traingdm 梯度下降动量的BP算法训练; traingdx 梯度下降动量和自适应lr的BP算法训练;,如果对神经网络的输入、输出数据进行一定的预处理,可以加快网络的训练速度。有三种方法: 1)归一化 将每组数据都变为-1至1之间的数,matlab中有函数:premnmx,postmnmx,tramnmx 算法: pn = 2*(p-minp)/(maxp-minp) - 1; 2)标准化 将每组数据变换为均值为0,方差为1的数,所涉及的函数有:prestd,posttd,trastd 3) 正交化 主成分分析也可以将数据进

11、行正交处理,减少输入数据的处理,函数有:prepca,trapca.,注意:数据预处理,输入向量 P = 0 1 2 3 4 5 6 7 8 9 10; 期望输出 T = 0 1 2 3 4 3 2 1 2 3 4;,例:,创建两层的BP网络: net = newff ( 0 10, 5 1, tansig, purelin ); Y = sim(net,P); plot(P,T,P,Y,o) 或 net.trainParam.epochs = 50; net = train(net,P,T); Y = sim(net,P); plot(P,T,P,Y,o),Y = -2.3431 -2.75

12、32 -2.4510 -1.2784 -0.8590 -0.2981 0.2495 0.4811 1.0375 1.2268 1.4232 T = 0 1 2 3 4 3 2 1 2 3 4; % 期望输出,第一种情况的输出结果:,误差很大! 未训练,非线性映射能力差。,Y = -0.0019 1.0045 1.9896 3.0157 3.9637 3.1021 1.8175 1.2056 1.8322 3.1162 3.9551 T = 0 1 2 3 4 3 2 1 2 3 4; % 期望输出,第二种情况的输出结果:,思考: 究竟误差有多大?,修改程序:,P = 0 1 2 3 4 5 6

13、 7 8 9 10; T = 0 1 2 3 4 3 2 1 2 3 4; net = newff(0 10,5 1,tansig purelin); net.trainparam.show=50; %每次循环50次 net.trainParam.epochs = 500; %最大循环500次 net.trainparam.goal=0.01; %期望目标误差最小值 net = train(net,P,T); %对网络进行反复训练 Y = sim(net,P) Figure % 打开另外一个图形窗口 plot(P,T,P,Y,o),Y = 0.0005 1.0026 1.9947 3.0134

14、 3.9429 3.1211 1.8482 1.1755 1.8568 3.1150 3.9595,第二种情况的输出结果:,范例:DNA序列模式分类问题,一、问题,假定已知两组人工已分类的DNA序列(20个已知类别的人工制造的序列),其中序列标号110 为A类,11-20为B类。要求我们从中提取已经分类了的DNA序列片段的特征和构造分类方法,并且还要衡量所用分类方法的好坏,从而构造或选择一种较好的分类方法。测试对象是20个未标明类别的人工序列(标号2140)和182个自然DNA序列。例如A类:,a1=aggcacggaaaaacgggaataacggaggaggacttggcacggcatta

15、cacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg; b1=gttagatttaacgttttttatggaatttatggaattataaatttaaaaatttatattttttaggtaagtaatccaacgtttttattactttttaaaattaaatatttatt; ,二、特征提取,序列中含有四个碱基a、g、t、c,反映该序列特征的方面主要有两个: 1、碱基的含量,反映了该序列的内容; 统计a、g、t、c序列中分别出现的频率;,2、 碱基的排列情况,反映了该序列的形式; 从字符出现的周期性来反映。 统

16、计三个字符出现的频率;在遗传学中每三个碱基的组合被称为一个密码子,如agg,att,ggc, cgg等,共有43=64个,还可以由密码子组成20个氨基酸。,三、神经网络对DNA序列分类问题的应用,假定提取已知序列类别的三字符串,如agg,att,ggc, cgg,共有43=64个,将它简化成只有5个:ttt, tta, ggc, cgg, gga。统计出任意一个DNA序列片段的5维向量,即每个特征字符串在序列中出现的频数作为分量。,a1=aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctac

17、ggccggaagtgaagggggatatgaccgcttgg; 编程统计出该片段的字符串( ttt, tta, ggc, cgg, gga)的频数分别为:(0,1,5,7,10),经过统计计算,得到已知类别的输入向量: p = 0 1 0 5 1 3 2 2 2 1 19 18 23 17 43 12 2 17 19 23; 1 2 0 4 1 1 1 4 0 1 13 15 13 11 9 9 2 14 12 7; 5 5 8 0 10 9 5 7 11 9 0 0 1 0 0 0 3 1 0 0; 7 10 16 2 11 9 6 5 8 6 0 0 0 1 0 0 3 2 0 0;

18、10 11 15 2 11 12 12 9 5 6 2 1 1 1 0 1 1 0 1 1;,待判类别的输入向量: P = 9 2 3 13 3 15 3 10 3 2 6 5 9 2 2 2 2 16 2 18; 7 4 4 8 5 9 6 12 3 3 12 4 7 3 2 4 4 10 2 10; 0 0 4 1 5 0 2 1 7 0 2 2 0 4 2 1 3 1 2 1; 0 2 8 0 1 1 5 0 7 0 1 3 0 3 3 1 1 1 0 2; 2 3 9 1 2 1 8 1 5 0 2 1 1 5 4 1 3 1 1 2;,由前20个已知类别的DNA序列片段可以构造出目标

19、向量: t = 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0;,1、应用感知器对DNA序列进行分类: (DNAper1.m) net=newp(0 1;0 1;0 1;0 1;0 1,1); net.adaptParam.passes=110 net=adapt(net,p,t); Y=sim(net,p) % 回代检验 a=sim(net,P) % 对待判类别的序列进行分类,A 类,B 类,a = 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0,回代检验结果是100%的准确。 待判序列的分类结果: A类:22,23,27,29

20、,34,35,37; B类:21,24,25,26,28,30,31,32, 33,36,38,39,40;,输出结果:,a = 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 并附图形:,获得数值分类结果: (DNAper.m) net=newp(0 1;0 1;0 1;0 1;0 1,1); net.adaptParam.passes=110 net=adapt(net,p,t); Y=sim(net,p) % 回代检验 a=sim(net,P) % 对待判类别的序列进行分类,输出结果:,误差曲线图,2、应用BP网络对DNA序列进行分类: (DNAbp.m)

温馨提示

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

评论

0/150

提交评论