[故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型
目录
1. 引言与背景总结
2. 方法框架总结
3. 训练策略总结
4. 实验验证总结
核心代码实现(PyTorch框架)
1. SNN特征提取器(多尺度卷积模块)
结论与未来工作总结
1. 引言与背景总结
- 问题陈述:电机轴承是工业设备中的关键组件,其故障可能导致严重安全和经济损失。传统深度学习故障诊断方法依赖大量高质量数据,但在实际工业场景中,故障样本往往稀缺(小样本问题),且正常样本远多于故障样本(数据不平衡问题),导致模型性能下降。现有方法如迁移学习(transfer learning)、生成对抗网络(GAN)和过采样技术(如SMOTE)存在局限性,例如需要辅助数据或生成样本质量低。
- 解决方案动机:论文提出使用Siamese Neural Networks(SNNs)处理小样本问题。SNNs通过比较样本对(sample pairs)来学习特征相似性,减少了对大量数据的依赖。然而,SNNs易受训练停滞(training stagnation)问题影响,导致特征提取不足。为此,方法引入多阶段训练策略和多源特征融合,以提升鲁棒性。
- 主要贡献:论文的创新点包括:(1) 提出多阶段训练策略缓解SNNs的训练停滞;(2) 设计多源特征融合网络,整合振动、电流等多传感器数据;(3) 验证方法在两个真实数据集上的有效性,证明其在小样本场景的优越性。
2. 方法框架总结
方法分为两个核心框架:SNN-based特征提取框架和multi-source特征融合框架。整体结构如图2所示:
NN-based特征提取框架:
- 结构描述:SNN由两个对称子网络组成,共享权重(如图1)。输入样本对(如 Xa 和 Xb) 被映射到特征空间,计算欧氏距离 Ew=∥Gw(Xa)−Gw(Xb)∥ 作为相似性度量。距离小表示同类样本,距离大表示不同类样本。
图1
特征提取器设计:子网络采用基于Inception模块的多尺度卷积模块(Multi-scale Convolution Module, MCM),如图3和图4。MCM使用不同尺寸卷积核(如1x1、1x3、1x7)捕获多尺度特征,减少参数同时丰富信息。例如:
图3
图4
-
- 优势:SNN通过样本对输入(n个样本生成n(n-1)个样本对),有效扩增样本量,缓解小样本问题。
-
Multi-source特征融合框架:
- 结构描述:融合网络整合来自多个传感器(如振动和电流)的特征。如图5,特征提取器输出通过注意力机制(attention mechanism)融合,结合残差连接保留原始信息。
图5
融合策略:采用通道注意力机制(如图6)。步骤包括:(1) 对传感器特征(如 FA 和 FB) 进行全局平均池化和最大池化;(2) 生成全局表示 Fg;(3) 通过SoftMax生成激励信号 PA 和 PB;(4) 门控机制融合特征:F=(PA⊗FA+FA)+(PB⊗FB+FB),其中 ⊗ 表示点积。
图6
3. 训练策略总结
- 多阶段训练过程:缓解SNN训练停滞问题,分三个阶段:
- 阶段1(特征提取器预训练):单独训练特征提取器(使用振动或电流数据),采用交叉熵损失函数(Cross-Entropy Loss)和Adam优化器。输出SoftMax分类结果,初始化权重。
- 阶段2(SNN训练):初始化SNN与预训练权重。输入样本对,标签 YL(Xa,Xb)=δXa,Xb(同类为1,不同类为0)。损失函数为联合损失(Joint Loss):LJ=λ1Lctr+λ2(Lcls−a+Lcls−b),其中 Lctr 是对比损失(Contrastive Loss),最小化同类距离并最大化异类距离;Lcls 是分类损失。超参数设置:批大小128、学习率0.001。
- 阶段3(特征融合网络训练):使用阶段2的权重初始化融合网络,整合多源特征用于最终分类。
- 训练效果:如图9所示,多阶段训练显著提升准确率。例如,预训练阶段单个传感器准确率仅65-76%,SNN阶段提升至80-83%,融合阶段达94%。
图9
4. 实验验证总结
实验在两个数据集上进行:Case 1(公共数据集)和Case 2(实验室数据集),评估方法在小样本和数据不平衡场景的性能。
-
数据预处理:如图7,包括滑动窗口分割、域变换(如离散余弦S变换和包络谱变换),将时域、频域和时频域数据融合,丰富输入信息。
图7
Case 1(Paderborn大学数据集):
- 数据集:包括健康轴承和5种故障类型(如表1),在不同工况(转速、负载)下收集振动和电流数据。样本按比例 λ(健康样本与故障样本比)分组,模拟不平衡(如表2)。
图8
结果:
- 准确率:当 λ=10(高度不平衡),方法准确率达94%(图10e),远高于传统方法(如CNN、SVM仅50%)。混淆矩阵显示(图10),方法在各类故障上均表现稳健。
图10
消融实验:图11比较各训练阶段。单传感器预训练(Vib-FET)在 λ<3 时准确率90%,但 λ=10 时降至75%;直接融合(FFT)在平衡时达96%,但不稳定;多阶段训练(Proposed)保持一致性(λ=10 时94%)。
图11
与传统方法比较:图12显示,方法优于CNN、LSTM、SMOTE和DCGAN,尤其在 λ=10 时F1-score达0.93。
图12
特征可视化:图13显示t-SNE降维后,各类故障特征聚类明显,证明方法特征提取能力。
图13
Case 2(实验室数据集):
- 数据集:收集振动和电压数据(如图15),包括4种故障类型(如表7)。实验组按传感器通道分组(如表6)。
图15
结果:类似Case 1,方法在 λ=10 时准确率93%(图18e)。消融实验(图19)和比较实验(图20)证实多阶段训练和融合的优越性,传统方法(如SVM)准确率降至40%。
图18
图19
图20
核心代码实现(PyTorch框架)
1. SNN特征提取器(多尺度卷积模块)
import torch
import torch.nn as nnclass MultiScaleConvModule(nn.Module):def __init__(self, in_channels):super().__init__()# MCM1结构(图4a)self.branch1 = nn.Conv1d(in_channels, 16, kernel_size=1)self.branch3 = nn.Conv1d(in_channels, 32, kernel_size=3, padding=1)self.branch7 = nn.Conv1d(in_channels, 32, kernel_size=7, padding=3)# MCM2结构(图4b)self.branch1x1 = nn.Conv1d(80, 64, kernel_size=1) # 输入通道=16+32+32self.branch1x3 = nn.Conv1d(80, 64, kernel_size=3, padding=1)def forward(self, x):# 多尺度特征并联x1 = nn.ReLU()(self.branch1(x))x3 = nn.ReLU()(self.branch3(x))x7 = nn.ReLU()(self.branch7(x))x_concat = torch.cat([x1, x3, x7], dim=1) # 沿通道维度拼接# 多尺度特征融合x1x1 = nn.ReLU()(self.branch1x1(x_concat))x1x3 = nn.ReLU()(self.branch1x3(x_concat))return x1x1 + x1x3 # 残差连接class FeatureExtractor(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv1d(1, 16, kernel_size=16, stride=1)self.conv2 = nn.Conv1d(16, 32, kernel_size=32, stride=2)self.mcm1 = MultiScaleConvModule(32)self.mcm2 = MultiScaleConvModule(64) # 输入通道与MCM1输出一致self.pool = nn.AdaptiveAvgPool1d(1) # 全局池化def forward(self, x):x = nn.ReLU()(self.conv1(x))x = nn.ReLU()(self.conv2(x))x = self.mcm1(x)x = self.mcm2(x)return self.pool(x).squeeze(-1) # 移除时间维度
2. 多源特征融合网络(带注意力机制)
class AttentionFusion(nn.Module):def __init__(self, feature_dim, reduction_ratio=16):super().__init__()self.compression = nn.Sequential(nn.Linear(feature_dim * 4, feature_dim // reduction_ratio), # 公式(4)nn.ReLU(),nn.Linear(feature_dim // reduction_ratio, feature_dim))self.softmax = nn.Softmax(dim=1)def forward(self, feat_a, feat_b):# 全局平均池化与最大池化(公式2-3)avg_a = torch.mean(feat_a, dim=1)max_a, _ = torch.max(feat_a, dim=1)avg_b = torch.mean(feat_b, dim=1)max_b, _ = torch.max(feat_b, dim=1)# 全局特征拼接(公式4)global_feat = torch.cat([avg_a, max_a, avg_b, max_b], dim=1)compact_feat = self.compression(global_feat)# 通道注意力权重(公式5)pa = self.softmax(compact_feat[:, :feat_a.shape[1]]) # 分割激励信号pb = self.softmax(compact_feat[:, feat_a.shape[1]:])# 特征融合(公式6)fused = (pa.unsqueeze(-1) * feat_a + feat_a) + \(pb.unsqueeze(-1) * feat_b + feat_b)return fused
结论与未来工作总结
- 主要结论:方法有效解决了电机轴承故障诊断中的小样本和数据不平衡问题。SNN的多阶段训练缓解了训练停滞,特征融合提升了多源数据利用率。实验证明,在两个数据集上,方法在高度不平衡(λ=10)时准确率均超93%,优于传统方法。
- 贡献强调:(1) 多阶段训练策略为SNNs提供新优化路径;(2) 多源融合网络增强特征表示;(3) 方法通用性强,适用于不同传感器和工况。
- 未来工作:包括(1) 扩展至其他故障诊断任务;(2) 结合优化算法(如遗传算法)调参;(3) 开发深度融合方法处理极端场景;(4) 整合模型驱动方法提升鲁棒性。