王笑宇,段广建
(1.成都理工大学工程技术学院自动化工程系电气教研室,四川乐山614000;2.太原市煤气化公司供应处设备科,山西太原030024)
对于BP神经网络,有一个非常重要的定理,是对任何在闭区间内的一个连续函数都可以用单隐层的网络来逼近。因而一个三层BP网络就可以完成任意的n维到m维的映射[1],本文采用只包含一个隐层的BP神经网络对电机发生的故障进行诊断。神经网络输入数据是提取相应特征频率的幅值,输出是对故障进行相应的编码。从而建立故障模式与故障原因之间的映射关系,谁发生故障谁的期望输出位是1,否则为0。根据本文研究的故障诊断对象,是通过对8个特征频率的检测来进行分析和诊断的[4,5],因此输入神经元个数为8个。接下来确定网络的输出模式,由于对电机的故障诊断包括4种模式。因此可采用如下形式表示输出:
无故障(0,0,0,0),匝间短路(1,0,0,0),转子断条(0,1,0,0),转子偏心(0,0,1,0)。所以网络的输出神经元个数为4个。因此本文故障诊断采用的BP神经网络是8-12-4的三层结构。
标准的BP算法和Widrow-Hoff学习规则一样,是一种梯度下降学习算法,它存在着容易陷入局部极小点,收敛速度缓慢等缺陷[2,3]。这些问题都在一定程度上限制了前馈神经网络的实际应用。针对标准的BP算法存在的一些不足出现了一些改进学习算法,其中主要有:
动量BP算法(traingdm)、学习率可变的BP算法(traingdx)、弹性BP算法(trainrp)、比例共轭梯度算法(trainscg)、LM 优化法(trainlm)、拟牛顿法(trainbfg)等[6-8]。
本文用这些改进的算法逐一用于网络训练,把它们最后的训练效果进行对比分析。为了便于比较上述几种改进的BP算法工作性能,采用Matlab7.1神经网络工具箱中的相关训练函数进行网络训练,并把故障诊断所用BP神经网络的拓扑结构,输入样本,输出样本,网络训练目标(10-5)、训练步数(1000)等都设定为一致,仅采用不同的训练函数。因为训练函数的选取对误差有较大的影响[9,10],训练结果如图1~图6所示:
图1 训练函数:traingdm
图2 训练函数:traingdx
图3 训练函数:trainbfg
图4 训练函数:trainrp
图5 训练函数:trainlm
图6 训练函数:trainscg
整理以上的训练结果,列出下表。
表1 训练结果
在设定相同的隐层节点数和相同的训练目标条件下,采用改进的BP算法后,网络收敛速度明显加快,训练次数(Epochs)较小。从以上的表1中看出,当采用训练函数为traingdm的方法在规定的训练步数内,网络训练不收敛,所以我们不采用traingdm的方法。再进一步比较,可以看出采用trainlm的方法网络训练速度最快,误差满足要求,其次为trainscg和trainrp的方法,网络训练速度也比较快,误差也满足要求,而traingdx的方法网络训练速度较慢。
因此,可以选用trainlm、trainscg、trainrp作为训练函数再进一步进行故障诊断分析。可以选用一组(30个)已经过归一化处理的样本作为检验样本,带入训练好BP神经网络进行测试。测试的结果如下:
(1)采用训练函数为trainlm:27个样本诊断正确,所以正确率为:27÷30×100%=90%。
(2)采用训练函数为trainscg:25个样本诊断正确,正确率为:25÷30×100%=83.33%。
(3)采用训练函数为trainrp:25个样本诊断正确,正确率为:25÷30×100%=83.33%。
从结果上看,采用trainlm的方法,诊断的准确率最高,网络误差最小,稳定性比较好,但是由于这种算法在求解网络连接权值时,涉及到较多的高阶矩阵运算,在进行数据运算时占用计算机内存数量较大,其存储量比其它算法要大[11]。该算法对于中等规模的BP神经网络具有最快的收敛速度。所以在内存充足的情况下,用trainlm算法比较好。采用trainrp的训练方法,其训练速度,也比较快,它不需要存储网络权值和阈值的改变量,所以它所需的存储空间比其它算法相对较小。但它的性能有时会随着目标误差的减小而变差。
比例共轭梯度算法trainscg。在共轭梯度算法,需要在每个训练周期中线性地搜索网络的调整方向,这种线性的搜索方式在每次的搜索中,都需要多次对所有样本进行计算,这样就消耗了大量时间[12]。而比例共轭梯度算法就将模值信赖的算法与共轭梯度算法结合起来,有效地减少了上述的搜索时间,它的内存需求量相对低一些,尤其在网络规模较大的场合,其性能很好,它不像trainrp算法随着目标误差的减小而性能下降。
经过以上分析,得出在内存充足的情况下,用trainlm算法比较好,如果实际应用中的网络规模太大而且需要占用大量内存,那么可以使用trainscg,其次可选用trainrp算法比较好。针对本文对电机故障诊断的实际情况,由于网络规模不是太大,所以在讨论的几个BP改进算法中,选用trainlm是比较好的算法。
[1]鄂加强.智能故障诊断及其应用[M].长沙:湖南大学出版社,2006:1-130.
[2]虞和济,陈长征,张省.基于神经网络的智能诊断[M].北京:冶金工业出版社,2000:1 -20.
[3]王道平,张义忠.故障智能诊断系统的理论与方法[M].北京:冶金工业出版社,2001:1 -20.
[4]沈标正.电机故障诊断技术[M].北京:机械工业出版社,1996:1-380.
[5]梁霖.基于电流的鼠笼异步电机故障特征提取及自动诊断[D].西安:西安交通大学,2001.
[6]王耀南,孙炜.智能控制理论及应用[M].北京:机械工业出版社,2008:47-51.
[7]张仰森.人工智能原理与应用[M].北京:高等教育出版社,2004:317-334.
[8]杨善林,倪志伟.机器学习与智能决策支持系统[M].北京:科学出版社,2004:160-162.
[9]占玉林,王长耀,牛铮.基于BP网络的降雨一水位预报模型应用研究[J].中国科学院研究生院学报,2007,24(1):81 -85.
[10]吴志钢,林中达.运用模糊神经网络的凝汽器故障诊断系统[J].发电设备,2008(1):70 -73.
[11]盛立,刘希玉,高明.一种新的全局优化BP网络[J].计算机应用研究,2006(2):211-212.
[12]周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M].北京:清华大学出版社,2005:70-100.