• / 38
  • 下载费用:20 金币  

神经网络算法含感知器和BP

关 键 词:
BP神经网络和感知器 神经网络算法 含感知器和BP BP神经网络 感知器感知器 BP神经网络与感知器神经网络 神经网络和bp神经网络
资源描述:
主讲:何仁斌 实际应用问题 1、蠓虫的分类问题 2、DNA序列分类问题 3、癌症诊断问题 …… 神经网络算法简介 • 感知器 感知器(perceptron)是由美国科学家 F.Rosenblatt于1957年提出的,其目的是为 了模拟人脑的感知和学习能力。感知器是最 早提出的一种神经网络模型。它特别适合于 简单的模式分类问题,如线性可分的形式。 神经网络算法简介 以两个输入的单层感知器神经元为例 ∑ w(1,1) w(1,2) p(1) p(2) na b w ——权重; b ——阈值 如果设 w(1,1)=-1,w(1,2)=2,b=1 L -b/ w(1,2) -b/ w(1,1) wp+b0 a=1 wp+b0 a=0 • 单层感知器 • 多层感知器 w(1,1) w(1,2) p1 p2 na2 ∑ b1 ∑ b2 n2a2 n1a1 ∑ b1 w(2,1) w(2,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)单层感知器 ∑ w(1,1) w(1,2) p(1) p(2) na b % 建立一个感知器 net=newp([0 3;0 3],1); % 绘制输入向量 plotpv(P,T); % 初始化感知器 net=init(net); %画出分类线 net. iw {1,1} net. b {1} linehandle=plotpc(net. iw {1,1},net. b {1}); %作wx+b=0的分类线 分类问题的MATLAB软件实现 分类问题的MATLAB软件实现 E=1; % 修正感知器网络 while(sse(E)) %sse 返回误差的平方 [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.04]; 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.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) 仿真结果: 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网络主要用于: ◆ 函数逼近 ◆ 模式识别 ◆ 分类 ◆ 数据压缩 学习过程由信号的正向传播与反向传播 两个过程组成。正向传播时,输入样本从输 入层传入,经各隐层逐层处理后,传向输出 层。若输出层的实际输出与期望输出(教师 信号)不符合时,则转入误差的反向传播阶 段。误差反传是将输出误差以某种形式通过 隐层向输入层逐层反传,并将误差分摊给各 层的所有单元,从而获得各层单元的误差信 号,此信号作为修正各单元权值的依据。 BP算法的基本思想: x1x2xixn-1xn …… y1y2yjym…… W1WkWl o1okol…… 输入层 隐层 输出层 隐层到输出层之间的 权值矩阵: 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-ohj)2) , thj, ohj分别为期望输出和网络的实际输出。 MATLAB中有关BP网络的重要函数 newff 创建前向BP网络 格式: net = newff(PR,[S1 S2.SNl],{TF1 TF2.TFNl},BTF,BLF,PF) 其中:PR —— R维输入元素的R×2阶最大最小值矩阵; Si —— 第i层神经元的个数,共N1层; TFi—— 第i层的转移函数,默认‘tansig’; BTF—— BP网络的训练函数,默认‘trainlm’; BLF—— BP权值/偏差学习函数,默认’learngdm’ PF —— 性能函数,默认‘mse’;(误差) MATLAB中有关BP网络的重要函数 例如: net=newff([0 20;0 16;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算法训练; 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) 正交化 主成分分析也可以将数据进行正交处理 ,减少输入数据的处理,函数有: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.7532 -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 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 3.9429 3.1211 1.8482 1.1755 1.8568 3.1150 3.9595 第二种情况的输出结果: 范例:DNA序列模式分类问题 一、问题 假定已知两组人工已分类的DNA序列(20个已 知类别的人工制造的序列),其中序列标号1—10 为A类,11-20为B类。要求我们从中提取已经分类 了的DNA序列片段的特征和构造分类方法,并且还 要衡量所用分类方法的好坏,从而构造或选择一种 较好的分类方法。测试对象是20个未标明类别的人 工序列(标号21—40)和182个自然DNA序列。例 如A类: a1='aggcacggaaaaacgggaataacggaggaggacttggcacggcattaca cggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatg accgcttgg'; b1='gttagatttaacgttttttatggaatttatggaattataaatttaaaaa tttatattttttaggtaagtaatccaacgtttttattactttttaaaattaaa tatttatt'; …… 二、特征提取 序列中含有四个碱基a、g、t、c,反映该序列特 征的方面主要有两个: 1、碱基的含量,反映了该序列的内容; 统计a、g、t、c序列中分别出现的频率; 2、 碱基的排列情况,反映了该序列的形式; ① 从字符出现的周期性来反映。 ② 统计三个字符出现的频率;在遗传学中每三个碱基 的组合被称为一个密码子,如agg,att,ggc, cgg等,共 有43=64个,还可以由密码子组成20个氨基酸。 三、神经网络对DNA序列分类问题的应用 假定提取已知序列类别的三字符串,如agg,att ,ggc, cgg……,共有43=64个,将它简化成只有5个 :ttt, tta, ggc, cgg, gga。统计出任意一个DNA序列片 段的5维向量,即每个特征字符串在序列中出现的频数 作为分量。 a1='aggcacggaaaaacgggaataacggaggaggacttggcacggcattaca cggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatg accgcttgg'; 编程统计出该片段的字符串( 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; 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序列片段可以构造出 目标向量: 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,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) net=newff([0 20;0 16;0 12;0 12;0 13],[3 1],{'logsig' 'purelin'},'traingdx'); net.trainparam.show=100; %两次显示之间的训练步数 net.trainparam.lr=0.5; net.trainparam.mc=0.8; net.trainparam.epochos=20000; net.trainparam.goal=0.01; %训练目标 [net,tr]=train(net,p,t); Y=sim(net,p) a=sim(net,P) Y = 1.0436 1.0223 0.9879 0.6593 1.0348 1.0225 1.0364 1.0111 0.8835 0.9824 0.0079 0.0079 0.0077 0.0088 0.0077 0.0813 0.2153 0.0080 0.0080 0.0078 a = 0.4215 0.7467 0.9664 0.0766 0.4305 0.0158 0.9113 0.1174 0.8094 0.1735 0.4612 0.5622 0.4323 0.8334 0.8310 0.4070 0.5784 0.0115 0.1521 0.0082 回代检验结果也是100%的准确。 待判序列的分类结果:同上 输出结果: 误差曲线图 思考:1、前面所述的特征提取为:ttt, tta, ggc, cgg, gga, 是否合理? 2、请给出另外的特征重新计算! 3、分析改进后的误差。
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:神经网络算法含感知器和BP
链接地址:https://www.maidoc.com/p-15673939.html

当前资源信息

天马****3

编号: 20180821120612974318

类型: 共享资源

格式: PPT

大小: 311.50KB

上传时间: 2019-11-06

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开