首页/文章/ 详情

手把手教你安装GPU版Pytorch环境及手把手带大家跑通第一个故障诊断案例!!!(中)

2月前浏览1245

故障诊断方向而言,无论是信号处理、特征提取、故障分类还是寿命预测,所有的方法实现基本都依靠于Python代码,很多小白遇到的第一个拦路虎便是代码环境的配置

Pytorch是Python第三方库的一种,里面包含很多深度学习机器学习的函数,Pytorch本身有两个版本,一个是简便的CPU版本,一个是高速高效的GPU版本。另外代码编辑器可以直接用于编写、编辑和运行代码。它们提供了代码高亮、自动补全、代码调试、版本控制集成等功能,以提高开发效率和代码质量,也是故障诊断相关代码的必备工具之一。

本期给大家带来Pytorch环境(Anaconda)安装教,并附带代码编辑器配置过程。每一部分内容都附带推荐的视频教程以及教程链接,保证每一位故障诊断学习者都能搭建自己的代码平台。此外,后续文章还手把手带大家跑通第一个故障诊断案例,代码包含数据处理,1DCNN模型搭建,模型训练,以及模型评估等故障诊断完整过,特别适合研一、研二小白入门。

      本期代码非常详细,所占篇幅也非常多,所以分三次呈现给大家,该文章是本期第2篇文章,主要介绍西储大学数集以及一些所需的深度学习基础知识,文章后半部分讲解了本期代码的数据预处理以及数据切割等部分。本期第1篇文章主要介绍了Python环境以及各个软件环境安装初学者必看教程 | 手把手教你安装GPU版Pytorch环境及手把手带大家跑通第一个故障诊断案例!!!(上)。第3篇文章主要构建1DCNN模型框架以及模型训练模型检测等内容。

数据集下载:通过点击最左下角的阅读原文进行下载。

目录

引言

2 安装Anaconda

   2.1 Anaconda介绍

   2.2 Anaconda安装

3 配置Pytorch环境(CPU版)

   3.1 Pytorch介绍

   3.2 Pytorch配置教程(CPU版)

4 配置Pytorch环境(GPU版)

   4.1 两种Pytorch区别(看是否支持GPU)

   4.2 CUDA安装

   4.3 Pytorch配置教程(GPU版)

5 配置代码编辑器

   5.1 代码编辑器区别

   5.2 VScode编辑器

   5.3 Pycharm编辑器

   5.4 JupyterNotebook编辑器

