深度注意关系网络:未知域下轴承故障诊断的零样本学习方法

文章提出了一种名为DARN的深度学习方法,用于轴承故障诊断的跨域零样本学习。DARN结合了连续小波变换、特征提取和关系模块,其中并行注意机制增强了模型的表征能力,允许在未见过的领域中进行有效诊断。这种方法解决了传统迁移学习在频繁迁移任务和未知故障类型情况下的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Preface

在轴承故障诊断领域(BFD)深度学习(DL)取得了很好的效果,然而大多数方法假设训练集与测试集是相同的分布空间,这意味着该诊断模型不适用于其他未知域。迁移学习(TL)提高了在不同数据分布中的诊断模型性能,但依然存在以下缺陷:
1)迁移学习从源域(SD)中学习目标域(TD)的故障知识,实际工程中需要做频繁的迁移任务,限制了模型的适用性
2)迁移学习中TD的故障类型必须是已知的,若发生未知故障,迁移学习将不可用

本文提出了一种基于深度注意关系网络(DARN)的针对未知域下BFD的零样本学习方法。该方法主要包括特征提取模块和关系模块。特征提取模块用于生成输入样本的表示。关系模块计算样本对之间的关系分数,以确定它们的类型。在DARN中引入了并行注意机制(PAM),以增强所建立模型的表征能力,使关系模块更便于比较。贡献如下:
1)提出了DARN方法,从单个已知域学习故障知识,在数个未知域中测试,而训练数据不包含未知域样本。
2)关系模块可以揭示样本对之间的相似性关系来确定其类别,从而提高在几个未知领域的诊断性能。
3)引入PAM,帮助模型定位不同类别中最具鉴别性的区域,以增强DARN的特征可鉴别性,使关系模块能够更好地区分样本对之间的相似性关系。

Method

Problem Formulation

假设如下:
1)不同域中的BFD任务是相同的,即共享相同的轴承健康状态。
2)训练数据集和测试数据集是相互关联的,但由于运行环境的变化和故障的原因,它们存在不同的数据分布。
3)训练数据集仅来自一个已知领域,而测试数据集来自多个未知域,不需要参与训练过程。

Deep Attention Relation Network(DARN)

DARN主要由连续小波变换(CWT)模块、特征提取器模块 F φ 1 F^1_\varphi Fφ1、卷积注意模块 F φ 2 F^2_\varphi Fφ2和关系模块 G ϑ G_\vartheta Gϑ组成
在这里插入图片描述

CWT Module

CWT可以揭示低频和高频信息下的故障信息,保留有效信号的特征。在CWT中,通过计算时域数据 x ( t ) x (t) x(t)与小波基函数 φ a , b ( t ) \varphi_{a,b}(t) φab(t)的内积,形成小波时频映射,表示为
在这里插入图片描述
a a a是CWT的比例因子, b b b为时移因子,支持集 S S S和查询集 Q Q Q通过CWT转换为小波时频映射,并馈送给特征提取器模块。

Feature Extractor Module

CNN:4卷积2池化
S , Q S,Q S,Q分别经过特征提取得到 F φ 1 ( x i S ) F^1_\varphi(x^S_i) Fφ1(xiS) F φ 1 ( x i Q ) F^1_\varphi(x^Q_i) Fφ1(xiQ),使用 C ( ) C() C()(特征映射的深度连接)得到特征映射对 C ( F φ 1 ( x i S ) , F φ 1 ( x i Q ) ) C(F^1_\varphi(x^S_i),F^1_\varphi(x^Q_i)) C(Fφ1(xiS),Fφ1(xiQ)),输入卷积注意模块

Convolution Attention Module

CNN:2卷积2池化
后接并行注意机制(PAM)。PAM同时包括通道注意机制和空间注意机制。通道注意机制可以关注特征图对中最具代表性的特征,而空间注意机制可以定位特征图对中信息最丰富的位置。这将提高DARN的表征能力,使关系模块更具鉴别能力。
通道注意机制:MLP是多层感知器,LP是感知器, σ \sigma σ是Sigmoid函数
在这里插入图片描述
空间注意机制: f 7 × 7 f^{7\times7} f7×7表示卷积操作
在这里插入图片描述
PAM:输出 F φ 2 ( C ( F φ 1 ( x i S ) , F φ 1 ( x i Q ) ) ) F^2_\varphi(C(F^1_\varphi(x^S_i),F^1_\varphi(x^Q_i))) Fφ2(C(Fφ1(xiS),Fφ1(xiQ)))
M P A M ( F ) = M c ( F ) + M s ( F ) ( 6 ) M_{PAM}(F)=M_c(F)+M_s(F) (6) MPAM(F)=Mc(F)+Ms(F)(6)

