基于神经网络的模式识别—小组课题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • •
•
• • • • • • • • •
[alphabet,targets]=prprob; %生成字母表布尔值的函数 S1=10; [R,Q]=size(alphabet); [S2,Q]=size(targets); P=alphabet; net=newff(minmax(P),[S1 S2],{'logsig' 'logsig'},'traingdx');%生成神经网络结 构,样本P的范围,S1(隐层)神经元S2(输出层)神经元, %包含每层用到的传递函数名称的细胞 数组,训练函数 %生成BP网络; net.LW{2,1}=net.LW{2,1}*0.01; %调整输出层权值,隐含层到输出层的权值向量,这样就约等于0; net.b{2}=net.b{2}*0.01; %调整输出层阈值,这样就约等于0; %应用理想的输入信号对网络进行训练,直到达到其均方差精度; T=targets; net.performFcn='sse'; %sse 是一个性能函数,根据误差的均方和测量性能;
• 泛化能力
– 当向网络输入训练时未曾见过的非样本数据时,网络 也能完成由输入空间向输出空间的正确映射。这种能 力称为泛化能力。
• 容错能力
– 输入样本中带有较大的误差甚至个别错误对网络的输 入输出规律影响很小。
基于BP算法的网络模型
BP算法
学习过程
• 正向传播:
输入样本---输入层---各隐层---输出层
• 低潮时期:60—70年代
– 自组织映射,神经认知机网络理论,BSB模型, BP理论的提出
• 第二次研究高潮:80年代—至今
– Hopfield神经网络模型,多层并行分布处理(BP) 理论,等等
神经网络的研究内容
• 生物模型的研究:从生物科学方面全面研 究神经细胞及网络,神经系统的结构及其 功能机理 • 网络模型及算法研究:在理论模型的基础 上建立具体的神经网络模型为计算机模拟 做准备 • 神经网络的应用系统:在各种模型和算法 的基础上,完成模式识别的功能
• 判断是否转入反向传播阶段:
若输出层的实际输出与期望的输出不符
• 误差反传
误差以某种形式在各层表示----修正各层单元的 权值
可接受的程度进行到预先设定的学习次数为止。
直至网络输出的误差减少到预期的值
• 基于BP算法的识别模型
算法
wih – 输入层与隐层的连接权值: who – 隐层与输出层的连接权值: bh – 隐层各神经元的阈值: – 输出层各神经元的阈值: bo – 样本数据个数: k 1, 2, m – 激活函数: f() q 1 2 – 误差函数: e (d o (k ) yoo (k )) 2 o1
• • • •
noisyJ=alphabet(:,1)+randn(35,1)*0.2; plotchar(noisyJ); A2=sim(net,noisyJ); A2=compet(A2);%这里的compet函数从help上来 %更像是一个滤波函数,而sum函 %数则是用来求 %一个多维矩阵中各行列的和值。 • answer=find(compet(A2)==1); • plotchar(alphabet(:,answer));
( o (k )who ) f (hih (k ))
o 1
q
h (k )
学习算法
利用输出层各神经元的 o (k ) 和隐含层各 神经元的输出来修正连接权值 who (k )
e who (k ) o (k )hoh (k ) who w
N 1 ho
什么是BP神经网络
• BP(Back Propagation)网络是1986年由 Rumelhart和McCelland为首的科学家小组提 出,是一种按误差逆传播算法训练的多层 前馈网络,是目前应用最广泛的神经网络 模型之一。
BP神经网络的特点
• 非线性映射能力
– 能学习和存贮大量输入-输出模式映射关系,而无需事 先了解描述这种映射关系的数学方程。只要能提供足 够多的样本模式对供网络进行学习训练,它便能完成 由n维输入空间到m维输出空间的非线性映射。
• • • •
net.trainParam.goal=0.1; %训练精度 net.trainParam.show=20; %显示训练的迭代过程 net.trainParam.epochs=5000; %最大训练次数 net.trainParam.mc=0.95; %mc为动量因子,一般 取0.95左右 • [net,tr]=train(net,P,T); %训练函数 • %无噪训练
h 1
q
学习算法
• 利用网络期望输出和实际输出,计算误 差函数对输出层的各神经元的偏导数 o (k )
e e yio who yio who
yio (k ) who ( whohoh (k ) bo )
h p
who
hoh (k )
学习算法
利用隐含层到输出层的连接权值、输出层 的 o (k )和隐含层的输出计算误差函数对隐 含层各神经元的偏导数 h (k )。
• • • • • • • • • • • • •
%再次进行无噪训练 netn.trainParam.goal=0.1; netn.trainParam.epochs=500; netn.trainParam.show=5; P=alphabet; T=targets; [net,tr]=train(netn,P,T) %系统性能 noise_range=0:.05:.5; max_test=100; network1=[]; network2=[]; T=targets; %标准差范围 %噪声信号总数
e e yio o (k )hoh (k ) who yio who
e e hih (k ) wih hih (k ) wih hih (k ) wih ( wih xi (k ) bh )
i 1 n
wih
xi (k )
学习算法
1 q ( ( d o ( k ) yoo (k )) 2 ) e hoh (k ) 2 o1 hih (k ) hoh ( k ) hih ( k ) 1 q ( (d o (k ) f( yio (k ))) 2 ) hoh (k ) 2 o1 hoh (k ) hih (k )
p 1 q ( ((d o (k ) f( who hoh ( k ) bo ) 2 )) hoh (k ) 2 o1 h 1 hoh (k ) hih (k )
(d o (k ) yoo (k )) f ( yio (k )) who
o 1
q
hoh (k ) hih (k )
• • • • • •
%加噪声训练。 netn.trainParam.goal=0.6; netn.trainParam.epochs=300; T=[targets targets targets targets]; for pass=1:10
P=[alphabet,alphabet,(alphabet+randn(R,Q)*0 .1),(alphabet+randn(R,Q)*0.2)]; • [netn,tr]=train(net,P,T); • end
w o (k )hoh (k )
N ho
学习算法
• 利用隐含层各神经元的h (k )和输入层各神经 元的输入修正连接权。
e e hih (k ) wih (k ) h (k ) xi (k ) wih hih (k ) wih w
N 1 ih
w h (k ) xi (k )
N ih
学习算法
• 计算全局误差
1 2 E (d o (k ) yo (k )) 2m k 1 o1
• 最后,判断网络误差是否满足要求。当误差达 到预设精度或学习次数大于设定的最大次数, 则结束算法。否则,选取下一个学习样本及对 应的期望输出,返回到初始状态,进入下一轮 学习。
• • • • • • • • • • • • • • • • • • • • •
for noiselevel=noise_range errors1=0; errors2=0; for i=1:max_test P=alphabet+randn(35,26)*noiselevel; A=sim(net,P); AA=compet(A); errors1=errors1+sum(sum(abs(AA-T)))/2; An=sim(netn,P); AAn=compet(An); errors2=errors2+sum(sum(abs(AAn-T)))/2; end network1=[network1 errors1/26/100]; network2=[network2 errors2/26/100]; end plot(noise_range,network1*100,'--',noise_range,network2*100); plot(noise_range,network1*100,'--',noise_range,network2*100,'+'); title('识别误差'); xlabel('噪声指标'); ylabel('不同的训练方式'); legend('无噪声训练','有噪声训练');
m
q
MATLAB实现
• MATLAB中BP神经网络的重要函数和基本 功能
函数名 newff() tansig() logsig() traingdx() 功 能 生成一个前馈BP网络 双曲正切S型(Tan-Sigmoid)传输函数 对数S型(Log-Sigmoid)传输函数 梯度下降lr_BP训练函数
基于BP神经网络的模式识别
人工神经网络概述
• 什么是人工神经网络?
• T.Koholen的定义:人工神经网络是由具有适应 性的简单单元组成的广泛并行互连的网络,它 的组织能够模拟生物神经系统对真实世界物体 所作出的交互反应。
神经网络的发展历史
• 起源:20世纪40年代
– MP模型的创立,感知机模型,自适应线性元件
神经网络的应用
• 模式识别和图像处理 :字符(语音,签字, 指纹)识别目标检测与识别; 图像压缩与复 制 • 控制与优化:机器人的运动控制 ;家电控制 半导体生产中的控制 ;石油精炼优化控制; 超大规模的集成电路布线控制 • 预报与职能信息:股市行情预测借贷风险分析, IC卡管理及交通管理 • 通信:飞行器制导及程序优化管理自适应均衡, 回波抵消,路由选择等 • 空间科学:导航信息智能管理
MATLAB实现
• 重要函数和基本功能 newff()
• 功能 建立一个前向BP网络 • 格式 net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF,BLF,PF) • 说明 net为创建的新BP神经网络;PR为网络输入 取向量取值范围的矩阵;[S1 S2…SNl]表示网络隐 含层和输出层神经元的个数;{TFl TF2…TFN1}表示 网络隐含层和输出层的传输函数,默认为‘tansi来自百度文库’; BTF表示网络的训练函数,默认为‘trainlm’;BLF 表示网络的权值学习函数,默认为‘learngdm’; PF表示性能数,默认为‘mse’(我们这次使用的 是’sse’)。
学习算法
• 计算隐含层各神经元的输入和输出
hih (k ) wih xi (k ) bh
n
h 1, 2,
,p
hoh (k ) f(hih (k ))
p
i 1
h 1,2,
o 1,2,
,p
q
yio (k ) whohoh (k ) bo
o 1,2,
yoo (k ) f( yio (k ))