基于BP-AdaBoost神经网络的电子式电能表故障诊断方法
(一)技术领域:
本发明涉及一种基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,它是一种用AdaBoost算法改进的复合BP神经网络,并应用于电子式电能表的故障监测、诊断中的方法,属于故障自动检测与诊断技术领域。
(二)背景技术:
近年来,随着电力电子技术、集成电路技术等的不断发展进步,电子式电能表的可靠性和维修性要求愈来愈高。然而传统的人工故障查找方法由于缺乏详细的故障状态信息,并依赖于维修人员的经验,要准确且快速地诊断故障是比较困难的,因而导致维修周期延长,影响了电子式电能表在生产和生活中的使用。目前,与传统的人工故障查找方法相对的故障自动检测与诊断技术已成为提高设备可靠性和维修性的有效手段之一。所谓故障诊断就是动态监视电子装置的工作状态,检查是否发生故障,若发现故障,自动诊断故障的部位和性质,并通过外部设备向用户提供故障的部位和性质等信息,或进行故障的隔离,启动备用系统等重构工作。自动故障检测与诊断方法为预知维修创造了条件,越来越多高性能的电力电子产品将故障自动检测与诊断技术应用其中。
目前,现有的故障检测与诊断方法可以分为三类,即基于动态数学模型的方法、基于信号处理的方法和基于知识的方法。基于系统动态数学模型的方法是通过将被诊断对象的可测信息和由模型表达的系统先验信息进行比较以产生残差,并对残差进行分析和处理而实现故障诊断的技术;基于信号处理的方法是从系统的输入输出信号中提取故障信息的方法;基于知识的方法无需系统的定量数学模型,充分利用了专家诊断知识和诊断对象的信息,特别适合于非线性系统和复杂系统的大型系统。其中,基于知识的方法内容最为丰富,也最有生命力,可以细分为基于症状的方法和基于定性模型的方法,主要有专家系统、模糊推理、模式识别、神经网络、多元统计方法、案例推理、基于定性模型的方法、灰色系统理论方法、Petri网方法、粗糙集理论方法、数据融合故障诊断方法、基于Agent故障诊断方法和故障树方法等。在上述众多方法中,选择合适的方法是故障自动检测与诊断成功的关键。
(三)发明内容:
1、目的:本发明的目的是提供基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,通过AdaBoost算法的引入提高BP神经网络对故障的分类精度,提高训练效率,缩短网络运行时间,最终应用于电子式电能表的故障自动检测。
2、技术方案:本发明是通过以下技术方案实现的:
本发明是一种基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,该方法具体步骤如下,流程图如图1“本发明所述方法的流程图”所示:
步骤一:输入样本数据。样本数据是由电子式电能表的典型电路,即单相桥式电路的断路故障数据组成,从故障数据组成的样本空间中选择m组样本数据,并确定神经网络结构为由n个三层BP神经网络组成的复合神经网络。
步骤二:网络初始化。初始化样本数据的分布权值Dt(i),令其中,i=1,2,…,m,Dt(i)表示第i个BP神经网络的权值,t为迭代次数,t=1,2,…T,T为最大迭代次数。
步骤三:训练BP神经网络弱分类器。将单一BP神经网络作为弱分类器进行训练,共训练n个弱分类器。弱分类器训练过程的具体步骤如下(1)至(13)所述,图2“单一BP神经网络弱分类器训练流程图”为步骤三的具体描述。
(1)单一BP神经网络参数设置。对三层BP神经网络进行参数设置,参数包括隐层神经元数X、最大学习次数N,输入(输出)神经元数N1,以及学习速率α、β。
(2)网络连接权值、阈值设定。用较小的随机数初始化阈值{θj}、{rk},权值{wij}、{vjk}。具体参数含义如下所示。
{θj}为隐层神经元阈值集合,其中j=1,2,…,X;
{rk}为输出层神经元阈值集合,其中k=1,2,…,N1;
{wij}为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N1,j=1,2,…,X;
{vjk}为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1。
(3)取一组样本数据,作为BP神经网络输入层神经元的输入数据{Ii},其中i=1,2,…,N1。
(4)求隐层神经元向量,具体公式如下所示。
Hj=f(Ui)
Uj为隐层第j个神经元的输入,其中j=1,2,…,X;
wij为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N1,j=1,2,…,X;
Ii为输入层第i个神经元的输入值,其中i=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X;
f(·)为Sigmoid函数,具体表达式为
(5)计算输出层的各个相关量,计算公式如下所示。
Ok=f(Sk)
Sk为输出层第k个神经元的输入,其中k=1,2,…,N1;
vjk为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X;
Ok为输出层第j个神经元的输出;
f(·)为Sigmoid函数,具体表达式为
(6)根据样本数据的期望输出tk和输出层的输出Ok的差值,求出有关输出层神经元的阈值及其连接权值的误差信号δk,求解公式如下所示。
δk=(tk-Ok)Ok(1-Ok)
δk为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N1;
tk为输入样本数据后的期望输出信号,其中k=1,2,…,N1;
Ok为输入样本数据后得到的实际输出信号,其中k=1,2,…,N1。
(7)根据(6)中求出的δk,从隐层到输出层的连接权值vjk以及隐层的输出Hj,求出隐层神经元j的阈值、连接权值的误差信号σj,公式如下。
σj为隐层第j个神经元的阈值、连接权值的误差信号,其中j=1,2,…,X;
δk为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N1;
vjk为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X。
(8)隐层第j个神经元至输出层第k个神经元的权值vjk与输出层神经元j的阈值rk的修正公式如下所示。
vjk (t+1)为修正后的隐层第j个神经元至输出层第k个神经元的权值;
vjk (t)为修正前的第j个神经元至输出层第k个神经元的权值;
δk为输出层第k个神经元的阈值、连接权值的误差信号;
α与β为(1)中设置的学习速率,且有0<α,β≤1;
rk (t+1)为修正后的输出层第k个神经元的连接阈值;
rk (t)为修正前的输出层第k个神经元的连接阈值。
(9)输出层神经元i至隐层神经元j的连接权值wij和隐层神经元j的阈值θj的修正公式如下所示。
wij (t+1)为修正后的输出层第i个神经元至隐层层第j个神经元的权值;
wij (t)为修正前的输出层第i个神经元至隐层层第j个神经元的权值;
δk为输出层第k个神经元的阈值、连接权值的误差信号;
α与β为(1)中设置的学习速率,且有0<α,β≤1;
θj (t+1)为修正后的隐层第j个神经元的连接阈值;
θj (t)为修正前的隐层第j个神经元的连接阈值。
(10)取下一组样本数据。
(11)若有样本数据则返回(4)顺序执行。
(12)更新学习次数。
(13)进行循环判断,若学习次数尚小于(1)中设定的最大学习次数N,则返回到(3)继续执行;若学习次数达到最大学习次数N,则完成对该弱分类器的训练,开始对下一弱分类器进行训练,直至全部n个弱分类器都训练完成。
步骤四:计算分类误差et。et由下列公式确定,其中gt为网络实际输出的分类结果,yt为期望的分类结果。
et为分类误差,t为迭代次数,t=1,2,…T;
Dt(i)表示第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T。
步骤五:计算权值。根据步骤四中求得的误差et,计算权重at,该值由下式确定。
at为权值,t为迭代次数,t=1,2,…T;
et为分类误差,t为迭代次数,t=1,2,…T。
步骤六:权值调整。根据步骤五所求的权值at调整下一轮训练样本的权重值,调整公式如下,其中Bt是归一化因子,目的是在权值比例不变的情况下使分布权值归一化。
Dt+1(i)表示调整后第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;
Dt(i)表示调整前第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;
Bt为归一化因子,且Bt=||Dt(i)||,其中t为迭代次数,t=1,2,…T,||||表示求取范数,在后续运用MATLAB编程仿真过程中,可直接调用MATLAB自带的归一化函数premnmx()进行归一化处理;
at为序列的权重,t为迭代次数,t=1,2,…T;
yt(i)为期望的分类结果;
gt(xi)为网络实际的分类结果。
步骤七:循环判断。t=t+1,再进行判断。若误差et<0.5,且迭代次数t<T,则返回步骤三,继续执行;否则,向下执行步骤八。
步骤八:合成强分类函数。训练T轮后共得到n组弱分类函数f(gt,at),将这N组弱分类函数组合可得到强分类函数h(x),组合公式如下所示。
步骤九:分类结果统计与误差率统计。根据上述强分类器对故障数据进行检测,最后完成分类结果统计与误差率统计。
3、优点及功效:
本发明针对电子式电能表的故障自动诊断,提出了一种基于AdaBoost算法的复合BP神经网络方法。采用本方法能在保证单一BP分类器精度的情况下,通过增加分类器数量,显著提高对故障的分类精度。并且在软硬件的实现上,可以借助并行计算原理,大大提高训练效率,缩短网络运行时间。
(四)附图说明:
图1本发明所述方法的流程图
图2单一BP神经网络弱分类器训练流程图
图3BP-AdaBoost网络输出结果
图4弱分类器分类错误统计
图中符号说明如下:
i:样本计数器。
N:规定的最大学习次数。
N1:规定的输入(输出)神经元数。
σj:隐层第j个神经元的阈值、连接权值的误差信号,其中j=1,2,…,X;
δk:输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N1;
错误总和:单次运行中,各弱分类器所犯第一类错误和第二类错误之和。
(五)具体实施方式:
本发明所述方法流程图如图1所示。本发明一种基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,其步骤如下:
步骤一:输入样本数据。操作者从电子式电能表的典型电路单相桥式电路的断路故障数据组成的样本空间中随机选择m组样本数据,并确定神经网络结构为由n个含有6个隐层节点的三层BP神经网络组成的复合神经网络。
步骤二:网络初始化。初始化样本数据的分布权值Dt(i),令其中,i=1,2,…,m,Dt(i)表示第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T,T为最大迭代次数。
步骤三:训练BP神经网络弱分类器。将单一BP神经网络作为弱分类器进行训练,共训练n个弱分类器。弱分类器训练过程的具体步骤如下(1)至(13)所述,图2“单一BP神经网络弱分类器训练流程图”为步骤三的具体描述。
(1)单一BP神经网络参数设置。对三层BP神经网络进行参数设置,参数包括隐层神经元数X、最大学习次数N,输入(输出)神经元数N1,以及学习速率α、β。
(2)网络连接权值、阈值设定。用较小的随机数初始化阈值{θj}、{rk},权值{wij}、{vjk}。具体参数含义如下所示。
{θj}为隐层神经元阈值集合,其中j=1,2,…,X;
{rk}为输出层神经元阈值集合,其中k=1,2,…,N1;
{wij}为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N1,j=1,2,…,X;
{vjk}为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1。
(3)取一组样本数据,作为BP神经网络输入层神经元的输入数据{Ii},其中i=1,2,…,N1。
(4)求隐层神经元向量,具体公式如下所示。
Hj=f(Ui)
Uj为隐层第j个神经元的输入,其中j=1,2,…,X;
wij为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N1,j=1,2,…,X;
Ii为输入层第i个神经元的输入值,其中i=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X;
f(·)为Sigmoid函数,具体表达式为
(5)计算输出层的各个相关量,计算公式如下所示。
Ok=f(Sk)
Sk为输出层第k个神经元的输入,其中k=1,2,…,N1;
vjk为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X;
Ok为输出层第j个神经元的输出;
f(·)为Sigmoid函数,具体表达式为
(6)根据样本数据的期望输出tk和输出层的输出Ok的差值,求出有关输出层神经元的阈值及其连接权值的误差信号δk,求解公式如下所示。
δk=(tk-Ok)Ok(1-Ok)
δk为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N1;
tk为输入样本数据后的期望输出信号,其中k=1,2,…,N1;
Ok为输入样本数据后得到的实际输出信号,其中k=1,2,…,N1。
(7)根据(6)中求出的δk,从隐层到输出层的连接权值vjk以及隐层的输出Hj,求出隐层神经元j的阈值、连接权值的误差信号σj,公式如下。
σj为隐层第j个神经元的阈值、连接权值的误差信号,其中j=1,2,…,X;
δk为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N1;
vjk为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N1;
Hj为隐层第j个神经元的输出,其中j=1,2,…,X。
(8)隐层第j个神经元至输出层第k个神经元的权值vjk与输出层神经元j的阈值rk的修正公式如下所示。
vjk (t+1)为修正后的隐层第j个神经元至输出层第k个神经元的权值;
vjk (t)为修正前的第j个神经元至输出层第k个神经元的权值;
δk为输出层第k个神经元的阈值、连接权值的误差信号;
α与β为(1)中设置的学习速率,且有0<α,β≤1;
rk (t+1)为修正后的输出层第k个神经元的连接阈值;
rk (t)为修正前的输出层第k个神经元的连接阈值。
(9)输出层神经元i至隐层神经元j的连接权值wij和隐层神经元j的阈值θj的修正公式如下所示。
wij (t+1)为修正后的输出层第i个神经元至隐层层第j个神经元的权值;
wij (t)为修正前的输出层第i个神经元至隐层层第j个神经元的权值;
δk为输出层第k个神经元的阈值、连接权值的误差信号;
α与β为(1)中设置的学习速率,且有0<α,β≤1;
θj (t+1)为修正后的隐层第j个神经元的连接阈值;
θj (t)为修正前的隐层第j个神经元的连接阈值。
(10)取下一组样本数据。
(11)若仍有样本数据则返回(4)顺序执行。
(12)更新学习次数。
(13)进行循环判断,若学习次数尚小于(1)中设定的最大学习次数N,则返回到(3)继续执行;若学习次数达到最大学习次数N,则完成对该弱分类器的训练,开始对下一弱分类器进行训练,直至全部n个弱分类器训练完成。
步骤四:计算分类误差et。et由下列公式确定,其中gt为网络实际输出的分类结果,yt为期望的分类结果。
et为分类误差,t为迭代次数,t=1,2,…T;
Dt(i)表示第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T。
步骤五:计算权值。根据步骤四中求得的误差et,计算权重at,该值由下式确定。
at为权值,t为迭代次数,t=1,2,…T;
et为分类误差,t为迭代次数,t=1,2,…T。
步骤六:权值调整。根据步骤五所求的权值at调整下一轮训练样本的权重值,调整公式如下,其中Bt是归一化因子,目的是在权值比例不变的情况下使分布权值归一化。
Dt+1(i)表示调整后第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;
Dt(i)表示调整前第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;
Bt为归一化因子,且Bt=||Dt(i)||,其中t为迭代次数,t=1,2,…T,||||表示求取范数,在后续运用MATLAB编程仿真过程中,可直接调用MATLAB自带的归一化函数premnmx()进行归一化处理;
at为序列的权重,t为迭代次数,t=1,2,…T;
yt(i)为期望的分类结果;
gt(xi)为网络实际的分类结果。
步骤七:循环判断。t=t+1,再进行判断。若误差et<0.5,且迭代次数t<T,则返回步骤三,继续执行;否则,向下执行步骤八。
步骤八:合成强分类函数。训练T轮后共得到n组弱分类函数f(gt,at),将这N组弱分类函数组合可得到强分类函数h(x),组合公式如下所示。
步骤九:分类结果统计与误差率统计。根据上述强分类器对电子式电能表的典型代表电路的工作数据进行故障检测,最后完成分类结果统计与误差率统计。BP-AdaBoost网络输出结果即分类结果如图3所示;若分类器的分类错误统计如图4所示。
其中,通过误差率来衡量BP-AdaBoost复合网络的故障检测性能,具体定义如下:
误差率=被误认为故障的正常样本数/正常样本总数
被认为故障的正常样本数,即是单次运行中各弱分类器所犯第一类错误和第二类错误之和。第一类错误是指将正常工作状态错误地判定为故障状态;第二类错误是指将故障状态判定为正常工作状态。
实施案例
现有一单相桥电路作为电子式电能表的典型代表电路,该电路的断路故障运用BP-Adaboost复合神经网络的方法进行学习诊断,共有故障数据样本22组,正常工作数据样本3组。选取故障样本数据中的前15组以及正常工作数据的前2组,共17组数据作为网络的学习训练数据,余下的故障数据和正常工作数据共8组作为最终网络输入的样本数据。
步骤一:输入选定好的8组样本数据,即m=8。选用10个三层BP神经网络作为弱分类器,对样本数据进行自动学习诊断,即n=10。由于本实例所采用的样本数量较少,因此这里可以考虑较大的隐层节点数,此处选择6个节点组成诊断网络的隐层,即X=6。
步骤二:初始化样本数据的分布权值Dt(i),令其中,i=1,2,…,8,Dt(i)表示第i个BP神经网络的权值,其中t为迭代次数,t=1,2,...6。
步骤三-步骤八:在MATLAB R2009a平台下,按图2所示流程进行编程,实现步骤三至步骤八的仿真运行。运行结果即BP-AdaBoost网络输出的分类结果如图3所示,其中纵坐标“1”表示分类结果为正常工作状态,“-1”表示分类结果为故障状态。
步骤九:分类结果统计与误差率统计。根据上述分类结果进行结果统计与误差率统计,各个单一弱分类器训练单词运行中所犯分类错误统计如图4所示。仿真实验最终通过误差率来衡量BP-AdaBoost复合网络的故障检测性能,具体定义如下:
误差率=被误认为故障的正常样本数/正常样本总数
本实例仿真运行后,强分类器与弱分类器的误差率比较如下表1所示。
表格1强分类器与弱分类器误差率比较
强分类器分类误差率 |
弱分类器分类误差率 |
0.125 |
0.225 |
从仿真运行结果可以看出,在采用AdaBoost整合优化BP神经网络后,网络分类预计的精度得到了明显提高。
本发明不局限于前述的具体实施方式,还可应用于检测电子式电能表典型代表电路的其他类型故障。