概率神经网络的分类预测——基于PNN的变压器故障诊断摘要:电力变压器故障诊断对变压器、电力系统的安全运行有着十分重要的意义,本文介绍了基于概率故障神经网络(PNN)在变压器故障诊断中的应用。针对概率神经网络(PNN)模型强大的非线性分类能力,PNN能够很好地对变压器故障进行分类;文章通过对PNN神经网络的结构和原理的分析,应用PNN概率神经网络方法对变压器故障进行诊断。关键词:变压器;概率神经网络;故障诊断0引言变压器是电力系统中的一个重要设备,由于它对电能的经济传输、灵活分配和安全使用具有重要意义,因而它的维护检修就显得极为重要,特别是通过对其进行故障诊断为其正常运行提供可靠的依据。故障诊断技术是借助于现代测试、监控和计算机分析等手段,研究设备在运行中或相对静止条件下的状态信息,分析设备的技术状态,诊断其故障的性质和起因,并预测故障趋势,进而确定必要对策的一种方法。从本质上讲,故障诊断就是模式识别问题。神经网络的出现,为故障诊断问题提供了一种新的解决途径,特别是对于实际中难以解决的数学模型的复杂系统,神经网络更显示出其独特的作用。目前,在故障诊断方面虽然BP网络应用得最为广泛,但其网络层数及每层神经元的个数不易确定,而且在训练过程中网络容易陷入局部最小点。本文引入一种新的人工神经网络模型——概率神经网络,使用该网络进行变压器的故障诊断,可以获得令人满意的故障诊断率,并能有效地克服BP神经网络的缺点。本文采用概率神经网络(probabilisticneuralnetworks)对变压器故障进行诊断。概率神经网络结构简单、训练简洁,利用概率神经网络模型的强大的非线性分类能力,将故障样本空间映射到故障模式空间中,可形成一个具有较强容错能力和结构自适应能力的诊断网络系统,从而提高故障诊断的准确率。在实际应用中,尤其是在解决分类问题的应用中,它的优势在于用线性学习算法来完成非线性学习算法所做的工作,同时保持非线性算法的高精度等特性。1概率神经网络1.1PNN神经网络的基本结构.概率神经网络是由径向基函数网络发展而来的一种前馈型神经网络,其理论依据是贝叶斯最小风险准则(即贝叶斯决策理论),PNN作为径向基网络的一种,适合于模式分类。当分布密度SPREAD的值接近于0时,它构成最邻分类器;当SPREAD的值较大时它构成对几个训练样本的临近分类器。PNN的层次模型,由输入层、模式层、求和层、输出层共4层组成。输入层接受来自训练样本的值,将特征向量传递给网络,其神经元数目和样本矢量的维数相等。模式层计算输入特征向量与训练集中各个模式的匹配关系,模式层神经元的个数等于各个类别训练样本数之和,该层每个模式单元的输出为:TTiii2()()(,)exp[]2XWXWfXW(1)式中:Wi为输入层到模式层连接的权值;δ为平滑因子,它对分类起着至关重要的作用。第3层是求和层,是将属于某类的概率累计,按式1计算,从而得到故障模式的估计概率密度函数。每一类只有一个求和层单元,求和层单元与只属于自己类的模式层单元相连接,而与模式层中的其他单元没有连接。因此求和层单元简单地将属于自己类的模式层单元的输出相加,而与属于其他类别的模式层单元的输出无关,求和层单元的输出与各类基于内核的概率密度的估计成正比,通过输出层的归一化处理,就能得到各类的概率估计。PNN的基本结构如图1所示。图1PNN的基本结构1.2PNN神经网络的工作原理基于PNN的故障诊断方法是概率统计学中被广泛接受的一种决策方法,可描述为:假设有两种已知的故障模式θA、θB,对于要判断的故障特征样本X=(x1,x2,…xn):输入向量输入层模式层求和层输出层若hAlAfA(X)hBlBfB(X),则X∈θA;若hAlAfA(X)<hBlBfB(X),则X∈θB;式中:hA、hB为故障模式的θA、θB先验概率(hA=NA/N,hB=NB/N);NA、NB为故障模式的θA、θB的训练样本数;N为训练样本总数;lA为将本属于θA的故障特征样本X错误的划分到模式θB的代价因子;lB为将本属于θB的故障特征样本X错误的划分到模式θA的代价因子;fA,fB为故障模式θA、θB的概率密度函数(PDF,ProbabilityDensityFunction),通常PDF不能精确地获得,只能根据现有的故障特征样本求其统计值。2变压器故障诊断基于概率神经网络的故障诊断方法实质上是利用概率神经网络模型的强大的非线性分析能力,将故障样本空间映射到故障模式空间中,从而形成一个具有较强容错能力和结构自适应能力的诊断网络系统。变压器油中溶解气体分析是变压器内部故障诊断的重要手段,油中溶解气体分析方法能够很好的反映变压器的潜伏性故障,而在各种诊断方法中,以改良的三比值法的判断准确率最高。所以,选择油中溶解气体含量的三对比值最为神经网络的输入特征向量,即CH4/H2、C2H2/C2H4和C2H4/C2H6这三对比值,变压器的故障类型作为输出特征向量,运用概率神经网络进行学习,通过学习后的网络对气体成分含量比例的实验结果可以正确判断故障产生的原因,PNN网络设计流程如图2所示。图2PNN网络设计流程在对变压器的故障识别时,变压器可能的故障模式分为5种,如表1所示。收集数据创建PNN网络根据已有故障数据训练网络效果测试结果分析表1故障模式分类故障模式对应描述中低温过热10000高温过热01000低能放电00100高能放电00010正常工作000013PNN在变压器故障诊断中的应用利用概率神经网络对变压器故障进行分析诊断时,变压器一种工作状态下对应的测量参数作为一个样本,所有样本构成了样本空间,作为概率神经网络的输入向量,将变压器故障类型作为目标向量,求和层与输出层的神经元个数为5,对应5种故障模式。提取33组数据,将1-23组数据进行PNN网络学习训练,其中5组数据如表2所示。表2部分训练样本数据样本序号CH4/H2C2H2/C2H4C2H4/C2H6故障类型51.1880.20007.940560.1201.16016.820273.9500.4304.180384.1104.4005.590390.2420.1691.8454首先载入数据,选取训练数据和测试数据,将期望类别指针转换为向量。使用MatlabR2010a神经网络工具箱中的newpnn()函数建立PNN,代码为:net=newpnn(p_train,t_train,Spread),其中p_train为输入向量,t_train为目标向量,Spread为径向基函数的分布密度,取值1.5。再将训练数据回代,查看网络的分类效果,最后通过作图观察PNN网络训练后的效果和误差,如图3所示。图3训练后训练数据网络的分类效果图训练后,将训练数据作为输入代入PNN网络中,只有两个样本判断错误。将其余10组进行网络未知数据的预测,其中5组数据如表3所示。预测得到Y2c=[5145334331],如图4所示。表3部分测试样本数据测试样本序号CH4/H2C2H2/C2H4C2H4/C2H6故障类型10.4160.38912.464521.2310.7600.765130.0243.8922.498340.0250.9668.279550.0085.1079.6673图4预测数据的分类效果图验证预测样本,只有两个样本判断错误,即两种变压器的故障类型判断错误,可得出基于PNN的变压器故障诊断方法可行的,可用来进行更多样本的预测。4结论本文给出了基于概率神经网络的故障诊断方法,在对油中溶解气体分析法进行深入分析后,以改良三比值法为基础,建立基于概率神经网络的故障诊断模型。概率神经网络PNN是一种结构简单、训练简洁、应用相当广泛的人工神经网络,它的优势在于用线性学习算法来完成以往非线性学习算法所做的工作,同时又能保持非线性算法的高精度特性。随着故障知识的逐渐积累,网络可以不断扩张而进一步提高诊断准确率。附录:MATLAB程序%%清空环境变量clc;clearallcloseallnntwarnoff;warningoff;%%数据载入loaddata%%选取训练数据和测试数据Train=data(1:23,:);Test=data(24:end,:);p_train=Train(:,1:3)';t_train=Train(:,4)';p_test=Test(:,1:3)';t_test=Test(:,4)';%%将期望类别转换为向量t_train=ind2vec(t_train);t_train_temp=Train(:,4)';%%使用newpnn函数建立PNNSPREAD选取为1.5Spread=1.5;net=newpnn(p_train,t_train,Spread)%%训练数据回代查看网络的分类效果%Sim函数进行网络预测Y=sim(net,p_train);%将网络输出向量转换为指针Yc=vec2ind(Y);%%通过作图观察网络对训练数据分类效果figure(1)subplot(1,2,1)stem(1:length(Yc),Yc,'bo')holdonstem(1:length(Yc),t_train_temp,'r*')title('PNN网络训练后的效果')xlabel('样本编号')ylabel('分类结果')set(gca,'Ytick',[1:5])subplot(1,2,2)H=Yc-t_train_temp;stem(H)title('PNN网络训练后的误差图')xlabel('样本编号')%%网络预测未知数据效果Y2=sim(net,p_test);Y2c=vec2ind(Y2)figure(2)stem(1:length(Y2c),Y2c,'b^')holdonstem(1:length(Y2c),t_test,'r*')title('PNN网络的预测效果')xlabel('预测样本编号')ylabel('分类结果')set(gca,'Ytick',[1:5])