Relation Module

关系模块由两个尺寸为1×8和尺寸为1×1的全连接块组成。
关系模块 G ϑ G_\vartheta Gϑ可以计算特征映射对 F φ 2 ( C ( F φ 1 ( x i S ) , F φ 1 ( x i Q ) ) ) F^2_\varphi(C(F^1_\varphi(x^S_i),F^1_\varphi(x^Q_i))) Fφ2(C(Fφ1(xiS),Fφ1(xiQ)))的关系得分,进行关系学习。关系分数 r i , j r_{i,j} ri,j是0到1之间的标量,表示支持集 S S S和查询集 Q Q Q之间的相似性。这意味着关系得分越高属于同一类别,而关系得分越低属于不同类别。因此,关系模块 G ϑ G_\vartheta Gϑ的输出被定义为
在这里插入图片描述
在这里插入图片描述

Optimization Objective of the DARN

最小化均方误差(MSE)
在这里插入图片描述
DARN的训练流程如算法1所示。
在这里插入图片描述

BFD Procedure

在这里插入图片描述

Experiment

Case 1

在这里插入图片描述
采用Ottawa数据集,数据集包含三个轴承健康状态,即正常(NC)、内圈故障(IF)和外圈故障(OF)。振动信号采样频率200KHz,采样时间10s。在四个时变转速条件下采集(O1-O4)。工作转速条件包括升速、降速、先升后降、先降后升。每次收集的原始信号的长度是1024。对于每个轴承的健康状态,收集了1000个样本。对于每个操作条件,数据集中有3000个样本。(表二)
建立T1、T2、T3、T4 4个诊断任务。例如,T1表示使用操作条件O1的80%数据集作为训练数据集,使用操作条件O1的剩余数据集和操作条件O2、O3、O4的数据集作为测试数据集。在T1中,O2、O3和O4相当未知的操作条件。(表三)

结果:
在这里插入图片描述
在这里插入图片描述

Case 2

采用Paderborn数据集,做法与Case 1类似。

论文

### 零样本轴承故障诊断概述 零样本学习(Zero-Shot Learning, ZSL)是一种机器学习范式,旨在通过已知类别的训练数据来预测未知类别中的实例。对于轴承故障诊断而言,这一技术可以用于识别未见过的故障模式或异常情况[^1]。 在实际应用中,零样本轴承故障诊断通常依赖于特征表示的学习以及语义嵌入空间的构建。具体来说,模型会利用预先定义好的属性向量或者词嵌入作为桥梁,在训练阶段仅使用部分类型的故障数据进行建模,而在测试阶段则能够泛化到未曾见过的新类型故障上[^2]。 以下是基于深度学习框架的一个简单实现案例: ```python import torch from torch import nn, optim from sklearn.model_selection import train_test_split from torchvision.models import resnet18 class ZeroShotBearingModel(nn.Module): def __init__(self, num_classes, embedding_dim=300): super(ZeroShotBearingModel, self).__init__() # 使用预训练ResNet提取图像特征 self.feature_extractor = resnet18(pretrained=True) self.feature_extractor.fc = nn.Identity() # 移除全连接层 # 定义分类器 self.classifier = nn.Linear(embedding_dim, num_classes) def forward(self, x, semantic_embeddings): features = self.feature_extractor(x) # 提取特征 scores = torch.matmul(features, semantic_embeddings.T) # 计算相似度得分 return scores # 假设我们有如下数据集划分 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42) model = ZeroShotBearingModel(num_classes=len(unique_labels), embedding_dim=semantic_embedding.shape[-1]) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) for epoch in range(num_epochs): model.train() optimizer.zero_grad() outputs = model(inputs, semantic_embeddings) loss = criterion(outputs, labels) loss.backward() optimizer.step() ``` 上述代码展示了如何结合卷积神经网络 (CNN) 和语义嵌入来进行零样本学习的任务处理过程[^3]。需要注意的是,这里的 `semantic_embeddings` 是指代每种类别对应的语义描述向量,这些可以通过 GloVe 或 Word2Vec 等工具获得。 #### 数据准备与实验设置建议 为了成功复现该算法效果,请注意以下几点事项: - **数据收集**:确保拥有足够的正常运行状态和多种不同故障条件下的振动信号记录。 - **预处理步骤**:标准化输入数据并将其转换成适合 CNN 输入的形式,比如频谱图或时波形片段。 - **超参数调整**:尝试不同的架构设计、优化策略以及正则化手段以提升性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值