基于神经网络的柴油机故障诊断的研究一、主体1.1人工神经网络1.1.1人工神经网络的概述人工神经网络(ArtificialNeuralNetworks,ANNs),也简称为神经网络(NNs),是模拟生物神经网络进行信息处理的一种数学模型。它以对大脑的生理研究成果为基础,其目的在于模拟大脑的某些机理与机制,实现一些特定的功能。它不但具有处理数值数据的一般计算能力,而且还具有处理知识的思维、学习和记忆能力[1]。1.1.2人工神经网络的特点神经网络的基本属性反映了神经网络特点,主要表现在:1.并行分布式处理神经网络具有高度的并行结构和并行实现能力,具有高速寻找优化解的方法,能够发挥计算机的高速运算能力,可很快找到优化解。2.非线性处理人脑的思维是非线性的,故神经网络模拟人的思维也应是非线性的。这一特性有助于处理非线性问题。3.具有自学习功能通过对过去的历史数据的,训练出一个具有归纳全部数据的特定的神经网络,自学习功能对于预测有特别重要的意义。1.2BP网络的设计1.2.1BP网络层数的选取(1)输入、输出层的设计输入的神经元可以根据需要求解的问题和数据表示方式确定。在故障诊断中,输入层神经元个数一般等于每个样本中包含的特征值的个数。输出层的维数可根据设计者的要求确定,在故障诊断中,如果将BP网络用作分类器,类别模式一共有m个,则输出层神经元的个数为m或log2m。(2)隐层的设计对于BP网络,有一个非常重要的定理:即对于任何在闭区间内的一个连续函数都可以用单层的BP网络逼近,因而一个三层的BP网络就可以完成任意的n维到m维的映射。隐层的神经元个数选择是一个较为复杂的问题,往往需要设计者的经验和多次试验来确定,因而不存在一个理想的解析式来表示。隐层单元的数目与问题的要求、输入/输出单元的数目都有着直接关系。隐层单元个数太多会导致学习时间过长、误差不一定最佳,也会导致容错性差、因此一定存在一个最佳的隐层单元数。以下三个公式可作为选择最佳隐层单元数时的参考公式:1)n2=2n1+1,其中n1是输入层神经元数,n2是隐层神经元数。2)amnn1,其中,m是输出神经元数,n是输入神经元数,a是[1,10]之间的常数。3)n1=log2n,其中n是输入神经元数。其他确定隐层单元数的方法为:首先是隐层单元的数目可变,或者放入足够多的隐层单元,通过学习将那些不起作用的隐层单元剔除,直到不可收缩为止[3]。1.2.2初始值的选取由于系统是非线性的,初始值对于学习能否达到局部最小和是否能够收敛的结果关系很大。一个重要的要求是:初始权值在输入累加时使每一个神经元的状态值接近于零,权值一般取随机数,要比较小。输入样本也同样希望进行归一化处理,使那些比较大的输入仍然落在传递函数梯度大的地方。1.3RBF的创建与学习过程当RBF网络的径向基层采用高斯函数时,网络的训练从理论上应可以确定高斯函数的数学期望、方差及隐层和输出层神经元的权值与阈值。1.newrbe创建径向基网络的过程以newrbe创建径向基网络的步骤:1)径向基神经元数目等于输入样本数,其权值等于输入向量的转置:TPIW(1-1)所以径向基神经元的阈值为spreadb/)5log(.21(1-2)式中:spread为径向基函数的扩展系数,默认值为1.0。合理选择spread是很重要的,其值应该足够大,使径向基神经元能够对输入向量所覆盖的区间都产生响应,但也不要求大到所有的径向基神经元都如此,只要部分径向基神经元能够对输入向量所覆盖的区间产生响应就足够了。spread的值越大,其输出结果越光滑;若在设计网络时,出现“Rankdeficient”警告时,应考虑减少spread的值,重新进行设计。2)以径向基神经元的输出作为线性网络层神经元的输入,确定线性层神经元的权值和阈值,使之满足TonesAbW;12;1,2(1-3)2.newrb创建径向基网络的过程当以newrb创建径向基网络时,开始是没有径向基神经元的,可通过以下步骤,逐渐增加径向基神经元的数目:1)以所有的输入样本对网络进行仿真。2)找到误差最大的一个输入样本。3)增加一个径向基神经元,其权值等于该样本输入向量的转置;阈值spreadb/)5log(.21,spread的选择与newrb一样。4)以径向基神经元输出的点积作为线性网络层神经元的输入,重新设计线性网络层,使其误差最小。5)当均方误差未达到规定的误差性能指标,且神经元的数目未达到规定的上限值时,重复以上步骤,直至网络的均方误差达到规定的误差性能指标,或神经元的数目达到规定的上限值为止。可以看出,创建径向基网络时,newrb是逐渐增加径向基神经元数的,所以可以获得比newrb更小规模的径向基网络。1.4应用BP网络和RBF对柴油机燃油系统进行故障诊断1.4.1神经网络仿真模型的建立下面结构框图为基于神经网络模式识别功能的故障诊断系统结构:图故障诊断系统结构图中,基于神经网络的诊断过程分为两步。首先,基于一定数量的训练样本集(通常称为“征兆——故障”数据集)对神经网络进行训练,得到期望的诊断网络;其次,根据当前诊断输入对系统进行诊断,诊断的过程即为利用神经网络进行前向计算的过程。在学习和诊断之前,通常需要对诊断原始数据和训练样本数据进行适当地处理,包括预处理和特征选取、提取等,目的是为诊断网络提供合适的诊断输入和训练样本。此外,尽管神经网络和传统的故障诊断是两种不同的诊断方法,但两者是紧密联系在一起的[6]。诊断原始数据训练样本数据预处理预处理特征选取特征选取学习训练诊断神经网络诊断结果