6 故障诊断代码示例 (重中之重

    6.1 代码介绍

    6.2 检验Pytorch

    6.3 故障诊断实战代码(数据提取及预处理部分)

注:小编能力有限,如有不恰之处,请多多指正~

1 引言

在学习故障诊断相关代码时,拥有一个强大且灵活的开发环境是至关重要的。Anaconda和Pytorch正是这样的工具,它们为我们提供了一个完整的生态系统,用于进行数据分析、模型训练和部署,是目前常用的工具软件资源。
虽然网上Anaconda及Pytorch安装教程资源比较丰富,但对一些细节部分,比如在安装GPU版本的Pytorch时,是否需要安装CUDA、以及如何查看CUDA版本等问题上仍存在一些歧义。本文将用通俗易懂的语言及方法带大家了解这些概念,并选择自己最合适的方法。此外,本文提供了下载GPU版Pytorch的快捷方式,以及通俗易懂的视频教程链接,为读者朋友们在安装过程中尽可能带来更多的便利。
本期第2篇、第3篇提供了故障诊断实例以及学习代码的必备基础知识,代码包含数据处理,1DCNN模型搭建,模型训练,以及模型评估等故障诊断完整过程,为读者朋友们提供了基本的代码框架
总的来说,本期文章旨在为初学者及入门小白提供一个全面的指南,第1篇科普一些基本概念的同时,提供详细操作过程,帮助大家安装和配置Anaconda环境,以及在该环境中配置Pytorch(包含CPU和GPU两种版本)。此外,本期第2篇、第3篇还带大家学习一个完整故障诊断代码示例深入学习故障诊断代码的各个框架,为接下来学习打下夯实的基础。无论您是在寻找一个全新的开发环境,还是希望优化现有的工作流程,本期文章都将为您提供必要的指导和资源。

6 故障诊断代码示例

6.1 代码介绍

6.1.1代码流程

数据提取部分代码,把.mat文件中正常数据和12kHz驱动端数据提取成Dataframe格式,接着通过预处理将数据划分为长度1024、重叠率0.5的多个样本。并转化适合深度学习的tensor格式。模型搭建部分构建了1DCNN模型框架,然后模型训练部分调用基本1DCNN模型框架以及训练集验证集通过多次训练生成最佳模型,最后模型测试部分加载最佳模型和测试集并通过准确率,召回率,混淆矩阵等多指标检验模型效果。

6.1.2 基础知识

(1) 西储数据集

西储轴承故障数据集,常用于故障诊断和预测的研究。该数据集包含了来自不同故障模式和工作条件下的轴承振动数据

    

图1 西储大学轴承数据集试验台

数据集分成四个部分分别是Normal Baseline Data(正常数据集),12k Drive End Bearing Fault Data(12k 驱动端轴承故障数据),48kDrive End Bearing Fault Data(48k 驱动端轴承故障数据),12k Fan End Bearing Fault Data(12k 风扇端轴承故障数据)

图2 正常数据集

图3 12k驱动端轴承故障数据

  图4 48k驱动端轴承故障数据

 图5 12k风扇端轴承故障数据

本文代码涉及正常数据以及12k驱动端轴承数据,在正常数据集中有四部分分别是0马力,1马力,2马力,3马力。12k驱动端轴承数据中按照轴承故障尺寸分成0.007英寸、0.014英寸、0.021英寸、0.028英寸。其中每个故障尺寸包含0-3四个马力负载,每个负载测量内圈、滚珠、外圈(部分数据存在空缺,如0.028英寸故障中的外圈)。在外圈数据中,又分为6点钟、3点钟、12点钟。其中在0.007英寸、0.014英寸、0.021英寸中均包含6点钟的外圈故障。

文章所取数据为正常数据0hp,0.007英寸缺陷尺寸0hp(内圈,滚珠,6点钟外圈故障),0.014英寸缺陷尺寸0hp(内圈,滚珠,6点钟外圈故障),0.021英寸缺陷尺寸0hp(内圈,滚珠,6点钟外圈故障),总共10类,后面依次记标签为0-9。

图6 本文代码涉及数据集

官网下载原数据集以及本文代码涉及数据集均在文末提供。(本文代码数据集是在原数据基础上将需要的数据集整合到matfiles文件中,并对各数据重命名方便观察)

(2) 数据格式

数据提取部分代码,把.mat文件中正常数据和12kHz驱动端提取到Dataframe格式并保存为CSV文件方便后续调用,在数据预处理阶段先对CSV文件里的数据进行划分并保存为train_set,val_set,test_set新的CSV文件,然后对这三部分进行转换,得到适合深度学习的张量格式。

其中,DataFrame 是 Pandas 库中的一种数据结构,用于存储和操作结构化数据。它是一个二维的、表格型的数据结构,可以看作是一个表格,其中每列可以是不同的数据类型(数值、字符串、布尔值等),类似于 Excel 中的电子表格或 SQL 中的表。CSV(Comma-Separated Values,逗号分隔值)是一种常见的文件格式,用于存储表格数据。CSV 文件由纯文本组成,其中数据项之间用逗号分隔,每行代表一个数据记录。许多应用程序和编程语言都可以读取和写入 CSV 文件。张量是多维数组,是深度学习框架(如 Pytorch 和 TensorFlow)中的基本数据结构。它可以表示标量(0 维张量)、向量(1 维张量)、矩阵(2 维张量)以及更高维度的数据。深度学习框架对张量提供了高效的数学运算支持,如加法、乘法、卷积等。在 Pytorch 等框架中,张量可以记录计算过程,自动计算梯度,这使得模型的训练和优化变得简单。

(3) 1DCNN

1DCNN 通过卷积层提取一维序列数据的局部特征,池化层降低特征维度并保留重要信息,激活函数引入非线性,全连接层整合特征并进行分类这些层共同协作,使得 1DCNN 能够有效地处理和分析序列数据,捕捉序列中的模式和时间依赖性,适用于各种序列建模任务。

其中卷积层是 CNN 的核心层,通过卷积操作来提取输入数据的局部特征。在 1DCNN 中,卷积层使用一维卷积核在序列上滑动,计算卷积核与序列局部区域的点积,生成特征图(激活图)

池化层用于降低特征图的空间维度,减少计算量,同时保留重要特征信息。常见的池化操作有最大池化和平均池化。激活函数是用于引入非线性的函数,它对卷积层或全连接层的输出进行非线性变换。常用的激活函数有 ReLU、sigmoid、tanh 等。

全连接层是传统的神经网络层,其中每个神经元都与前一层的所有神经元相连。在 1DCNN 中,全连接层通常位于网络的最后几层,用于将前面卷积层和池化层提取的特征进行整合和分类。在分类任务中,全连接层输出每个类别的概率分布;在回归任务中,输出预测值。

6.2 检验Pytorch

(1) Win+R后输入cmd,管理员运行进入命令提示符,然后命令输入conda env list。


conda env list。

图7 运行结果

(2) 进入想查询的Python环境,输入activate python311。


activate python311

图8 运行结果

(3) 查询当前环境下的所有库,输入pip list。


pip list

图9 运行结果

(4) 查询pytorch

图10 查询结果

发现不带cuda版本,即该环境下pytorch为CPU版本。

(5) 退出当前环境,输入conda deactivate。


conda deactivate

图11 运行结果

(6) 进入想查询的其他Python环境,输入activate DL311。


activate DL311

图12 运行结果

(7) 查询当前环境下的所有库,入pip list。


pip list

图13 运行结果

发现带cuda版本,即该环境下pytorch为GPU版本。

6.3 故障诊断实战代码

6.3.1 数据预处理

(1)数据提取

数据提取部分代码,首先创建一个空的 Pandas DataFrame,用于存储从 .mat 文件中提取的数据。通过循环遍历每个 .mat 文件,使用 loadmat 函数读取.mat文件中正常数据和12kHz驱动端数据内容,并将指定的数据列提取出来,填充到 DataFrame 的对应列中,同时只取前 119808 个数据点以保证数据长度一致。之后,将 DataFrame 中的 'de_normal' 列设置为索引,以便于后续的数据操作。最后,将合并后的 DataFrame 保存为一个名为 'data_12k_10c.csv' 的 CSV 文件,并输出 DataFrame 的形状以检查数据集。整个过程实现了将多个 .mat 文件中的数据整合到一个结构化的表格中,并将其转换为易于分析和共享的 CSV 格式,方便后续操作。
import numpy as npimport pandas as pdfrom scipy.io import loadmatfile_names = ['0_0.mat','7_1.mat','7_2.mat','7_3.mat','14_1.mat','14_2.mat','14_3.mat','21_1.mat','21_2.mat','21_3.mat']# 采用驱动端数据data_columns = ['X097_DE_time', 'X105_DE_time', 'X118_DE_time', 'X130_DE_time', 'X169_DE_time',               'X185_DE_time','X197_DE_time','X209_DE_time','X222_DE_time','X234_DE_time']columns_name = ['de_normal','de_7_inner','de_7_ball','de_7_outer','de_14_inner','de_14_ball','de_14_outer','de_21_inner','de_21_ball','de_21_outer']data_12k_10c = pd.DataFrame()   #  for index in range(10):   # 读取MAT文件   data = loadmat(f'matfiles\\{file_names[index]}')   dataList = data[data_columns[index]].reshape(-1)   data_12k_10c[columns_name[index]] = dataList[:119808]  print(data_12k_10c.shape)data_12k_10c.set_index('de_normal',inplace=True)data_12k_10c.to_csv('data_12k_10c.csv')print(data_12k_10c.shape)data_12k_10c
图14 数据提取部分输出结果
(2)数据切割划分

数据切割划分将data_12k_10c中数据按照步长1024,重叠率0.5划分,分成多个样本,并打上对应标签(0-9)。最后把数据按照3:1:1划分成训练集、验证集、测试集。最后保存分别命名为train_set,val_set,test_set。




















































def split_data_with_overlap(data, time_steps, lable, overlap_ratio=0.5):   stride = int(time_steps * (1 - overlap_ratio))  # 计算步幅   samples = (len(data) - time_steps) // stride + 1  # 计算样本数   # 用于存储生成的数据   Clasiffy_dataFrame = pd.DataFrame(columns=[x for x in range(time_steps + 1)])     data_list = []   for i in range(samples):       start_idx = i * stride       end_idx = start_idx + time_steps       temp_data = data[start_idx:end_idx].tolist()       temp_data.append(lable)  # 对应哪一类       data_list.append(temp_data)   Clasiffy_dataFrame = pd.DataFrame(data_list, columns=Clasiffy_dataFrame.columns)   return Clasiffy_dataFrame# 数据集的制作def make_datasets(data_file_csv, split_rate = [0.6,0.2,0.2]):   # 1.读取数据   origin_data = pd.read_csv(data_file_csv)   # 2.分割样本点   time_steps = 1024  # 时间步长   overlap_ratio = 0.5  # 重叠率   # 用于存储生成的数据# 10个样本集 合   samples_data = pd.DataFrame(columns=[x for x in range(time_steps + 1)])     # 记录类别标签   label = 0   # 使用iteritems()方法遍历每一列   for column_name, column_data in origin_data.items():       # 划分样本点  window = 1024  overlap_ratio = 0.5  samples = 233 每个类有233个样本       split_data = split_data_with_overlap(column_data, time_steps, label, overlap_ratio)       label += 1 # 类别标签递增       samples_data = pd.concat([samples_data, split_data])   # 随机打乱样本点顺序   # 打乱索引并重置索引   samples_data = samples_data.sample(frac=1).reset_index(drop=True)   # 3.分割训练集-、验证集、测试集   sample_len = len(samples_data) # 每一类样本数量   train_len = int(sample_len*split_rate[0])  # 向下取整   val_len = int(sample_len*split_rate[1])   train_set = samples_data.iloc[0:train_len,:]     val_set = samples_data.iloc[train_len:train_len+val_len,:]     test_set = samples_data.iloc[train_len+val_len:,:]     return  train_set, val_set, test_set, samples_data# 生成数据集train_set, val_set, test_set, samples_data = make_datasets('data_12k_10c.csv')# 保存数据dump(train_set, 'train_set')dump(val_set, 'val_set')dump(test_set, 'test_set')print(train_set.shape)print(val_set.shape)print(test_set.shape)

图15 数据切割代码结果

(3)Pandas数据转换成张量

数据转换部分将train_set,val_set,test_set这些Pandas数据结构转化为适合深度学习模型的张量结构,最后保存。

def make_data_labels(dataframe):   # 信号值   x_data = dataframe.iloc[:,0:-1]   # 标签值   y_label = dataframe.iloc[:,-1]   x_data = torch.tensor(x_data.values).float()   y_label = torch.tensor(y_label.values.astype('int64')) # 指定了这些张量的数据类型为64位整数,通常用于分类任务的类别标签   return x_data, y_label# 加载数据train_set = load('train_set')val_set = load('val_set')test_set = load('test_set')# 制作标签train_xdata, train_ylabel = make_data_labels(train_set)val_xdata, val_ylabel = make_data_labels(val_set)test_xdata, test_ylabel = make_data_labels(test_set)# 保存数据dump(train_xdata, 'trainX_1024_10c')dump(val_xdata, 'valX_1024_10c')dump(test_xdata, 'testX_1024_10c')dump(train_ylabel, 'trainY_1024_10c')dump(val_ylabel, 'valY_1024_10c')dump(test_ylabel, 'testY_1024_10c')print('数据 形状:')print(train_xdata.size(), train_ylabel.size())print(val_xdata.size(), val_ylabel.size())print(test_xdata.size(), test_ylabel.size())

图16 数据转换输出结果

(4)加载张量数据

 该部分代码首先会检验运行环境是否支持GPU,如果支持则输出cuda,然后通过数据加载器,它将从xdata和 ylabel 中批量加载数据,每个批次包含 batch_size 个样本每个批次包含 batch_size 个样本,样本在每个训练周期开始时会被随机打乱,使用 workers 个子进程来加载数据,并且会丢弃最后一个不完整的批次。通过这种方式,可以高效地加载和处理训练数据,为模型的训练提供支持。

device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 有GPU先用GPU训练print(device)# 加载数据集def dataloader(batch_size, workers=2):   # 训练集   train_xdata = load('trainX_1024_10c')   train_ylabel = load('trainY_1024_10c')   # 验证集   val_xdata = load('valX_1024_10c')   val_ylabel = load('valY_1024_10c')   # 测试集   test_xdata = load('testX_1024_10c')   test_ylabel = load('testY_1024_10c')   # 加载数据   train_loader = Data.DataLoader(dataset=Data.TensorDataset(train_xdata, train_ylabel),                                  batch_size=batch_size, shuffle=True, num_workers=workers, drop_last=True)   val_loader = Data.DataLoader(dataset=Data.TensorDataset(val_xdata, val_ylabel),                                batch_size=batch_size, shuffle=True, num_workers=workers, drop_last=True)   test_loader = Data.DataLoader(dataset=Data.TensorDataset(test_xdata, test_ylabel),                                 batch_size=batch_size, shuffle=True, num_workers=workers, drop_last=True)   return train_loader, val_loader, test_loaderbatch_size = 32# 加载数据train_loader, val_loader, test_loader = dataloader(batch_size)print(len(train_loader))#批次个数print(len(val_loader))print(len(test_loader))

       图17 练集验证机测试集批次个数

如图,本次操作环境支持GPU加速(此处也可以作为检验是否支持cuda的方法),并且通过batch_size=32,丢弃最后一个不完整的批次设置后,训练集部分将存在43个批次,验证集存在14个批次,测试集存在14个批次。

文章剩余部分为1DCNN模型框架搭建,加载训练集验证集训练模型,测试集验证模型,并通过折线图以及准确率、召回率等指标检验模型结果,最后通过混淆矩阵进一步分析实验结果。详细内容及讲解将在第三篇呈现。

 

编辑:赵栓栓

校核:李正平、陈凯歌、曹希铭、赵学功、白亮、王金、陈莹洁、陈宇航、任超、海洋、Tina

该文资料搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除

点击左下角阅读原文,即可在线阅读论文。

 


来源:故障诊断与python学习
ACTSTEPS振动非线性航空电子python海洋UM电机科普数字孪生控制试验数控Origin
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-11
最近编辑:2月前
故障诊断与python学习
硕士 签名征集中
获赞 77粉丝 96文章 182课程 0
点赞
收藏
作者推荐

综述 | 数字孪生智能故障诊断最新进展综述(中)

接上期数字孪生智能故障诊断最新进展综述(上)。本期给大家推荐胡昌华教授的数字孪生智能故障诊断最新进展综述(中)。随着工业4.0时代的到来,智能制造和数字技术迅速发展,对工业设备的稳定性、可靠性和安全性提出了更高的要求。最近,数字孪生为智能故障诊断提供了一种新的解决方案。本文将从概念、关键技术、应用场景和挑战展望等方面对数字孪生技术在智能故障诊断的发展应用进行综述。论文链接:通过点击本文左下角的阅读原文进行在线阅读及下载。论文基本信息论文题目:A state of the art in digital twin for intelligent fault diagnosis论文期刊:Advanced Engineering Informatics论文日期:2025年论文链接:https://doi.org/10.1016/j.aei.2024.102963作者:Changhua Hu, Zeming Zhang, Chuanyang Li, Mingzhe Leng, Zhaoqiang Wang, Xinyi Wan, Chen Chen机构:Laboratory of Intelligent Control, PLA Rocket Force University of Engineering, Xi’an 710025, China通讯作者邮箱: li_chuanyang@yeah.net目录1 摘要2 引言 2.1 相关工作回顾 2.2 本文目的3 研究方法3.1 文献综述方法3.2 文献分类标准4 数字孪生的研究进展4.1 数字孪生的起源与概念4.2 数字孪生关键技术5 智能故障诊断研究进展 5.1 智能故障诊断定义及相关概念 5.2 智能故障诊断方法(以上标记章节为本文内容)6 数字孪生在智能故障诊断中的应用 6.1 数字孪生在工业制造领域智能故障诊断中的应用 6.2 数字孪生在能源领域智能故障诊断中的应用 6.3 数字孪生在航空航天领域智能故障诊断中的应用 6.4 数字孪生在其他领域智能故障诊断中的应用7 建议与未来展望 7.1 面向数字孪生技术 7.2 面向智能故障诊断 7.3 面向数字孪生的智能故障诊断8 总结1 摘要随着工业4.0时代的到来,智能制造和数字技术迅速发展,对工业设备的稳定性、可靠性和安全性提出了更高的要求。故障诊断(Fault Diagnosis, FD)是保证设备正常运行的关键步骤,其准确性和效率直接影响设备的稳定运行和经济效益。随着人工智能(Artificial Intelligence, AI)技术的进步,数据驱动的故障诊断方法在智能领域得到了发展,即智能故障诊断(Intelligent Fault Diagnosis, IFD)。最近,为IFD提供了一种新的解决方案。这就是数字孪生(Digital Twin, DT),一种连接物理世界和虚拟世界的桥梁技术。许多研究人员发表了关于使用DT技术进行设备IFD的研究。本文分析了2017年至2024年的260篇文章,系统地讨论了DT、IFD以及DT在IFD中的应用。首先,详细介绍了DT和IFD的概念、关键技术和应用场景;然后,重点介绍了DT技术在IFD领域的应用;最后,本文总结了存在的问题和挑战,提出了解决问题的建议,并对未来的发展进行了展望。这项工作有望为相关领域的研究人员提供有价值的参考和利用,并促进DT技术在IFD领域的进一步发展和应用。关键词:工业4.0,数字孪生,智能故障诊断,文献综述5 智能故障诊断研究进展5.1 智能故障诊断定义及相关概念故障通常定义为设备、系统或过程中的任何异常或不期望的状态,导致其无法 正常运行或无法按预期执行。故障的存在通常表明性能下降或偏离正常操作条件,可能由多种原因引起,如机械磨损、材料疲劳、组件老化、操作错误、设计缺陷或环境影响[80][81]。故障可能引发系统中的各种问题,因此,及时实施故障诊断是确保设备运行可靠性、提高生产力、减少维护成本、预防事故以及优化维护计划的必要措施。故障诊断是通过监控和分析系统或设备,确定其是否存在故障,以及故障的类型、位置和程度的过程。它是确保设备正常运行、提高生产力和减少维护成本的重要工具[82]。然而,传统的故障诊断方法依赖于设备维护人员的经验和知识,通过监测和分析声音、温度、振动等参数来判断设备的状态[83]。这一过程如图8所示。图8 传统故障诊断流程随着人工智能、机器学习、大数据等技术的发展,智能故障诊断成为一个热门的研究领域。智能故障诊断是AI与故障诊断相结合的产物,利用AI技术自动监测和分析系统、组件或设备的运行状态,以检测和识别潜在或现有的故障,并确定其性质和原因[84]。智能故障诊断旨在提高故障诊断的准确性和效率,减少人工干预和误判,使故障诊断过程更加自动化和智能化[85]。它为维护和优化决策提供了科学依据,为现代复杂设备的可靠性维护提供了新的方法。智能故障诊断的过程如图9所示。图9 智能故障诊断流程从图8和图9可以看出,在传统的故障诊断过程中,手动操作是普遍存在的,从故障发生到检测、判断、干预和效果验证等每个步骤都需要人工参与和基于经验的判断。相比之下,在智能故障诊断中,过程更加自动化和数据驱动,涵盖了数据采集、预处理、模型分析、故障诊断,甚至干预实施和性能监测,显著提高了故障诊断的效率和准确性。智能故障诊断可以视为故障诊断领域的技术创新,它是在传统故障诊断基础上引入现代技术手段,实现的一种更先进和自动化的故障诊断与分析方法,从而推动故障诊断技术向更加智能和高效的方向发展。5.2 智能故障诊断方法智能故障检测与诊断方法运用机器学习和迁移学习等人工智能技术,自动检测和诊断设备或系统的故障。其核心理念是对设备运行数据进行处理和分析,自动学习故障模式以区分正常与异常状态,从而实现高效准确的故障检测与诊断,减少人工干预,提高系统的可靠性和安全性。本节根据基于传统机器学习、深度学习和迁移学习的IFD方法进行总结,并介绍每类方法中的几种主流算法以及近年来的相关文献。5.2.1 基于传统机器学习的IFD方法SML方法在故障检测中的应用历史悠久,在许多工业场景中依然表现出色。SML模型结构简单,易于理解其决策过程和内部机制。由于通常不包含多层隐藏层,其具有较高的可解释性、较低的计算复杂度和较强的泛化能力。基于SML的IFD方法是指通过对经过预处理和特征提取的运行数据应用简单的机器学习算法,自动诊断故障。其典型步骤包括数据采集与预处理、特征工程(特征提取与选择)、模型训练与验证,以及故障状态的分类和识别。常见的SML方法包括支持向量机[86][87]、决策树[88][89]、随机森林[90][91]和k近邻[92][93]。1) 支持向量机SVM由Cortes等人于1963年首次提出[94],是一种基于统计学中结构风险最小化概念的监督学习算法,其核心思想是在数据集中找到一个能最大化不同类数据点边界的最优超平面。由于实际应用中难以获得足够的故障样本,SVM因其处理小样本数据的能力、良好的泛化性能、高维数据处理能力以及对异常值的不敏感性,广泛应用于故障检测。Ma等人[95]通过子空间交叉技术估计系统的互连项,并基于这些互连项及输入输出数据设计了子系统的故障检测器,同时引入遗传算法优化SVM参数以提高检测性能。Yan等人[86]基于粒子群优化算法构建SVM分类模型,实现了滚动轴承的多故障状态识别。Suo等人[96]提出了一种基于模糊贝叶斯风险和SVM的数据驱动故障检测策略,实现了卫星电源系统的故障检测。Zhao等人[97]通过构建高斯核和多项式核的多核SVM,实现了风机轴承的故障检测,与传统SVM相比诊断精度更高。Wei等人[98]结合聚类多数加权少数过采样和飞蛾火焰优化最小二乘SVM技术,解决了滚动轴承故障检测中的类别不平衡问题。Sarita等人[99]使用SVM技术进行故障检测和分类,并提出了一种基于小波包熵的故障定位算法,快速检测并定位多电平转换器中IGBT的开路故障。Ding等人[100]通过多个SVM分类器和混合优化算法实现故障检测,该方法结合了粒子群算法的全局搜索能力和鸽巢搜索算法的局部搜索能力,优化了多SVM分类器的参数,增强了其诊断性能。2) 决策树与随机森林决策树是一种基于树结构的监督学习算法,通过递归分裂数据构建模型,具有简单、直观且易于解释的特点,非常适合处理具有明确类标签的数据。决策树在故障检测任务中通过快速建立规则集,根据特征直接判断设备故障类型,已广泛应用于旋转机械和轴承等设备的故障分类任务。Praveenkumar等人[101]对汽车变速器的振动数据进行了时域和频域分析,利用决策树算法对归一化特征进行分类,实现了齿轮和轴承故障的实时诊断。Benkercha等人[102]基于气象和电力系统数据,采用C4.5决策树算法进行故障检测和诊断,其模型能够有效检测光伏系统的故障状态并识别具体故障类型。然而,决策树容易在含噪声训练数据中出现过拟合问题。随机森林通过集成学习方法结合多个决策树,采用随机采样训练并通过投票或平均方式结合结果,显著提高模型的准确性和鲁棒性。在故障检测中,随机森林能够有效处理复杂的非线性故障模式,对噪声具有较强的抵抗力,适合处理高维数据。Wang等人[105]提出了一种基于小波包降噪和随机森林算法的滚动轴承故障检测方法,在模拟和实际轴承振动信号上均表现出较高的分类精度。Chen等人[90]利用网格搜索优化随机森林模型,在光伏阵列故障检测中表现出较高的诊断准确性,优于传统决策树方法。3) K近邻KNN是一种基于实例的非参数监督学习算法,其核心原理是计算待分类样本与训练集中各样本的距离,选择最近的k个邻居,并通过这些邻居的类别进行投票以确定样本的类别。在小样本或低噪声水平的情况下,KNN依然是故障分类的有效基准模型。例如,Madeti等人[111]基于光伏系统的实验数据提出了一种KNN故障检测与诊断技术,Song等人[112]提出了一种基于标准化KNN算法的故障检测方法,通过引入标准化距离和不同邻居的重要性权重,提高了故障检测的准确性,同时通过贪心算法降低了多变量故障检测的计算复杂度。5.2.2 基于深度学习的IFD方法DL 具备强大的数据处理和特征提取能力,能够从复杂的原始数据中自动学习高层次特征表示。这使得 DL 广泛应用于 FD,近年来已成为一种快速发展的高效方法。基于 DL 的智能故障检测方法主要包括三个步骤:数据预处理、自动特征提取和故障分类。首先,原始数据经过降噪和归一化等预处理,以消除冗余和干扰;随后,DL 模型执行特征提取,自动识别数据中的潜在表示和故障模式;最后,基于提取的特征进行故障分类,以确定故障的类型和位置。常用的 DL 方法包括卷积神经网络[118]、循环神经网络[119]、长短期记忆网络 [120]、自编码器[121]、深度信念网络[122]、生成对抗网络[22]、扩散模型 [123] 和图卷积网络[124] 等。鉴于基于 DL 的 IFD 方法近年来受到了广泛关注,每年都有大量相关文章发表。因此,本节总结了近年来主流 DL 方法在 IFD 中的应用,以反映其最新研究进展。1)卷积神经网络卷积神经网络(Convolutional Neural Network, CNN) 是一种典型的深度前馈神经网络,受生物感知机制的启发,通常由卷积层、池化层和全连接层组成。其核心理念是结合稀疏连接、权重共享和空间或时间下采样,通过从局部输入图像中逐步提取特征,完成分类和检测等任务 [125]。在 IFD 中,CNN 在处理复杂数据和提取关键特征方面表现出色。通过端到端学习,CNN 能够从原始信号或图像数据中自动提取并分类复杂的故障特征。通过训练和优化 CNN 模型,可以提高 FD 的准确性和效率,为工业生产和设备维护提供强有力的支持。CNN 可处理多种数据类型,包括一维 (one-dimensional, 1D) 和二维 (two-dimensional, 2D) 数据。1D 数据通常源自时间序列,例如机械设备的振动、温度或电流信号,可直接输入 CNN 进行 FD。Wang 等人 [126] 提出了一种基于多模态数据融合和 1D-CNN 网络的轴承 FD 方法,利用 1D-CNN 联合处理振动和声学信号,实现 FD,展示了其处理多源信号的能力。Ye 等人 [127] 通过引入早停和自注意机制增强了 1D-CNN,并结合变分模态分解实现滚动轴承的 FD。Zhang 等人 [128] 将 1D-CNN 与零样本方法相结合,有效解决了未知故障类别中训练样本不足的问题。Pang 等人 [129] 开发了一种可解释且轻量化的改进型 1D-CNN FD 模型,其特征提取层采用单层结构,省略了偏置、激活函数和池化层,替代传统全连接层的是带平方操作的全局平均池化层。该方法的有效性通过消融研究和对比实验得到验证。同时,CNN 在利用整体数据结构处理高维信息和提取复杂空间特征方面具有优势,这在 1D 数据分析中具有挑战性。因此,一些学者将 1D 数据转换为 2D 图像或直接获取 2D 图像数据以进行 FD。Tang 等人 [130] 使用同步压缩小波变换将来自压力、振动和声学传感器的时间序列数据转换为 2D 图像,再利用深度自适应归一化 CNN 模型进行准确稳定的故障识别。Xiong 等人 [131] 通过结合基于互维和相似 Gram 矩阵的数据预处理方法与 CNN 模型,提高了传统无量纲 FD 方法的准确性。Sinitsin 等人 [132] 提出了一种混合输入 CNN 与多层感知器模型,结合原始振动信号和视频图像转换,实现 IFD。Huang 等人 [133] 引入多尺度 CNN 方法,利用小波包分解有效提取多尺度特征,保留关键故障信息,并增强特征提取、诊断和泛化能力,优于传统 CNN。Liu 等人 [134] 使用连续小波变换将振动信号转换为图像,再通过 CNN 进行特征提取,并利用优化的极限学习机进行分类,实现风力涡轮机轴承诊断。Vashishtha 等人 [135] 开发了一种新的优化算法,以微调 CNN 超参数,自适应提取时间频率图像中的故障信息,用于螺旋齿轮箱的智能诊断。Yu 等人 [136] 基于机制特征生成模型生成虚拟故障样本扩展训练数据,并结合 CNN 实现小样本情况下的旋转机械 FD。Yang 等人 [137] 提出了一种结合 SVM 的 CNN 集成方法,通过融合不同图像特征进行分类。2)循环神经网络和长短期记忆网络循环神经网络(Recurrent Neural Network, RNN) 是一种为处理序列数据(包括文本、语音和时间序列)设计的深度学习模型 [138]。其特点是在网络结构中引入循环机制,可以处理任意长度的序列数据,并通过在序列时间步之间传递隐藏状态来捕获时间依赖关系。在 IFD 中,Mohammadi 等人 [139] 提出了一种基于 RNN 残差的数值积分分析方法,并成功应用于动态系统的故障诊断。Li 等人 [140] 开发了一种将振动信号转化为图像的图像处理方法,并在卷积块注意力模块中使用基于双阶段注意力的 RNN,用于不平衡数据条件下滚动轴承的故障诊断,并通过两个数据集验证了该方法的有效性。Mansouri 等人 [141] 提出了一种基于区间值降维 RNN 的故障检测和诊断方法,在风能转换系统的故障检测和诊断方面具有创新性。Bouazzi 等人 [142] 使用贝叶斯算法优化构建的 RNN 模型,有效提高了故障诊断的准确性。然而,标准 RNN 在处理长期依赖关系时经常会遇到梯度消失或梯度爆炸的问题,从而限制了其效果 [143]。为了解决这一问题,LSTM 被引入深度学习领域。长短期记忆网络是一种特殊的 RNN 架构,通过引入记忆单元和门控机制来捕获和保持长期记忆。它可以更好地处理具有长期依赖关系的序列数据,特别是在需要学习长期依赖信息的故障预测和诊断中具有优势。An 等人 [144] 提出了一种基于周期稀疏注意力和 LSTM 的故障诊断方法,利用轴承故障的周期性特征。为了提高诊断的准确性和效率,研究者将 LSTM 与 CNN 结合用于故障诊断。例如,Huang 等人 [145] 使用 CNN 和 LSTM 分别处理故障诊断中的特征提取和时间延迟信息,并取得了显著效果。Li 等人 [146] 开发了一种 CNN 和 LSTM 融合模型,用于故障诊断和传感器校准,高效处理时间序列数据并增强特征提取和学习能力。同时,一些学者改进了 LSTM。Ren 等人 [147] 提出了一种基于超特征和堆叠 LSTM 的故障诊断方法,有效提高了工业生产过程系统的诊断精度。Han 等人 [148] 开发了一种增强型 LSTM 模型,用于解决传统 LSTM 中的信息不平衡问题,并将其输出与 SVM 结合进行故障分类,在多种故障类型上表现优异。Shi 等人 [149] 提出了一种用于行星齿轮箱故障诊断的双向卷积 LSTM 模型。一些学者通过优化算法改进了诊断性能,优化模型的超参数。例如,Dao 等人 [150] 使用 CNN 自适应地提取并减少故障特征,并将其输入 LSTM 模型进行学习和训练,同时使用贝叶斯优化算法优化模型超参数,从而提高了诊断准确性。Si 等人 [151] 提出了一种基于注意力协作堆叠 LSTM 网络的多信息特征融合诊断方法,并利用粒子群优化算法智能调整网络超参数,以提高模型的诊断性能和有效性。3)生成对抗网络生成对抗网络(Generative Adversarial Network, GAN)是一种经典的生成模型,采用创新的对抗性深度学习训练框架,由Ian Goodfellow及其同事在2014年首次提出[152]。GAN由两个主要网络组成:生成器和判别器。生成器的目标是从随机噪声中生成数据,模仿实际数据的分布,而判别器则评估这些数据是来自实际数据集还是生成器。两个网络在训练过程中相互对抗,不断提升其性能,形成一种“博弈”关系。在故障诊断中,故障数据通常在实际应用中稀缺且不平衡,GAN通过生成合成的故障数据来提高数据的质量和数量,从而增强故障诊断模型的准确性和鲁棒性。尽管GAN主要用于生成任务,但它在故障分类中也发挥了重要作用,尤其是在数据增强、特征表示学习和模型泛化能力提升等方面具有创新性应用。例如,Xu等人[153]将轴承的动态模型与GAN结合,解决了零样本故障诊断的新问题。Su等人[154]利用GAN生成与实际数据分布相似的故障特征,通过逻辑回归分割来实现风力发电机齿轮箱在不平衡数据条件下的故障诊断。Du等人[155]提出了一种结合GAN与增量学习和支持向量机模型的故障诊断方法,取得了可接受的诊断准确度。Bai等人[156]提出了一种能够有效处理短时序列数据并保持高准确度的故障诊断方法,结合了时间间隔返回图特征提取和GAN数据增强。尽管GAN在解决数据不平衡问题和故障诊断等领域展现了巨大的潜力,但仍面临如崩溃、过拟合和训练不稳定等挑战。为了解决这些问题,研究人员提出了多种改进的GAN变体。例如,Li等人[157]通过引入独立分类器并增强监督模型,提升了辅助分类器GAN的判别精度,并增强了多模态故障数据的生成能力,特别针对数据不平衡的故障诊断问题。Guo等人[158]采用了梯度惩罚的Wasserstein GAN来生成故障特征,并与小波包变换相结合,诊断风力发电机齿轮箱的故障。Fan等人[159]提出了一种改进的GAN,通过引入梯度归一化来提高训练稳定性,并使用全注意力机制提高生成器的特征学习能力,从而生成高质量的样本。然后,使用浅层1D-CNN进行故障诊断,验证了该方法在样本不平衡故障诊断中的优越性。Liu等人[160]将Harr小波引入GAN用于数据增强和故障诊断;Shang等人[161]提出了一种新型的多模式生成器和模式切换策略,增强了GAN的稳定性以及数据的质量和多样性,成功解决了管道故障诊断中的类别不平衡问题。针对故障样本数据不足,导致故障识别和分析困难的问题,Zhang等人[162]利用深度卷积GAN生成虚拟故障数据,扩展了训练样本并增强了数据多样性,并结合残差链接的CNN模型用于永磁电动机的故障诊断。Xu等人[163]提出了一种新颖的机制—数据融合诊断方案,将轴承动态模型与多智能体多样性GAN融合,促进模拟域与真实域之间的转换并共享诊断知识,从而解决样本稀缺问题,提升了故障诊断性能。针对严重数据不平衡场景中故障样本稀缺的普遍问题,Ren等人[164]提出了一种基于少样本GAN的故障诊断方法。Gao等人[165]提出了一种改进的条件GAN方法,在故障样本极其有限的情况下进行数据增强,并成功应用于电潜油泵的故障诊断。Wang等人[166]提出了一种零样本故障诊断方法,采用类别关联建模方法,通过增强稀疏约束GAN,在不同的工作条件下建立类别之间的关系,从而实现新环境下的零样本故障诊断。4)扩散模型扩散模型 (Diffusion Model, DM) 是一类基于概率扩散过程的生成模型。其核心思想是模拟扩散过程,即通过逐步向数据添加噪声,使其最终接近完全随机的噪声分布,然后通过反向去噪的过程逐步重建数据,生成与真实数据分布相似的新样本[167]。与其他生成模型,如生成对抗网络相比,DM的生成过程更稳定,不依赖于对抗训练。因此,DM在生成高质量和多样化数据方面表现优异,通常适用于高维数据生成任务。近年来,DM因其在图像生成等任务中的出色表现而受到广泛关注[168]。在故障诊断中,DM通过逐渐生成接近真实故障分布的数据,既能生成高质量的故障数据,又能有效增强数据集,同时保持数据的多样性,弥补了传统数据增强方法的不足。Yau等人[169]使用DM进行故障数据增强,通过仅使用少量轴承声音数据提高故障检测模型的性能。Mueller[170]提出了一种基于注意力增强的条件扩散模型,用于生成类似真实数据的合成数据,这显著减轻了数据稀缺和类别不平衡对机器故障诊断结果的影响。Wei等人[171]提出了一种基于混合多样性损失扩散模型和参数转移的轴承故障数据增强方法。该方法无需分类器的指导即可生成多类样本,并通过参数转移技术改善小样本数据集的性能,从而即使在没有真实数据的训练集情况下,模型也能保持较好的诊断性能。随着DM在故障诊断领域的广泛应用,越来越多的研究者开始关注如何通过改进模型结构和生成策略进一步提升数据增强效果和诊断性能。越来越多先进的DM模型相继问世。为了应对传统生成对抗网络方法训练过程中常见的模式崩塌和不稳定问题,Yang等人[172]提出了一种基于去噪扩散概率模型的数据增强新方法,以解决工业故障诊断中的数据不平衡问题。该方法通过物理仿真生成样本,避免了这些问题,并提供了更稳定的训练过程。实验结果表明,这种方法优于其他现有的数据增强算法。Yu等人[173]设计了一种重新参数化的残差扩散模型,改善了滚动轴承故障诊断中的数据不平衡问题,并通过优化模型架构和特征提取,显著提高了模型性能。Zhang等人[174]提出了一种可解释的潜在去噪扩散概率模型,通过将数据压缩至低维潜在空间,并结合可解释的卷积核提取与故障相关的信息,从而在数据稀缺的情况下提高机械故障诊断的准确性。6)图卷积网络 图卷积网络 (Graph Convolutional Network, GCN) 是一种擅长处理图结构数据的深度学习模型。其核心思想是通过卷积操作将邻接节点的信息聚合到目标节点,从而进行特征学习和分类。与传统的卷积神经网络不同,GCN能够有效处理非欧几里得空间数据,如图形、社交网络和传感器网络[175]。在过去两年中,GCN在故障诊断领域也展现出了良好的发展趋势。特别是在复杂系统的设备健康监测和故障诊断中,由于设备通常具有复杂的拓扑结构,GCN可以利用图结构建模节点之间的关系,并提取有用的故障特征。在IFD中,Liao等人[176]提出了一种基于GCN的变换器故障诊断方法,该方法能够同时使用图卷积层提取气体溶解数据与故障类型之间的复杂非线性关系。实验结果证明,该方法在不同输入特征和数据量下,故障诊断的准确性优于CNN、KNN等方法。Chen等人[177]提出了一种融合测量数据和先验知识的GCN故障诊断方法。首先,通过结构分析进行初步诊断,然后将结果转化为关联图,并将其与测量数据一同输入GCN模型进行故障分类,显著提高了故障诊断的准确性。尽管GCN在IFD领域表现良好,其应用仍面临一些挑战。例如,GCN依赖于图的拓扑结构来聚合节点特征,但故障数据通常是非结构化或不规则的,这就需要将这些数据有效地转化为适合的图结构[178]。此外,GCN具有较高的计算复杂度,尤其是在大规模网络数据中,容易产生计算瓶颈。因此,部分学者提出了各种改进方法,以提高GCN的计算效率和诊断性能。为了解决传统单通道数据未能充分反映机电耦合系统故障特征的问题,Zhang等人[179]提出了一种改进的GCN模型,结合多源信息融合技术用于机电系统的故障诊断。他们利用KNN算法构建图数据,并将Dirichlet分布和Softplus层引入GCN网络,替代传统的Softmax层,优化了图数据构建和分类过程,同时有效解决了分类过程中的过度自信问题。与此同时,他们提出了一种简化的D-S证据理论来处理多源信息融合中的冲突,从而提高了故障诊断的准确性和可信度,尤其在强噪声环境下表现出了卓越的鲁棒性。此外,团队还解决了传统GCN只能捕捉相邻节点关系的局限性,提出了一种基于超图神经网络的新方法[180],该方法构建了能够连接多个节点的边,从而捕捉更复杂的多节点关系。该网络首次应用于电流信号分析,广泛的实验验证了其在复杂机械系统故障诊断中的有效性和可靠性。Xiang等人[181]提出了一种基于精细拓扑和时空GCN的齿轮箱故障诊断方法,解决了传统GCN方法中拓扑构建不准确、基于单一指标的边权计算导致节点间关系片面表示以及时空信息提取不足的问题。5.2.3 基于迁移学习的IFD方法迁移学习是一种将来自数据和知识丰富的领域(源域)的模型或知识,迁移到需要应对新挑战的领域(目标域),从而增强目标领域学习的技术[182]。在许多领域,如机械设备、电气系统和网络安全中,经常出现新的故障类型或新的运行条件,这使得基于传统机器学习方法的故障诊断模型需要不断收集数据并从头开始训练,这不仅效率低下,而且成本高昂。迁移学习正是针对这一挑战提供了解决方案。基于TL的故障诊断方法利用现有的故障数据和诊断经验(源域),以应对新的和未知的故障(目标域),借助已有的知识解决新领域或任务中的故障诊断问题。常见的迁移学习方法包括模型迁移和特征迁移,这些方法有助于在不同的工作条件或设备类型之间进行故障诊断[183]。跨案例迁移涉及将故障诊断知识转移到同一设备的不同运行条件(例如不同的转速、负载)。跨设备迁移则应用将一个设备的故障诊断知识迁移到另一个设备,使用现有设备的数据来支持新设备的故障诊断,从而减少对新设备故障数据的依赖。本节还提供了近年来基于迁移学习的故障诊断方法的文献综述,以反映其最新的研究进展。1)基于模型迁移的故障诊断基于模型迁移的故障诊断方法通过微调预训练模型以适应新任务,从而实现知识迁移。最初,使用源领域的带标签数据构建诊断模型。然后,利用目标领域的一小部分带标签数据对该模型进行微调,以使其适应新任务。该方法在处理大数据集时节省了计算资源。Deng等人[184]应用模型迁移策略进行跨领域故障诊断,通过比较各种策略并使用t-SNE可视化结果,优化了诊断准确性。Zhong等人[185]开发了一种基于自注意力的轻量级诊断模型,该模型在ImageNet上训练,向目标模型转移了大量参数知识,然后通过少量样本进行微调,以便在资源有限的平台上进行准确的故障诊断。Zhang等人[186]提出了一种高效且精确的故障诊断方法,结合了连续小波变换、卷积神经网络和支持向量机模型迁移,克服了传统方法的局限性。该方法在多个故障数据集上进行了验证,取得了良好的结果。Zhong等人[187]将深度卷积生成对抗网络与自注意力和谱归一化相结合,提出了一种基于VGG-16的微调迁移学习方法,改进了轴承故障诊断结果。Asutkar等人[188]讨论了机器故障诊断中领域适应和迁移学习的挑战,提出了一种基于轻量级CNN的迁移学习方法,改善了模型的泛化能力。Chen等人[189]提出了一种新型的1D-CNN故障诊断方法,促进了来自多个源领域到多个目标领域的知识迁移。与传统的单源单目标领域方法相比,该方法为复杂的故障诊断挑战提供了更强的解决方案。Liang等人[190]提出了一种结合Isolation Forest的无监督深度迁移学习方法,用于机器故障诊断,并通过参数微调进一步提高了深度模型的准确性,在机器故障诊断领域具有很高的实用价值和应用前景。Wang等人[191]引入了一种增强型1D视觉变换器和迁移学习策略,用于模拟电路中的间歇性故障诊断。基于模型迁移的故障诊断方法有效解决了数据不平衡问题,通过在源领域进行离线训练,然后微调预训练模型以应用于目标领域。这种方法在故障数据稀缺或难以标注的情况下尤其有用,显著提高了故障诊断的效率和准确性。离线训练与在线诊断相结合,使得模型迁移在各行各业的故障诊断中展示了广泛的应用潜力。然而,除了直接迁移预训练模型外,特征迁移方法则通过寻找源领域和目标领域之间的共同特征表示,构建共享特征空间,从而使跨领域故障诊断更加灵活。接下来将讨论基于特征迁移的故障诊断方法,这些方法通过特征提取和映射,进一步提高了不同工作条件和设备上的故障诊断性能。2)基于特征迁移的故障诊断基于特征迁移的故障诊断方法主要关注识别源领域和目标领域之间的共同特征表示,以促进知识迁移。该方法通过从源领域和目标领域提取共同特征来构建共享特征空间,从而实现有效的跨领域故障诊断。基于特征迁移的方法可以分为两类:基于最大均值差异(Maximum Mean Discrepancy, MMD)的深度迁移学习诊断和基于领域对抗神经网络的深度迁移学习诊断。在基于MMD的方法中,Wang等人[192]提出了一种多尺度深度类内适应迁移学习网络,用于不同工作条件下的轴承故障诊断。他们通过改进的ResNet-50提取低级特征,使用多尺度特征提取器分析高级特征,并引入条件MMD来减少领域间分布的差异。他们还结合伪标签计算进一步提高了未标注数据的诊断准确性。Yang等人[193]设计了一种深度部分迁移学习网络架构,领域判别器自动学习不对称因子,使用MMD调整源领域样本的权重,有选择地转移诊断知识。这能够有效提高诊断模型的性能,尤其是当源领域和目标领域的数据分布不平衡时。Xu等人[194]采用迭代剪枝技术压缩模型,减少冗余通道,并结合MMD度量最小化不同领域数据分布的差异,从而提高跨领域故障诊断的效率和准确性。通过减少内存使用、计算成本和推理时间,诊断准确性得以保持或提高。针对传统MMD方法在表示数据分布方差信息时能力有限的问题,Qian等人[195]提出了一种新的差异表示度量——最大均方差异(Maximum Mean Square Discrepancy, MMSD),该方法不仅反映了数据样本的均值信息,还全面表达了样本的方差信息。通过在风力发电机行星齿轮箱的跨负载转移诊断实验中验证了该方法在诊断准确性和分布差异表示能力方面的优越性。在基于对抗神经网络的方法中,Song等人[196]通过领域适应网络最小化源领域和目标领域之间的特征差异,并在源领域数据上训练分类模型。然后,使用伪标记的目标领域测试数据重新训练领域适应网络,该方法在不同工作条件和环境下的故障诊断中表现出色,具有良好的领域适应性和高诊断准确性。为了解决在缺乏标记数据或标记数据不足的情况下的故障诊断问题,Cheng等人[197]提出了一种基于Wasserstein距离的深度对抗迁移学习网络。在多个转移场景中的实验表明,该方法能够有效处理实际工业环境中的故障诊断问题。Li等人[198]设计了一种新的加权对抗转移网络,通过引入对抗训练来学习判别特征和领域不变特征。该方法采用加权学习策略来识别和过滤掉源领域中与目标领域无关的样本,从而减少共享类别之间的分布差异,在多个故障诊断数据集上表现优于现有方法。编辑:任超校核:李正平、陈凯歌、赵栓栓、曹希铭、赵学功、白亮、海洋、Tina、陈宇航、陈莹洁,王金该文资料搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除点击左下角阅读原文,即可在线阅读论文。来源:故障诊断与python学习

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