极度不平衡下的机械系统故障诊断:小波包扭曲 + CNN,一个漂亮的数据增强解法

读到一篇发表在Advanced Engineering Informatics上的论文,讨论的是机械系统故障诊断中一个非常现实的问题,极度不平衡数据下的故障分类。文章设定了一个相当苛刻的场景:健康样本有400个,每个故障类别却只有5个训练样本。在这种80:1的不平衡比例下,怎么让CNN还能正常工作?

读完之后觉得这个思路很有意思,作者没有盲目堆叠复杂模型,而是回到信号本身,利用小波包分解在频域做文章,设计了一种叫"小波包扭曲"(Wavelet Packet Distortion)的数据增强方法。这篇博客是我的学习笔记,尽量用比较直白的方式把论文的核心思想梳理一遍。

论文信息

标题:Highly imbalanced fault diagnosis of mechanical systems based on wavelet packet distortion and convolutional neural networks

作者:Minghang Zhao, Xuyun Fu, Yongjian Zhang, Linghui Meng, Baoping Tang

期刊:Advanced Engineering Informatics (AEI)

年份:2022

DOI:10.1016/j.aei.2022.101535

一、这个研究要解决什么问题?

1.1 为什么机械故障诊断很重要?

航空液压泵是飞机液压系统的"心脏",起落架收放、舵面操纵、刹车系统都靠它提供动力。论文里提到,这类设备在恶劣环境下同时包含旋转和往复运动部件,故障风险较高。一旦在飞行中出现问题,后果直接关系到飞行安全。

所以,在早期阶段发现故障征兆,是个很有实际价值的研究方向。

1.2 现有方法各有各的难处

论文把已有的故障诊断方法分成了三大类:

第一类:基于物理模型的方法

这类方法根据物理规律建立系统的故障或退化模型,通过模型预测行为。比如用改进的啮合刚度计算模型来模拟齿轮裂纹状态。但问题是,大型机械系统的结构太复杂了,物理模型很难做到真正精确。论文里说,这类方法大多只适用于轴承、齿轮这类简单部件,对整机级别的系统就力不从心了。

第二类:基于信号分析的方法

这类方法试图从监测信号中捕捉故障特征,比如用Hilbert解调、倒谱分析、复数小波变换等来检测故障。但问题在于,监测数据里往往含有大量噪声,而噪声和故障特征都会随工况变化,传统信号分析方法经常"看不出来"故障。

第三类:数据驱动方法

这类方法用历史监测数据训练自动分类模型,然后用训练好的模型去诊断故障。研究者不需要把故障的物理机理搞得特别清楚。近年来,各种数据驱动的故障诊断方法层出不穷。但这类方法有一个前提,需要大量带标签的训练数据。

1.3 核心矛盾:数据不够

这就引出了本文要解决的核心矛盾: 深度学习模型需要大量数据才能训练好。

但关键设备本身就很少出故障,即使出了故障,很多企业也没有好好保存故障数据;

做故障模拟实验成本又太高。

结果就是:健康样本可能有几百上千个,各类故障样本可能只有几个。论文里设定的场景更极端,每个故障类别只给5个训练样本。

在这种极度不平衡的情况下,模型会"学歪",它发现把所有样本都判成健康类就能获得很高的准确率,于是就这么干了。这样一来,故障样本基本就全被漏掉了。

二、已有方法为什么不够用?

既然真实数据不够,自然就想到了"造数据",也就是数据增强。

2.1 传统方法的困境

简单过采样(OS):直接把少数类样本复制几份。问题是,复制出来的样本一模一样,没有任何新信息。论文实验显示,过采样+CNN的F1只有96.03%,虽然比不做处理的89.40%好不少,但仍有提升空间。

简单降采样(DS):从多数类里随机抽取和少数类一样多的样本。这样做的代价是丢弃了大量可能有用的健康样本信息。论文里DS+CNN的F1是92.48%,反而比过采样差。

SMOTE类方法:在少数类样本之间做线性插值生成新样本。但振动信号不像图像特征,两个振动信号之间的欧氏距离很难衡量它们的真实相似性。线性插值很可能生成物理上根本不存在的混合信号。后续研究也验证了,SMOTE在液压泵数据上的表现并不理想。

GAN类方法:生成对抗网络的思路是让生成器学会真实数据的分布,然后采样生成新样本。但在振动信号场景下,GAN有两个大问题:

一是训练不稳定。生成器和判别器之间要保持微妙的平衡,实际操作中经常出问题。

二是生成的信号可能根本不像真实的振动信号。振动信号和机械结构、转速、负载这些物理因素强相关,GAN生成的信号经常被判别器一眼就识别出来是假的。

尤其是当每个故障类别只有5个样本时,GAN几乎必然陷入模式坍塌(mode collapse),生成器只能生成一两种类型的样本,多样性严重不足。

2.2 一个基于物理直觉的关键洞察

作者抓住了两个很关键的点:

第一,故障类别信息和频率成分强相关。这个判断是有物理依据的:

