发明名称 基于BP-AdaBoost神经网络的电子式电能表故障诊断方法
摘要 一种基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,该方法的步骤有:一:输入样本数据;二:网络初始化,即初始化样本数据的分布权值;三:训练BP神经网络弱分类器;四:计算分类误差;五:计算权值;六:权值调整,即根据步骤五的计算结果调整下一轮训练样本的权重值;七:循环判断;八:合成强分类函数;九:分类结果统计与误差率统计。本发明针对电子式电能表的故障自动诊断,能在保证单一BP分类器精度的情况下,通过增加分类器数量,显著提高对故障的分类精度;并且在软硬件的实现上,借助并行计算原理,大大提高训练效率,缩短网络运行时间。它在故障自动检测与诊断技术领域里具有较好的实用价值和广阔的应用前景。
申请公布号 CN102707256A 申请公布日期 2012.10.03
申请号 CN201210209182.4 申请日期 2012.06.20
申请人 北京航空航天大学 发明人 胡薇薇;陈忱;孙宇锋;赵广燕;祁邦彦
分类号 G01R35/04(2006.01)I 主分类号 G01R35/04(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 1.一种基于BP-AdaBoost神经网络的电子式电能表故障诊断方法,其特征在于:该方法具体步骤如下:步骤一:输入样本数据;样本数据是由电子式电能表的典型电路,即单相桥式电路的断路故障数据组成,从故障数据组成的样本空间中选择m组样本数据,并确定神经网络结构为由n个三层BP神经网络组成的复合神经网络;步骤二:网络初始化;初始化样本数据的分布权值D<sub>t</sub>(i),令<img file="FDA00001790128800011.GIF" wi="223" he="105" />其中,i=1,2,…,m,D<sub>t</sub>(i)表示第i个BP神经网络的权值,t为迭代次数,t=1,2,…T,T为最大迭代次数;步骤三:训练BP神经网络弱分类器;将单一BP神经网络作为弱分类器进行训练,共训练n个弱分类器;弱分类器训练过程的具体步骤如下所述:(1)单一BP神经网络参数设置;对三层BP神经网络进行参数设置,参数包括隐层神经元数X、最大学习次数N,输入(输出)神经元数N1,以及学习速率α、β;(2)网络连接权值、阈值设定;用较小的随机数初始化阈值{θ<sub>j</sub>}、{r<sub>k</sub>},权值{w<sub>ij</sub>}、{v<sub>jk</sub>};具体参数含义如下所示:{θ<sub>j</sub>}为隐层神经元阈值集合,其中j=1,2,…,X;{r<sub>k</sub>}为输出层神经元阈值集合,其中k=1,2,…,N<sub>1</sub>;{w<sub>ij</sub>}为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N<sub>1</sub>,j=1,2,…,X;{v<sub>jk</sub>}为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N<sub>1</sub>;(3)取一组样本数据,作为BP神经网络输入层神经元的输入数据{I<sub>i</sub>},其中i=1,2,…,N<sub>1</sub>;(4)求隐层神经元向量,具体公式如下所示:<maths num="0001"><![CDATA[<math><mrow><msub><mi>U</mi><mi>j</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mi>i</mi></munder><msub><mi>w</mi><mi>ij</mi></msub><msub><mi>I</mi><mi>i</mi></msub></mrow></math>]]></maths>H<sub>j</sub>=f(U<sub>i</sub>)U<sub>j</sub>为隐层第j个神经元的输入,其中j=1,2,…,X;w<sub>ij</sub>为输入层第i个神经元到隐层第j个神经元的连接权值,其中i=1,2,…,N<sub>1</sub>,j=1,2,…,X;I<sub>i</sub>为输入层第i个神经元的输入值,其中i=1,2,…,N<sub>1</sub>;H<sub>j</sub>为隐层第j个神经元的输出,其中j=1,2,…,X;f(·)为Sigmoid函数,具体表达式为<img file="FDA00001790128800013.GIF" wi="307" he="107" />(5)计算输出层的各个相关量,计算公式如下所示:<maths num="0002"><![CDATA[<math><mrow><msub><mi>S</mi><mi>k</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mi>j</mi></munder><msub><mi>v</mi><mi>jk</mi></msub><msub><mi>H</mi><mi>j</mi></msub></mrow></math>]]></maths>O<sub>k</sub>=f(S<sub>k</sub>)S<sub>k</sub>为输出层第k个神经元的输入,其中k=1,2,…,N<sub>1</sub>;v<sub>jk</sub>为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N<sub>1</sub>;H<sub>j</sub>为隐层第j个神经元的输出,其中j=1,2,…,X;O<sub>k</sub>为输出层第j个神经元的输出;f(·)为Sigmoid函数,具体表达式为<img file="FDA00001790128800022.GIF" wi="307" he="107" />(6)根据样本数据的期望输出t<sub>k</sub>和输出层的输出O<sub>k</sub>的差值,求出有关输出层神经元的阈值及其连接权值的误差信号δ<sub>k</sub>,求解公式如下所示:δ<sub>k</sub>=(t<sub>k</sub>-O<sub>k</sub>)O<sub>k</sub>(1-O<sub>k</sub>)δ<sub>k</sub>为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N<sub>1</sub>;t<sub>k</sub>为输入样本数据后的期望输出信号,其中k=1,2,…,N<sub>1</sub>;O<sub>k</sub>为输入样本数据后得到的实际输出信号,其中k=1,2,…,N<sub>1</sub>;(7)根据(6)中求出的δ<sub>k</sub>,从隐层到输出层的连接权值v<sub>jk</sub>以及隐层的输出H<sub>j</sub>,求出隐层神经元j的阈值、连接权值的误差信号σ<sub>j</sub>,公式如下:<maths num="0003"><![CDATA[<math><mrow><msub><mi>&sigma;</mi><mi>j</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mi>k</mi></munder><msub><mi>&delta;</mi><mi>k</mi></msub><msub><mi>v</mi><mi>jk</mi></msub><msub><mi>H</mi><mi>j</mi></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>H</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths>σ<sub>j</sub>为隐层第j个神经元的阈值、连接权值的误差信号,其中j=1,2,…,X;δ<sub>k</sub>为输出层第k个神经元的阈值、连接权值的误差信号,其中k=1,2,…,N<sub>1</sub>;v<sub>jk</sub>为隐层第j个神经元到输出层第k个神经元的连接权值,其中j=1,2,…,X,k=1,2,…,N<sub>1</sub>;H<sub>j</sub>为隐层第j个神经元的输出,其中j=1,2,…,X;(8)隐层第j个神经元至输出层第k个神经元的权值v<sub>jk</sub>与输出层神经元j的阈值r<sub>k</sub>的修正公式如下所示:<maths num="0004"><![CDATA[<math><mrow><msubsup><mi>v</mi><mi>jk</mi><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><msubsup><mi>v</mi><mi>jk</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mi>&alpha;</mi><msub><mi>&delta;</mi><mi>k</mi></msub><msub><mi>H</mi><mi>j</mi></msub></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><msubsup><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><msubsup><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>+</mo><msub><mi>&beta;&delta;</mi><mi>k</mi></msub></mrow></math>]]></maths>v<sub>jk</sub><sup>(t+1)</sup>为修正后的隐层第j个神经元至输出层第k个神经元的权值;v<sub>jk</sub><sup>(t)</sup>为修正前的第j个神经元至输出层第k个神经元的权值;δ<sub>k</sub>为输出层第k个神经元的阈值、连接权值的误差信号;α与β为(1)中设置的学习速率,且有0<α,β≤1;r<sub>k</sub><sup>(t+1)</sup>为修正后的输出层第k个神经元的连接阈值;r<sub>k</sub><sup>(t)</sup>为修正前的输出层第k个神经元的连接阈值;(9)输出层神经元i至隐层神经元j的连接权值w<sub>ij</sub>和隐层神经元j的阈值θ<sub>j</sub>的修正公式如下所示:<maths num="0006"><![CDATA[<math><mrow><msubsup><mi>w</mi><mi>ij</mi><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><msubsup><mi>w</mi><mi>ij</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mi>&alpha;</mi><msub><mi>&sigma;</mi><mi>j</mi></msub><msub><mi>I</mi><mi>j</mi></msub></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><msubsup><mi>&theta;</mi><mi>j</mi><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><msubsup><mi>&theta;</mi><mi>j</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></msubsup><mo>+</mo><msub><mi>&beta;&sigma;</mi><mi>j</mi></msub></mrow></math>]]></maths>w<sub>ij</sub><sup>(t+1)</sup>为修正后的输出层第i个神经元至隐层层第j个神经元的权值;w<sub>ij</sub><sup>(t)</sup>为修正前的输出层第i个神经元至隐层层第j个神经元的权值;δ<sub>k</sub>为输出层第k个神经元的阈值、连接权值的误差信号;α与β为(1)中设置的学习速率,且有0<α,β≤1;θ<sub>j</sub><sup>(t+1)</sup>为修正后的隐层第j个神经元的连接阈值;θ<sub>j</sub><sup>(t)</sup>为修正前的隐层第j个神经元的连接阈值;(10)取下一组样本数据;(11)若有样本数据则返回(4)顺序执行;(12)更新学习次数;(13)进行循环判断,若学习次数尚小于(1)中设定的最大学习次数N,则返回到(3)继续执行;若学习次数达到最大学习次数N,则完成对该弱分类器的训练,开始对下一弱分类器进行训练,直至全部n个弱分类器都训练完成;步骤四:计算分类误差e<sub>t</sub>;e<sub>t</sub>由下列公式确定,其中g<sub>t</sub>为网络实际输出的分类结果,y<sub>t</sub>为期望的分类结果:<maths num="0008"><![CDATA[<math><mrow><msub><mi>e</mi><mi>t</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mi>i</mi></munder><msub><mi>D</mi><mi>t</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mi>m</mi><mrow><mo>(</mo><msub><mi>g</mi><mi>t</mi></msub><mo>&NotEqual;</mo><msub><mi>y</mi><mi>t</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths>e<sub>t</sub>为分类误差,t为迭代次数,t=1,2,…T;D<sub>t</sub>(i)表示第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;步骤五:计算权值;根据步骤四中求得的误差e<sub>t</sub>,计算权重a<sub>t</sub>,该值由下式确定:<maths num="0009"><![CDATA[<math><mrow><msub><mi>a</mi><mi>t</mi></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>ln</mi><mrow><mo>(</mo><mfrac><mrow><mn>1</mn><mo>-</mo><msub><mi>e</mi><mi>i</mi></msub></mrow><msub><mi>e</mi><mi>t</mi></msub></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>a<sub>t</sub>为权值,t为迭代次数,t=1,2,…T;e<sub>t</sub>为分类误差,t为迭代次数,t=1,2,…T;步骤六:权值调整;根据步骤五所求的权值a<sub>t</sub>调整下一轮训练样本的权重值,调整公式如下,其中B<sub>t</sub>是归一化因子,目的是在权值比例不变的情况下使分布权值归一化:<maths num="0010"><![CDATA[<math><mrow><msub><mi>D</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msub><mi>D</mi><mi>t</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow><msub><mi>B</mi><mi>t</mi></msub></mfrac><mo>*</mo><mi>exp</mi><mo>[</mo><mo>-</mo><msub><mi>a</mi><mi>t</mi></msub><msub><mi>y</mi><mi>i</mi></msub><msub><mi>g</mi><mi>t</mi></msub><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>]</mo><mo>,</mo><mi>i</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mi>n</mi></mrow></math>]]></maths>D<sub>t+1</sub>(i)表示调整后第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;D<sub>t</sub>(i)表示调整前第i个BP神经网络的权值,其中t为迭代次数,t=1,2,…T;B<sub>t</sub>为归一化因子,且B<sub>t</sub>=||D<sub>t</sub>(i)||,其中t为迭代次数,t=1,2,…T,||||表示求取范数,在后续运用MATLAB编程仿真过程中,可直接调用MATLAB自带的归一化函数premnmx()进行归一化处理;a<sub>t</sub>为序列的权重,t为迭代次数,t=1,2,…T;y<sub>t</sub>(i)为期望的分类结果;g<sub>t</sub>(x<sub>i</sub>)为网络实际的分类结果;步骤七:循环判断;t=t+1,再进行判断;若误差e<sub>t</sub>&lt;0.5,且迭代次数t&lt;T,则返回步骤三,继续执行;否则,向下执行步骤八;步骤八:合成强分类函数;训练T轮后共得到n组弱分类函数f(g<sub>t</sub>,a<sub>t</sub>),将这N组弱分类函数组合可得到强分类函数h(x),组合公式如下所示:<maths num="0011"><![CDATA[<math><mrow><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>sign</mi></mrow><mrow><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>T</mi></munderover><msub><mi>a</mi><mi>t</mi></msub><mo>*</mo><mi>f</mi><mrow><mo>(</mo><msub><mi>g</mi><mi>t</mi></msub><mo>,</mo><msub><mi>a</mi><mi>t</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths>步骤九:分类结果统计与误差率统计;根据上述强分类器对故障数据进行检测,最后完成分类结果统计与误差率统计。
地址 100191 北京市海淀区学院路37号