机械系统在工业实际运行中面临故障样本获取困难的问题,采集到的数据往往呈现明显的类别不平衡特征。相关研究成果以“Highly imbalanced fault diagnosis of mechanical systems based on wavelet packet distortion and convolutional neural networks”为题发表在学术期刊《Advanced Engineering Informatics》上。该研究提出了由小波包畸变数据扩增与一维卷积神经网络分类构成的技术方法,旨在实现故障类样本与健康类样本的平衡训练及状态判别。
一、 振动信号采集与样本组织
诊断流程首先从监测系统的时域振动信号采集展开:
- 原始时序分段:传感器采集到的连续振动信号被等长截断为固定数据点长度的样本序列(如单样本长度为 128 个采样点)。
- 不平衡数据集设置:将样本划分为健康状态与多种具体故障模式。在训练集配置中,健康样本数量充足,而各故障类别仅保留极少量的样本作为训练初始输入;其余未参与训练的样本归入测试集用于算法验证。
二、 小波包畸变数据扩增机制
为了扩充少数类故障样本的规模并增加训练数据的多样性,该方法采用在频域子带实施受控扰动的小波包畸变流程。整个扩增过程包含正变换分解、系数非线性畸变、逆变换重构以及幅值校正四个环节:

图1:小波包畸变数据扩增技术步骤与流程
离散小波包分解:
设有限长脉冲响应滤波器对为 $(h, g)$,长度为 $L$。根据 Mallat 递归算法,层级 $j$ 的第 $i$ 组小波包系数 $w{j,i}$ 通过下式递归计算:
$$w_{j+1, 2i}[k] = \sum_{l=0}^{L-1} w_{j,i}[2k-l] h[l]$$
$$w_{j+1, 2i+1}[k] = \sum_{l=0}^{L-1} w_{j,i}[2k-l] g[l]$$
其中 $w{0,0}$ 为输入的原始时域振动信号,$i = 0, \dots, 2^j - 1$。信号经分解后形成位于不同频带的节点系数集合。系数非线性畸变:
在分解得到的各节点中,算法随机挑选其中某一个节点的系数序列 $w$ 进行非线性变换,其余节点系数保持原值不变。畸变计算公式为:
$$\tilde{w} = \text{sign}(w) \cdot |w|^d$$
式中 $d$ 为从预设数值区间(如包含 1.0 的特定范围)中随机抽取的畸变系数。由于采用保持符号不变的幂运算,该操作在改变系数值的同时保留了原信号的主频带结构与相位方向。

图2:正弦信号及其不同畸变系数下的波形对比
逆小波包重构:
将经过畸变处理的节点系数 $\tilde{w}$ 与未经改动的其余节点系数重新拼接,采用重构滤波器组 $(\tilde{h}, \tilde{g})$ 进行离散小波包逆变换,还原得到时域信号序列 $v$:
$$v_{j,i}[k] = \sum_{l=0}^{L-1} \tilde{w}_{j+1,2i}[(k-l)/2] \tilde{h}[l] + \sum_{l=0}^{L-1} \tilde{w}_{j+1,2i+1}[(k-l)/2] \tilde{g}[l]$$信号标准差校正:
针对重构后的时序信号,计算其标准差并校正缩放,使其与对应原始样本的标准差严格保持一致,确保扩增信号在整体振动能量级别上与原始信号相符。
三、 卷积神经网络架构设计
分类模型采用一维卷积神经网络结构,直接将时域振动序列映射至健康与故障类别空间:

图3:一维卷积神经网络结构示意图
- 卷积层与激活单元:
卷积层利用局部感受野和权值共享提取多通道局部特征:
$$x_j^m = f\left(\sum_{i \in M_j} x_i^{m-1} * c_{ij}^m + b_j^m\right)$$
式中 $c_{ij}^m$ 为卷积核,$b_j^m$ 为偏置向量,$*$ 为卷积运算。激活函数采用修正线性单元(ReLU),公式为 $x \leftarrow \max(x, 0)$,用以引入非线性映射。 - 批归一化(Batch Normalization):
在卷积层与激活函数之间插入批归一化操作,利用小批量样本的均值 $\mu$ 与方差 $\sigma^2$ 对特征进行标准化变换,并通过可学习参数 $\gamma$ 与 $\beta$ 进行线性调整,以维持层间特征分布的数值稳定性:
$$\hat{x}_n = \frac{x_n - \mu}{\sqrt{\sigma^2 + \epsilon}}, \quad y_n = \beta + \gamma \hat{x}_n$$ - 全局平均池化(Global Average Pooling)与分类层:
网络末端采用全局平均池化取代多层密集全连接隐藏层,对每个特征通道直接计算空间维度的平均值,以压缩参数维度。池化特征输入至全连接层并通过 Softmax 函数计算属于各健康状态的概率分布:
$$p_i = \frac{e^{y_i}}{\sum_{j=1}^{N_{\text{class}}} e^{y_j}}$$
损失函数采用交叉熵损失(Cross-Entropy Loss):
$$L = -\sum_{j=1}^{N_{\text{class}}} t_j \log(p_j)$$
四、 动态扩增与交替迭代训练流程
在整体训练实现中,数据扩增策略以动态更新的方式嵌入至网络优化过程中,具体执行步骤如下:

图4:不平衡故障诊断算法整体执行流程
- 初始类别配平:以健康类样本数量为基准,利用小波包畸变方法对每一个故障类别的微量样本进行重构生成,使每个故障类别的样本数扩充至与健康样本等量,形成平衡的批次训练集。
- 单周期参数更新:将构建的平衡数据输入卷积神经网络,通过反向传播算法计算梯度并更新网络参数,完成 1 个 Epoch 的训练迭代。
- 终止条件判别:
- 若模型在当前训练集上的准确率达到 100%,或训练轮次累计达到预设的最大代数(如 200 代),则终止训练过程。
- 若未触发终止条件,算法将丢弃上一轮生成的故障样本,重新对原始故障样本执行小波包分解、随机畸变与重构,生成全新的一组扩增数据替换旧数据,随后继续进行下一个 Epoch 的训练。动态轮换样本有助于避免模型对固定的合成数据产生过拟合。
- 模型固化与状态推理:训练结束后,固化神经网络的权重与偏置参数,将待测试的时域振动信号直接输入网络,输出最终的状态分类结果。
原文出处: Highly imbalanced fault diagnosis of mechanical systems based on wavelet packet distortion and convolutional neural networks
出版期刊: Advanced Engineering Informatics. 2022, 51: 101535.
DOI: 10.1016/j.aei.2022.101535
原文链接:https://www.sciencedirect.com/science/article/pii/S1474034622000118