【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障

0 引言

  最近朋友喊帮忙做一个仿真程序,遂接触了用小波包变换结合BP神经网络的方法来分析发电机齿轮箱故障类型,查阅了几篇文献后,觉得这种方法很是巧妙,竟然能够分析出齿轮箱发生了哪种故障。经过仔细的研究后,对该方法有了更深刻的理解,这里把文章中没有讲到的一些细节做一个简单分享。

1 小波包变换

  在分析现实工程中的故障信号时,往往采用傅里叶变换、小波变换小波包变换来分析。小波变换被认为是傅里叶变换的一次突破,而小波包变换又是小波变换的一次提升。小波包分析能够实现对信号各频段的划分,对低频和高频信号都能分析,能显著地提高信号的分辨率。应用小波包分析信号的流程图如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第1张图片

1.1 小波包分解

  小波包变换能够将信号分解为近似信号和细节信号,而在下一层分解中再次将两种信号进行进一步分解,经过 N N N 层分解后,能够得到 2 N 2^N 2N 个频段信号,小波包分解树如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第2张图片

其中顶层节点(0,0)代表原始信号,最底层的节点则代表最终分解后得到的各频段信号,并设 X i , j X_{i,j} Xi,j 为第 i i i 层第 j j j 个节点的分解系数。 i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n j = 1 , 2 , . . . , 2 n − 1 j=1,2,...,2^n-1 j=1,2,...,2n1 n n n为分解的层数。

1.2 小波包信号重构

  由1.1小节得到的 2 N 2^N 2N 个小波包分解系数 X i , j X_{i,j} Xi,j ,再对这些分解系数分别进行重构,进而得到重构后的信号 S i , j S_{i,j} Si,j 。则原始信号就可由重构后的信号进行表示
S = S i , 0 + S i , 1 + S i , 2 + ⋯ S i , 2 i − 1 S=S_{i,0}+S_{i,1}+S_{i,2}+\cdots S_{i,2^i-1} S=Si,0+Si,1+Si,2+Si,2i1

1.3 求解频带能量并归一化

  得到重构信号 S i , j S_{i,j} Si,j 后,可得到各个重构信号对应的频段能量值。设与 S i , j S_{i,j} Si,j 相对应频段的能量为
E i , j = ∫ ∣ S i , j ∣ 2 d t = ∑ j = 1 2 i − 1 ∣ X i , j ∣ 2 E_{i,j}=\int{\left| S_{i,j} \right|^2dt}=\sum_{j=1}^{2^i-1}{\left| X_{i,j} \right|^2} Ei,j=Si,j2dt=j=12i1Xi,j2根据上式可依次求得各个频段的能量值,将这些能量值组成一个向量 T T T ,且单位化后可得到
E j = E i , j ∑ j = 0 2 i − 1 ∣ E i , j ∣ 2 T = [ E 0 , E 1 , E 2 , . . . , E 2 i − 1 ] E_j=\frac{E_{i,j}}{\sqrt{\sum_{j=0}^{2^i-1}{\left| E_{i,j} \right|^2}}} \\ \boldsymbol{T}=\left[ E_0, E_1, E_2,...,E_{2^i-1} \right] Ej=j=02i1Ei,j2 Ei,jT=[E0,E1,E2,...,E2i1]  通常来说,小波包分解层数一般设为3层,也就是将初始信号的频率范围划分为8个部分,再分别对各部分的信号进行重构,最终得到单位化后的特征向量 T T T

1.4 利用matlab进行小波包变换

  matlab自带了小波包变换的一系列函数,包括wpdecwpfrqordwprcoef等,函数的具体使用可查看官方帮助文档。


2 BP神经网络

  BP神经网络的核心算法为BP算法,它是一种按照误差逆传播训练的多层前馈网络。BP网络由输入层、隐含层、输出层组成,其是一种监督学习算法,通过给定的输入输出样本,根据误差不断调整权值进行训练,最终达到和输出数据尽量吻合的结果。由于其具有较强的并行分布式处理能力和自学习能力,在故障检测中得到了广泛的应用。BP神经网络结构如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第3张图片

2.1 各层神经元个数分析

  输入层神经元个数:经过小波包分析和特征值提取的特征向量作为BP网络的输入向量,由小波包分解确定的特征值的向量维数作为BP网络的输入个数,即输入个数为 2 N 2^N 2N 个。

  隐含层神经元个数:隐含层神经元的个数可根据经验公式选择,如 l = 2 m + 1 l=2m+1 l=2m+1,其中 m m m 代表输入层的神经元个数。

  输出层神经元个数:输出层神经网络的输出个数为故障类型个数。例如,当需要识别的故障类型为 n n n 个时,神经网络的输出向量则为 y = [ y 1 , y 2 , . . . , y n ] T \boldsymbol{y}=\left[ y_1, y_2,..., y_n \right] ^{\mathrm{T}} y=[y1,y2,...,yn]T ,向量 y \boldsymbol{y} y 中最接近1的元素则对应了故障发生的类型。

  确定好神经网络的结构后,即可对神经网络进行训练,训练好后的神经网络此时具备了记忆能力和预测能力,将测试数据输入到BP神经网络中,可对故障类型进行预测,神经网络的训练流程如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第4张图片

