神经网络.docx
《神经网络.docx》由会员分享,可在线阅读,更多相关《神经网络.docx(18页珍藏版)》请在冰豆网上搜索。
神经网络
大学
研究生课程考试答题纸
培养单位学科专业
课程名称
任课教师
考试日期
学生姓名
学号
研究生学院
石家庄铁道大学2012-2013学年第2学期
C(√)课程论文或课程设计(70%)+平时成绩(30%)。
学号:
120127619姓名:
贾玉班级:
2012电研一班
题号
一
二
三
四
五
六
七
八
九
十
合计
满分
40
30
30
100
得分
一、撰写“人工神经网络及其应用”论文(40分)
要求:
1、人工神经网络的发展前景;
2、人工神经网络的种类及应用领域;
3、结合自己的专业和课题方向论述人工神经网络在该领域中的应用;
4、结合实例做仿真研究。
二、课程设计——编写程序(30分)
根据所学人工神经网络学习训练算法,编制人工神经网络训练算法程序,训练非线性函数模拟。
三、平时成绩(30分)
人工神经网络及其应用
摘要:
人工智能与神经网络技术是目前国际一门发展迅速的前沿交叉学科。
在近二十年中发展中取得了大量成果,本文介绍了神经网络的发展前景,人工神经网络的种类和应用领域,在计算机测控方面的应用,做了仿真研究,并对神经网络的的未来发展进行了展望。
关键词:
神经网络发展前景计算机测控应用
1、人工神经网络的发展前景
人工神经网络的研究始于上世纪40年代初。
半个多世纪以来,经历了兴起、高潮与萧条、高潮及稳步发展的较为曲折的道路。
1943年,心理学家W.S.Mcculloch和数理逻辑学家W.Pitts提出了M—P模型,这是第一个用数理语言描述脑的信息处理过程的模型,虽然神经元的功能比较弱,但它为以后的研究工作提供了依据。
1949年,心理学家D.O.Hebb提出突触联系可变的假设,根据这一假设提出的学习规律为神经网络的学习算法奠定了基础。
1957年,计算机科学家Rosenblatt提出了著名的感知机模型,它的模型包含了现代计算机的一些原理,是第一个完整的人工神经网络。
1969年,美国著名人工智能学者M.Minsky和S.Papert编写了影响很大的Perceptron一书,从理论上证明单层感知机的能力有限,诸如不能解决异或问题,而且他们推测多层网络的感知能也不过如此,在这之后近10年,神经网络研究进入了一个缓慢发展的萧条期。
美国生物物理学家J.J.Hopfield于1982年、1984年在美国科学院院刊发表的两篇文章,有力地推动了神经网络的研究,引起了研究神经网络的又一次热潮。
1982年,他提出了一个新的神经网络模型——hopfield网络模型。
1984年,他又提出了网络模型实现的电子电路,为神经网络的工程实现指明了方向。
为适应人工神经网络的发展,1987年成立了国际神经网络学会,并决定定期召开国际神经网络学术会议。
进入90年代后世界各国开始研制面向21世纪的新一代智能计算机——“右脑”型计算机,即第四代计算机。
人工神经网络能模拟人脑的并行信息处理方式,具有惊人的自学习、思维、推理、判断和记忆的功能。
表现在:
①具有快速、准确的信息处理能力,因为人工神经网络具有并行处理机制,它的信息处理是在大量信息单元中并行而有层次地进行的;②具有惊人的自学习功能,它不需要任何程序就能获得学习知识;③即使输入的信息不完全,不确切,也能得出正确的结果,即具有自适应、自组织能力;④具有独特的存储信息的能力。
其资料和知识不是存储在存贮器中,而是存储在神经元之间的网络中,即使某一节点断裂,它还有重建的能力。
人工神经网络以其独特的结构和处理信息的方法,在许多实际应用领域中取得了显著的成效,能够解决一些传统计算机极难求解,甚至无法求解的问题。
2、人工神经网络的种类及应用领域
人工神经网络模型主要考虑网络连接的拓扑结构、神经元的特征、学习规则等。
目前,已有近40种神经网络模型,其中有反传网络、感知器、自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等。
(1)反向传播(BP)神经网络
BP网络是一种有监督的前馈运行的人工神经网络!
它由输入层/隐含层/输出层以及各层之间的节点的连接权所组成,这个学习过程的算法由信息的正向传播和误差的反向传播构成。
在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层,每一层神经元只影响下一层神经元的输出。
如果不能在输出层得到期望的输出,则转入反向传播,运用链数求导法则将连接权关于误差函数的导数沿原来的连接通路返回,通过修改各层的权值使得误差函数减小。
(2)Hopfield神经网络
基本的Hopfield神经网络是一个由非线性元件构成的全连接型单层反馈系统。
网络中的每一个神经元都将自己的输出通过连接权传送给所有其它神经元,同时又都接收所有其它神经元传递过来的信息。
所以Hopfield神经网络是一个反馈型的网络。
其状态变化可以用差分方程来表征。
反馈型网络的一个重要特点就是它具有稳定状态。
当网络达到稳定状态的时候,也就是它的能量函数达到最小的时候。
能量函数表征网络状态的变化趋势,并可以依据Hopfield工作运行规则不断进行状态变化,最终能够达到的某个极小值的目标函数。
网络收敛就是指能量函数达到极小值。
如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题。
Hopfield工作时其各个神经元的连接权值是固定的,更新的只是神经元的输出状态。
Hopfield神经网络的运行规则为:
首先从网络中随机选取一个神经元
进行加权求和,计算
的第
时刻的输出值。
除
以外的所有神经元的输出值保持不变,返回至第一步计算,直至网络进入稳定状态。
Hopfield神经网络的能量函数是朝着梯度减小的方向变化,但它仍然存在一个问题,那就是一旦能量函数陷入到局部极小值,它将不能自动跳出局部极小点而到达全局最小点,因而无法求得网络最优解,这可以通过模拟退火算法或遗传算法得以解决。
(3)随机型的神经网络
为求解全局最优解提供了有效的算法。
模拟退火算法(SimulatedAnnealing)的思想最早是由Metropolis等人于1953年提出的。
但把它用于组合优化和VLSI设计却是在1983年由S.Kirkpatrick等人和V.Cemy分别提出的。
模拟退火算法将组合优化问题与统计力学中的热平衡问题类比,开辟了求解组合优化问题的新途径。
Boltzmann机(BohzmannMa.chine)模型采用模拟退火算法,使网络能够摆脱能量局部极小的束缚,最终达到期望的能量全局最小状态。
但是这需要以花费较长时间的代价来得到。
为了改善Boltzmann机求解速度慢的不足,最后出来的Gaussion机模型不但具备HNN模型的快速收敛特性,而且具有Bohzmann的“爬山”能力。
Gussion机模型采用模拟退火算法和锐化技术,使之能够有效地求解优化及满足约束问题。
(4)自组织神经网络
神经网络在接受外界输入时,将会分成不同的区域,不同的区域对不同的模式具有不同的响应特征,即不同的神经元以最佳方式响应不同性质的信号激励,从而形成一种拓 扑意义上的有序图。
这种有序图也称之为特征图,它实际上时一种非线性映射关系,它将信号空间中各模式的拓扑关系几乎不变地反映在这张图上,即各神经元的输出响应上。
由于这种映射是通过无监督的自适应过程完成的,所以也称它为自组织神经网络。
自组织神经网络是以神经元自行组织以校正各种具体模式的概念为基础的,能够形成簇与簇之间的连续映射,起到矢量量化器的作用。
在这种网络中,输出节点与其邻域其它节点广泛相连,并相互激励。
输入节点和输出节点之间通过强度
相连接。
通过某种规则,不断地调整
,使得在稳定时,每一邻域的所有节点对某种输入具有类似的输出,并且这聚类的概率分布与输入模式的概率分布相接近。
人工神经网络经过多年的发展,应用研究也取得了突破性进展,范围正在不断扩大,其应用领域几乎包括各个方面。
半个世纪以来,这门学科的理论和技术基础已达到了一定规模,就应用的技术领域而言有计算机视觉,语言的识别、理解与合成,优化计算,智能控制及复杂系统分析,模式识别,神经计算机研制,知识推理专家系统与人工智能。
涉及的学科有神经生理学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、动力学、生物电子学等。
美国、日本等国在神经网络计算机软硬件实现的开发方面也取得了显著的成绩,并逐步形成品。
人工神经网络在数据挖掘中主要应用于数据的分类和预测,在分类方法中,与传统的统计方法相比,神经网络具有很强的学习能力,极大地提高了分类的精度和预测的准测度。
人工神经网络与支持向量机、遗传算法、随机森林等其他先进算法的结合,产生更为精确地算法,在R的galgo包(主要应用于生物信息学)中已经体现出来。
3、人工神经网络在计算机测控领域中的应用
如果利用实际的多级计算机测控系统中原有采集的检测信息(即运行中某一时刻电池的采样电压和继电器状态)对故障类型来进行诊断,在现场应用中往往由于几种故障在征兆表现方面有重叠现象,致使技术人员较难对故障类型作出确切的诊断,而较有经验的专家在分析现场实际故障时,通常是根据经验,将现场情况与头脑中贮存的很多故障模式进行比较,通过直觉、联想、记忆和类比来判断故障的类型,故我们把人工神经网络引入故障诊断这一领域中。
本多级计算机测控系统由l台管理级主机、4台控制级子机与相应的现场测控单元组成,可以对4000节电池进行充、放电的测控,每一测控回路由16节电池串联组成。
继电器故障、恒流源故障、干簧管故障以及放大器故障是本系统每一测控回路中的常见故障,管理级主机利用现场测控单元采集的电池电压检测信息,把它们变成样本数据向量,对这些样本数据向量让人工神经网络进行学习,调整网络权值,然后应用于实际的故障诊断中。
我们根据测控回路中采样到的7个对电池采样的电压检测信息以及7个继电器工作状态信息来描述四种故障,即继电器故障、恒流源故障、干簧管故障以及放大器故障。
人工神经网络的输入节点取为故障征兆数14、输出节点数取为故障模式数4和“有故障”信息共5个节点,隐含节点取为8。
人工神经网络的训练样本选取如表1所示,其中“1”表示异常信息,“0”表示正常信息。
表1人工神经网络训练样本
故障征兆
故障模式
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
F1
F2
F3
F4
F5
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
1
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
1
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
其中s1、s3、s5、s7、s9、s11、s13表示同一时刻不同电池的采样电压值,s2、s4、s6、s8、s10、s12、s14表示同一时刻不同测控点中继电器的工作状态,F1表示有故障信息,F2表示放大器故障,F3表示恒流源故障,F4表示继电器故障,F5表示干簧管故障。
在故障样本选择中,考虑到人工神经网络的联想记忆功能,为了防止网络联想记忆给故障诊断带来误差,所以引入6个附加样本。
人工神经网络进行训练上述样本时,取初始权值为0.01,初始偏置值取0.01,权值的学习率取0.7,冲量因子取0.4,误差精度取0.01,网络的训练结果如表2所示。
表2人工神经网络训练结果
故障征兆
故障模式
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
S13
S14
F1
F2
F3
F4
F5
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0.999
0.999
0.001
0.001
0.001
1
0
1
0
1
0
1
0
0
0
0
0
0
0
0.999
0.001
0.999
0.001
0.001
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0.999
0.001
0.002
0.998
0.001
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0.999
0.001
0.001
0.001
0.998
1
1
1
0
1
0
1
0
1
0
1
0
1
0
0.999
0.001
0.001
0.001
0.001
0
1
1
0
1
0
1
0
1
0
1
0
1
0
0.999
0.001
0.001
0.001
0.001
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0.999
0.001
0.001
0.001
0.001
0
0
1
0
1
0
1
0
0
0
0
0
0
0
0.999
0.001
0.001
0.001
0.001
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0.998
0.001
0.001
0.001
0.001
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.004
0.001
0.001
0.001
0.001
从表2可以看出,对于相应的输入征兆、结果中,故障节点的网络输出值接近于1,其余节点的输出值接近于0,由此可见,人工神经网络对于给定的知识能够进行很好的表达。
人工神经网络具有自组织、自学习和联想记忆的能力,即人工神经网络经学习训练后,在故障诊断过程中如部分故障信息丢失时,只要丢失的故障信息小于总的故障信息,则人工神经网络仍可通过未丢失的故障信息进行元器件的故障诊断。
4、结合实例做仿真研究
训练线性神经元:
P=[1.0-1.2];
T=[0.51.0];
w_range=-1:
0.2:
1;b_range=-1:
0.2:
1;
ES=errsurf(P,T,w_range,b_range,'purelin');
plotes(w_range,b_range,ES);
maxlr=0.40*maxlinlr(P,'bias');
net=newlin([-22],1,[0],maxlr);
net.trainParam.goal=.001;
net.trainParam.epochs=1;
net.trainParam.show=NaN;
h=plotep(net.IW{1},net.b{1},mse(T-sim(net,P)));
[net,tr]=train(net,P,T);
r=tr;
epoch=1;
whiletrue
epoch=epoch+1;
[net,tr]=train(net,P,T);
iflength(tr.epoch)>1
h=plotep(net.IW{1,1},net.b{1},tr.perf
(2),h);
r.epoch=[r.epochepoch];
r.perf=[r.perftr.perf
(2)];
r.vperf=[r.vperfNaN];
r.tperf=[r.tperfNaN];
else
break
end
end
tr=r;
plotperf(tr,net.trainParam.goal);
p=-1.2;
a=sim(net,p)
参考文献:
[1]焦立成.神经网络系统理论[J].西安:
西安电子科技大学出版社,1990.
[2]王旭,王宏.人工神经元网络原理与应用[J].吉林:
东北大学大学出版社,2001.
[3]卜富清,王茂芝,于庆刚.基于BP神经网络的数字识别[J].长江大学学报(自然科学版).2009.6
(2):
293-294
[4]赵长青,李欧迅,黄书童.BP神经网络数字识别系统的设计方法[J].桂林航天工业高等专科学校学报.2010.3:
292-294
[5]马耀名,黄敏.基于BP神经网络的数字识别研究[J].信息技术.2007.4:
87-91
基于LabVIEW的BP曲线逼近算法
1、引言
LabVIEW是美国国家仪器公司(NI)公司开发的图形化编程语言,相比与文本型编程语言,这种图形化的编程语言具有直观、简便、快速、易于开发和便于维护等优点,在虚拟仪器设计和测控系统开发等相关领域得到了日益广泛的应用。
神经网络的程序往往计算量大,循环复杂,以往在编写这些程序时,都是使用诸如VC++、Matlab等文本式编程语言。
比较而言,以LabVIEW为代表的图形化编程语言不但形象、直观、便捷,而且具有功能强大的数学运算和分析工具,尤其是便捷的图表显示功能,利用LabVIEW可以方便的建立各类仿真模型,进行相应的仿真实验。
所以本文结合BP神经网络理论和LabVIEW图形化的编程思想,对BP神经网络的学习算法进行仿真。
2、BP神经网络的算法
BP网络的学习过程是由正向传播和误差反向传播组成,把输入样本从输入层传到隐含层单元,经隐含层单元逐层处理后产生一个输出,至输出层,这个过程为正向传播,如果输出层没有得到所期望的输入值,把期望值和输出值的误差信号按原路径返回,并通过修改各层神经元的连接权值,使误差信号为最小。
这个过程为反向传播。
第一层为输入层,第Q层为输出层,中间为隐含层,如图1.1。
设第q层的神经元个数为nq,输入到第q层的第i个神经元的连接权系数为
(i=1,2,…,nq-1),该网络的输入输出变换关系为
(
,
)
图1.1神经元网络
设给定P组输入输出样本
设定拟合误差的代价函数为
采用一阶梯度法调节连接权系数E最小。
最后归纳出BP网络的学习算法如下:
,
3、利用BP神经网络进行曲线逼近
本实验选取的学习样本
,输入样本点Xi为(0,1)上的随机数,这些随机数由LabVIEW自带的函数产生。
该神经网络为三层结构的神经网络,即由输入层,隐含层和输出层组成,输入层为单输入,含100个神经元,隐含层只有一层,神经元个数为10,输出层为单输出,神经元个数为100。
程序流程如下所示:
在了解BP曲线拟合算法后,用LabVIEW编程,这主要是由于LabVIEW基于数据流的编程风格非常适合描述神经网络的正向传播和误差反向传播的过程,在本程序中,用while循环和移位寄存器作为主要的循环手段,中间计算过程综合采用LabVIEW的矩阵运算和数组运算,不仅简化了算法编程的难度,而且结构清晰。
4、程序代码
(1)本程序需在LabVIEW软件上运行,程序代码见附录。
(2)前面板导出图
在面板上可以实时显示训练过程曲线和误差曲线,通过右下方的输入控件可以设置训练要达到的精度和最大训练次数,两个指示灯用来指示训练是以完成设置精度结束还是以完成训练次数结束,误差显示控件显示训练结束时的误差大小。
5、实验结果
(1)训练样本和输入样本
(2)训练过程
(3)训练完成
训练34次后误差为9.83013E-5,达到了精度要求(小于0.001),训练停止。
(4)误差曲线
6、心得体会
由于本次程序中采用的神经单元模型的输出变换函数为
,神经单元的输出是在(0,1)开区间内,所以选取
的正半周期作为学习曲线,虽然训练效果很好但是由于神经单元模型的限制,该训练函数适用范围很有限,要想突破这个局限需要另选神经单元模型的输出变换函数,或者通过其他方法解决。
其次由于对于阈值的修正没有一个好的修正算法,同时也为了简化算法,本实验中没设计关于阈值
修正,直接是默认的阈值0。
再次,在本实验中BP网络采用的一组样本对应一组权值,而不是所有的样本使用同一组样本。
这样学习效率提高,学习比较快,缩短学习时间,但是权值数量比较庞大。
总之各种方法都各有优缺点,可以根据实际的情况去选择方案,调整,修正算法。
因此还需要对此进行更深入的研究。
7、程序代码