轴承故障会产生特定频率的冲击响应;

齿轮故障会产生啮合频率及其边频带;

液压泵故障会产生轴频、柱塞通过频率等。

第二,既然故障信息主要在频域里,那只要保持频率成分不变,只改变幅值分布,故障类别应该不会变。

这个思路和后来一些研究的方向是一致的,有学者提出"局部小波相似性融合"(LWSF)方法,同样是基于"保持频率特性、在频域做文章"的思路来进行数据增强。

三、本文的核心创新:小波包扭曲(Wavelet Packet Distortion)

3.1 技术路线:三步走

整个流程可以概括为三个步骤:

第一步:小波包分解

把原始振动信号分解到不同频带,得到各频带的小波系数。本文用的是3层小波包分解,小波基选择的是在故障诊断领域应用很广的"DB4"小波。小波包变换可以把信号分解到多个频带,相比于普通小波变换只分解低频部分,小波包变换对高频部分也做了分解,信息保留得更完整。

第二步:随机扭曲

随机挑选一个小波包节点,把该节点的小波系数做非线性扭曲。扭曲公式是:

其中d是从预设范围内随机选取的扭曲系数。如果d接近1,扭曲后的系数和原来差不多;如果d离1越远,变化就越大。

为什么这个设计很巧妙?

关键在于,只改变幅值,不改变频率。小波包分解把信号按频带拆开,只在一个频带上做幅值扩展,其他频带不动。重构后频率成分基本保持住了,但幅值分布变了。这样既保证了故障类别不变,又引入了多样性。

第三步:小波包重构

用扭曲后的系数加上其他没改动的系数一起重构信号。因为频率信息保留在小波系数的位置中,重构后信号的频率成分基本不变。

还有一个细节:作者特意让生成样本的标准差和原始样本保持一致,因为振动信号的标准差和故障状态是密切相关的。

3.2 这个设计精妙在哪里?

我梳理了三个特别妙的地方:

第一,在频域操作,物理意义清晰

不是随便加噪声,不是瞎插值,而是有物理依据的"频率成分不变、幅值变化"。后续的LWSF方法也沿用了这个思路,通过相似性加权融合来扭曲小波包系数,同样是为了"把扭曲控制在合理范围内"。

第二,随机性带来了多样性

d是随机取的,每次生成都不一样。论文测试了不同范围的d值,发现[0.5,1.5)和[0.7,1.3)这两个范围的平均F1都达到了98.14%,显著优于不做扭曲的过采样(97.05%)。

第三,和简单过采样的本质区别

过采样就是复制粘贴,不增加任何新信息。而小波包扭曲生成的每个样本都和原始样本"相似但不同",引入了有意义的多样性,起到了正则化的作用,能有效抑制过拟合。

3.3 训练策略也有讲究

作者还做了一个很有意思的安排:不是一次性生成所有增强样本然后训练,而是每一轮重新生成。具体来说:

  1. 准备训练集:400个健康样本 + 每类5个故障样本

  2. 用扭曲方法把故障样本扩到400个,实现类别平衡

  3. 训练ConvNet 1个epoch

  4. 如果训练准确率达到100%或到了200个epoch就停止;否则重新生成故障样本,再训练1个epoch

这样做的目的是防止过拟合,每一轮生成的样本都略有不同,相当于变相增加了训练数据的多样性,模型更难"记住"某一个特定样本。

四、实验验证

4.1 非常苛刻的数据设定

实验用了航空液压泵的振动信号数据:

6个类别:1个健康 + 5个故障

每个样本128个数据点

训练集:健康类400个,每个故障类只给5个

测试集:健康类80个,每个故障类475个

这个设定确实够狠,每个故障类5个样本,即便做了数据增强,本质上还是在解决少样本学习问题。

4.2 对比方法

设置了四组对比:

CNN:直接用原始不平衡数据训练

DS+CNN:降采样,健康类也抽5个

OS+CNN:过采样,故障类复制80次

WPD+CNN:本文提出的方法

4.3 定量结果

10次重复实验的平均结果:

|---------------|--------------|--------------|--------------|----------------------|
| 指标 | CNN | DS+CNN | OS+CNN | WPD+CNN |
| F1 (%) | 89.40 ± 3.40 | 92.48 ± 2.95 | 96.03 ± 2.65 | 97.50 ± 1.74 |
| Precision (%) | 91.10 ± 2.73 | 93.40 ± 2.63 | 96.66 ± 1.88 | 97.78 ± 1.27 |
| Recall (%) | 89.52 ± 3.16 | 92.53 ± 2.97 | 96.10 ± 2.51 | 97.54 ± 1.65 |

小波包扭曲+CNN比普通CNN的F1提升了8.10个百分点,比过采样提升了1.47个百分点。这个提升幅度在少样本场景下相当可观了。

4.4 稳定性分析

从标准差来看,小波包扭曲方法的标准差(±1.74)明显小于其他方法(±2.65~±3.40),说明方法的稳定性更好。