2.2 利用matlab工具箱训练神经网络

  matlab也自带了BP神经网络的工具箱,即Neural Net Fitting工具箱,利用此工具箱可设置神经网络的输入输出训练样本、神经元的个数、训练算法等,其可直接进行样本的训练,当训练样本的均方误差逐渐收敛时便自动停止迭代,此时神经网络便训练完成了,就可用来预测数据。

3 仿真分析

  为了验证本文方法在齿轮箱故障识别中的可靠性,采用matlab软件进行仿真,用实验数据和数据预测来验证该方法。结合小波包和BP神经网络的实验流程如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第5张图片

  原始数据来源于凯斯西储大学轴承数据中心,通过在电机驱动机械系统上安装一个加速度传感器来采集振动信号,采样频率为12 kHz。本次实验中,数据集A、B、C分别包含了17500个训练样本和2500个测试样本。分别采集数据集A、B、C在负载为1、2、3 hp下的样本,每种数据集均包含10种不同的故障条件。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第6张图片

  利用小波包对信号进行分解以提取有效信号特征,可得到原始信号对应的特征向量。在本次研究实验中,故障类型个数为10个,用二进制状态表示BP神经网络输出向量的样本类别,“1”表示该样本类型起作用,向量 [ 1 0 1 × 9 ] T \left[ \begin{matrix} 1& \mathbf{0}_{1\times 9}\\ \end{matrix} \right] ^{\mathrm{T}} [101×9]T 表示正常,向量 [ 0 1 0 1 × 8 ] T \left[ \begin{matrix} 0& 1& \mathbf{0}_{1\times 8}\\ \end{matrix} \right] ^{\mathrm{T}} [0101×8]T 表示故障类型为直径0.007mm的球故障,向量 [ 0 1 × 2 1 0 1 × 7    ] T \left[ \begin{matrix} \mathbf{0}_{1\times 2}& 1& \mathbf{0}_{1\times 7}\\ \end{matrix}\,\, \right] ^{\mathrm{T}} [01×2101×7]T 表示故障类型为直径0.014mm的球故障,向量 [ 0 1 × 3 1 0 1 × 6    ] T \left[ \begin{matrix} \mathbf{0}_{1\times 3}& 1& \mathbf{0}_{1\times 6}\\ \end{matrix}\,\, \right] ^{\mathrm{T}} [01×3101×6]T 表示故障类型为直径0.021mm的球故障,向量 [ 0 1 × 4 1 0 1 × 5    ] T \left[ \begin{matrix} \mathbf{0}_{1\times 4}& 1& \mathbf{0}_{1\times 5}\\ \end{matrix}\,\, \right] ^{\mathrm{T}} [01×4101×5]T 表示故障类型为直径0.007mm的内圈故障,依此类推。因此,神经网络输出层的个数设置为10,神经网络隐含层的神经元个数设为17,训练算法采用贝叶斯正则化训练。其中,正常工况和0.007mm的各类故障时域波形如下图所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第7张图片 【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第8张图片

  对原始数据进行分析,原始数据经小波包分解后可得到多组特征向量,将其作为神经网络的输入值,其中,80%的数据作为训练样本,20%的数据作为测试样本。训练时,最大训练次数设置为1000次,神经网络的训练结果如下图所示,其中,横坐标代表训练次数,纵坐标代表均方误差,当训练次数达到643次时,均方误差为0.01238,此时误差已经收敛至较小误差内,神经网络模型建立完成。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第9张图片

  任选4组样本数据作为验证样本集,将样本集数据输入到训练好后的BP神经网络中,每组样本均对应着某一个故障模型,将神经网络的实际输出结果和标准信号进行对比,比较结果如下表所示。

【小波神经网络】用小波包变换+BP神经网络诊断齿轮箱故障_第10张图片

结论

  在分析网络的实际输出向量时,分量最大的值表明了对应的故障类型。从表2中可以看出,BP神经网络的实际输出和期望输出是比较一致的,其误差在可接受的范围内,预测准确率能达到95%以上,这说明训练好的神经网络具有很好的泛化能力,能够准确地对故障模式进行预测。
  4组案例信号的分析都对齿轮箱状态信号作出了正确地分类,与实验设置的故障状态类型保持一致。由此可得,小波包神经网络能够对齿轮箱故障类型进行预测。

参考文献

  1. 王皓,周峰. 基于小波包和BP神经网络的风机齿轮箱故障诊断[J]. 噪声与振动控制,2015(2):154-159. DOI:10.3969/j.issn.1006-1335.2015.02.035.
  2. 刘漫,段勇强,樊姗,等. 基于小波降噪和BP神经网络的风力发电机组 齿轮箱故障诊断研究[J]. 湖北民族学院学报(自然科学版),2019,37(1):116-120. DOI:10.13501/j.cnki.42-1569/n.2019.03.025.
  3. 刘志刚,赵晓燕,张涛,等. 基于小波包-神经网络的电厂发电机组故障诊断研究[J]. 机械传动,2018,42(8):179-182. DOI:10.16578/j.issn.1004.2539.2018.08.035.

你可能感兴趣的:(神经网络,信号处理)