但作者也很坦诚地指出了一个问题:小波包扭曲方法并不是每次实验都是第一。10次中有7次第一,3次略逊于OS+CNN。原因是,当随机挑选的那5个训练样本恰好不能代表该类故障的整体特征时,再好的增强方法也无力回天。这说明数据增强解决不了"训练样本本身不具代表性"的问题。

4.5 训练效率

小波包扭曲方法的训练效率也很高,每个epoch只需约8秒(包含数据增强和模型训练),一般在5个epoch左右就收敛了,总训练时间约40秒。相比之下,不做增强的CNN需要30多个epoch才能收敛。原因是增强后的数据集规模更大(2400个样本),信息更丰富,模型收敛更快。

4.6 特征可视化

用t-SNE把卷积神经网络最后一层的高维特征降到2D空间后可以看到:

CNN和DS+CNN里,F1和F2两类样本高度重叠;

OS+CNN有所改善,但仍有错分;

小波包扭曲方法的各类别分布明显更紧凑、类间分离更清晰。

这说明小波包扭曲帮助CNN学到了更有判别性的特征。

4.7 不同扭曲系数范围的对比

论文测试了5种不同的d值范围:

|--------------|-------------------------------|-------------|
| d值范围 | 平均 F 1(%) | 标准差 |
| [0.5, 1.5) | 98.14 | ±1.17 |
| [0.6, 1.4) | 97.92 | ±1.15 |
| [0.7, 1.3) | 98.14 | ±1.12 |
| [0.8, 1.2) | 97.87 | ±1.57 |
| [0.9, 1.1) | 97.47 | ±1.37 |
| None(纯过采样) | 97.05 | ±1.33 |

有意思的是,所有做过扭曲的范围都优于纯过采样。这验证了小波包扭曲引入的多样性确实比简单复制更有用。作者建议在实际应用中准备一个验证集来选择合适的数据增强范围。

五、方法的局限和未来方向

作者在论文最后很坦诚地指出了几个局限:

小波基的选择:本文直接用了"DB4"小波,但并没有严格的理论证明它是最优选择。有些其他小波函数可能更合适。作者提出未来可以研究如何选择或设计合适的小波函数,并给出理论依据。

方法的通用性:虽然作者指出小波包扭曲的思想可以推广到其他机械系统(如风力发电机、燃气轮机、民航发动机)以及其他类型的时间序列信号,但具体的实验验证仍集中在液压泵上。

六、我的思考

第一,领域知识才是真正的竞争力

小波包扭曲不是一个通用的数据增强方法,它是专门为振动信号设计的,有效性建立在"故障信息与频率成分相关"这个物理洞察之上。读这篇论文给我最大的启发是:真正有价值的算法创新,往往不是数学技巧的堆砌,而是对问题领域的深刻理解。如果作者不懂机械故障的物理机理,就不太可能想到"保持频率、只改幅值"这个设计。

第二,什么是好的数据增强?

读完这篇论文,我对数据增强有了更清晰的认识:

好的数据增强 = 保持语义不变 × 引入有效多样性

这两个维度缺一不可。过采样做到了前者但没做到后者,GAN可能做到了后者但很难保证前者。小波包扭曲在两者之间找到了一个很巧妙的平衡。

第三,不一定非要追求"最先进"的方法。

GAN比小波包扭曲"高级"得多,但在本文的场景下(每类只有5个样本),小波包扭曲反而更可靠。这提醒我:工程问题讲究的是可靠、可控、可解释,而不是算法的新潮程度。小波包扭曲每一步都有明确的物理意义,这一点比黑箱式的GAN在工业场景中更有说服力。

参考文献

1 M. Zhao, X. Fu, Y. Zhang, L. Meng, and B. Tang, "Highly imbalanced fault diagnosis of mechanical systems based on wavelet packet distortion and convolutional neural networks," Advanced Engineering Informatics, vol. 52, p. 101535, 2022.

相关推荐
m沐沐23 天前
【深度学习】卷积神经网络 数据增强、保存最优模型实现,详细解读
人工智能·python·深度学习·机器学习·cnn·数据增强
upper202025 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
FPGA小徐2 个月前
FPGA CNN 网络结构完整知识点总结
卷积神经网络
weixin_468466852 个月前
深度学习图像数据增强新手实战指南
图像处理·人工智能·深度学习·ai·数据增强·机器视觉
装不满的克莱因瓶2 个月前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
王_teacher2 个月前
ResNet-18网络模型+原理解析+Pytorch实现+手写模型
人工智能·cnn·卷积神经网络
性感博主在线瞎搞2 个月前
【神经网络】卷积神经网络(二)卷积层以及池化层的实现
深度学习·神经网络·cnn·卷积神经网络·卷积层·池化层
llfjfz2 个月前
TensorFlow花卉图片分类器模型训练
tensorflow·卷积神经网络
王_teacher3 个月前
VGG16模型原理讲解-手写代码解析VGG16模型
cnn·卷积神经网络·论文笔记·vgg16