设备故障识别应该采用什么AI模型?——从 LightGBM、CNN、LSTM 到 Transformer 的技术综述

工业设备正在快速进入“数据驱动运维”阶段。振动、电流、温度、压力、转速、声音、位移等运行数据可以被持续采集,设备故障识别也由过去主要依赖阈值判断、频谱分析和专家经验,逐渐发展为“信号处理 + AI模型”的智能诊断方式。

但在实际项目中,一个非常现实的问题是:究竟应该采用什么AI模型?

LightGBM、XGBoost、CNN、LSTM、TCN、Transformer、Autoencoder等模型都可以用于设备故障识别,但它们解决问题的方式并不相同。并不存在一个在所有设备、所有数据条件下都最优的模型。真正合理的选型,需要同时考虑数据形态、样本规模、故障类型、实时性、可解释性以及部署硬件。

设备故障识别AI模型选型

一、先明确:所谓“设备故障识别”,实际上包含几类不同问题

设备智能诊断首先可以分为异常检测故障分类

异常检测回答的是:

设备现在是否偏离正常运行状态?

输出通常只有“正常”和“异常”,或者给出一个异常分数。

故障分类则进一步回答:

如果设备异常,到底是哪一种故障?

例如旋转机械可能需要识别正常、不平衡、不对中、轴承损伤、机械松动、齿轮损伤等状态。

再往后,还可以进行故障严重程度识别和剩余寿命预测,也就是预测设备还能运行多长时间。

因此,在选择AI模型之前,首先应该明确一个问题:

模型究竟是在发现异常,还是在识别已经知道的故障类型?

这会直接决定模型路线。


二、LightGBM:工业故障识别中非常重要的基线模型

很多人一谈到AI故障诊断,就会首先想到神经网络。

但如果设备已经进行了比较成熟的信号处理和特征提取,那么工程上非常值得首先尝试的模型其实是:

LightGBM。

LightGBM属于梯度提升决策树模型,它特别擅长处理结构化数据。

例如,从一段振动信号中,可以计算均方根、峰值、峰峰值、峭度、偏度、波峰因子、频谱峰值和不同频带能量;从电流信号中可以计算RMS、波动率、谐波能量;再结合温度、压力、转速和负载等运行参数。

最终,一次设备运行周期可能被转换为几十个或者几百个特征,例如:x=[x1,x2,x3,,x100]\mathbf{x}=[x_1,x_2,x_3,\ldots,x_{100}]

这里并不是说有100个时间点,而是表示一次设备运行状态由100个特征共同描述。例如第1个特征可能是振动RMS,第2个是振动峭度,第3个是电流RMS,第100个可能是某个频带的能量。

这样的数据结构正是LightGBM非常擅长处理的形式。

LightGBM最大的优势之一,是对样本规模要求相对较低。如果只有几百到几千个标注样本,它往往已经可以取得不错的效果,而大型深度学习模型可能还处于明显的数据不足状态。

另外,LightGBM训练速度快,对GPU没有强依赖,而且可解释性较好。通过Feature Importance或者SHAP,可以进一步分析:

模型为什么判断这次运行存在故障?

例如模型可能发现,某类故障主要与轴向振动RMS、特定频率能量和电流波动幅度有关。

这在工业设备中非常重要,因为工程人员不仅希望知道“AI认为设备坏了”,还希望知道“为什么认为它坏了”。

LightGBM的主要缺点同样明显:

它不会自动理解原始波形。

如果直接把数千甚至数万个振动采样点输入LightGBM,效果通常并不理想。因此它往往依赖传统信号处理。

典型架构是:

传感器数据 → 信号处理 → 特征提取 → LightGBM → 故障类别

对于大量中小型工业AI项目,这仍然是一条非常成熟、可靠的技术路线。


三、CNN:原始振动、电流和声音信号的主力模型

如果希望减少人工特征设计,让AI直接从原始信号中自动学习故障模式,那么CNN是非常值得优先考虑的模型。

设备故障诊断中最常见的是:

1D CNN,也就是一维卷积神经网络。

假设一段振动信号包含5000个采样点,可以表示为:x=[x1,x2,,x5000]\mathbf{x}=[x_1,x_2,\ldots,x_{5000}]

这里的 x1x_1x5000x_{5000} 分别表示连续采集到的5000个振动测量值。

CNN会利用一个较短的“卷积窗口”在整个信号上滑动。例如,一个卷积核可能观察相邻几十个采样点,并学习其中是否存在某种局部模式。

这些模式可能对应:

冲击、振荡、高频毛刺、周期性变化或者波形突变。

因此可以把CNN理解为:

由AI自动学习出来的一组数字滤波器。

传统方法需要工程人员决定“应该分析哪些频率、计算哪些特征”,而CNN可以从数据中自动寻找最有利于区分故障的局部特征。

这也是为什么CNN特别适合振动、电流、声音、超声和声发射等高采样率信号。


四、1D CNN还是2D CNN?

工业设备诊断中,两种方式都非常常见。

第一种是直接处理原始时间序列:

原始振动 → 1D CNN → 故障识别

这种方法结构简单,计算效率较高,也比较适合边缘设备部署。

第二种方法是首先进行STFT、小波变换等时频分析,把一维信号转换成时频图:

原始振动 → STFT → 时频图 → 2D CNN → 故障识别

例如一个时频图可以表示为:S(t,f)S(t,f)

其中,tt 表示时间,ff 表示频率,而 S(t,f)S(t,f) 表示某一时刻、某一频率附近的信号能量。

通俗地说,它回答的是:

设备在什么时候,出现了什么频率成分?

对于轴承冲击、齿轮啮合异常或者转速变化明显的设备,这种时频信息往往非常重要。

不过,STFT + 2D CNN也意味着更多的数据预处理和计算开销。因此,如果原始1D信号已经能够很好地区分故障,没有必要为了“图像化”而强行转换成时频图。


五、ResNet和InceptionTime:比普通CNN更值得测试的升级方案

工业项目中不应该把CNN简单理解成几个卷积层。

对于时间序列,ResNet和InceptionTime都非常值得考虑。

ResNet通过残差连接解决深层网络训练困难的问题。简单表示就是:y=F(x)+x\mathbf{y}=F(\mathbf{x})+\mathbf{x}

其中,x\mathbf{x} 是原始输入,F(x)F(\mathbf{x}) 是卷积网络学习到的新特征,最后把两者相加。

它的通俗含义是:

网络不需要把原来的信息全部推翻,而只需要学习“在原有信息基础上应该增加什么变化”。

这种结构使得模型可以构建得更深,同时保持比较稳定的训练过程。

InceptionTime则采用多个不同长度的卷积核并行分析同一段时间序列。

这非常符合工业信号特点。

因为设备故障可能同时包含:

短时间冲击、中时间尺度振荡以及较长周期变化。

不同长度的卷积核可以分别观察不同时间尺度的特征。

因此,如果数据量已经比较充足,在普通1D CNN之后,非常值得继续测试:

1D ResNet和InceptionTime。


六、LSTM:重点不是“看到了什么”,而是“怎么变化过来的”

LSTM是循环神经网络的一种,它的优势在于分析时间序列之间的前后依赖关系。

假设系统每秒计算一次设备状态特征,那么连续100秒可能产生:X1,X2,X3,,X100\mathbf{X}_1,\mathbf{X}_2,\mathbf{X}_3,\ldots,\mathbf{X}_{100}

其中每一个 Xt\mathbf{X}_t 都表示第 tt 秒的设备状态,例如可能同时包含振动、电流、温度和压力等几十个指标。

LSTM关注的并不仅仅是第100秒发生了什么,而是:

设备从第1秒到第100秒是怎样变化到当前状态的。

例如:

温度逐渐升高 → 振动逐渐增大 → 电流开始波动 → 最后出现异常。

这种“状态演化过程”正是LSTM比较擅长识别的模式。

因此,LSTM比较适合具有明确过程性的设备。

例如一次完整运行过程可能包含:

启动 → 加速 → 稳态运行 → 减速 → 停止

这时候,只判断某一个瞬间的振动值可能不足以判断故障,而分析整个过程更加重要。


七、为什么不建议直接把超长振动波形全部送入LSTM?

假设振动采样频率为10 kHz,连续采集10秒。

总采样点数量为:N=fs×TN=f_s\times T

其中,fsf_s 是采样频率,TT 是采样时间。

代入:N=10000×10=100000N=10000\times10=100000

也就是说,一次采集就包含10万个时间点。

如果让LSTM一步一步处理10万个采样点,不但计算量很大,而且训练也比较困难。

因此,更常见的工程方法是:

CNN + LSTM。

CNN首先把原始高频信号压缩成一系列高层特征,然后LSTM再分析这些特征如何随时间变化。

也就是:

原始信号 → CNN提取局部特征 → 特征序列 → LSTM分析时间演化 → 故障识别

这种结构往往比单独使用LSTM更加合理。


八、TCN:非常适合工业时间序列的“高性价比模型”

除了LSTM,还有一个值得特别关注的模型:

TCN,Temporal Convolutional Network,时间卷积网络。

TCN虽然本质上仍然采用卷积,但它通过扩张卷积逐渐扩大观察范围。

例如卷积之间的间隔可以依次扩大为:1, 2, 4, 8, 16, 321,\ 2,\ 4,\ 8,\ 16,\ 32

意思是,网络越往后,就可以跨越越来越长的时间距离观察数据。

因此TCN既能够捕捉短时间局部变化,又能够学习比较长时间尺度上的依赖关系。

与LSTM相比,TCN具有一个明显优势:

卷积计算更容易并行。

因此训练速度和推理效率通常比较友好。

在很多设备故障识别项目中,我会建议把:

CNN-LSTM

和:

CNN-TCN

放在一起进行对照实验。

实际结果有时会发现,TCN可以用更简单的结构获得与LSTM相当甚至更好的结果。


九、Transformer:能力很强,但并不意味着所有设备都应该使用

Transformer近年来成为时间序列研究中的重要模型。

它最大的特点是Attention,也就是注意力机制。

一个简化的注意力计算可以表示为:Attention(Q,K,V)=softmax(QKTdk)V\operatorname{Attention}(Q,K,V) = \operatorname{softmax} \left( \frac{QK^{T}}{\sqrt{d_k}} \right)V

这个公式看起来比较复杂,但它表达的核心思想其实非常简单:

模型自动判断“当前这个时刻,应该重点关注历史上的哪些信息”。

例如设备在第2秒出现了一次振动冲击,第20秒电流发生变化,第35秒温度开始持续上升。

Transformer可以直接学习:

第35秒的异常,与第2秒和第20秒发生的事情是否有关。

这种机制非常适合长时间序列。


十、Transformer真正有优势的场景是什么?

Transformer尤其适合三类情况。

第一类是长时间序列

例如希望分析设备过去几分钟、几小时甚至更长时间中的关联关系。

第二类是多传感器融合

例如同时拥有:

振动、电流、温度、压力、转速、流量、声音、负载等几十路信号。

不同信号之间并不是相互独立的。

Transformer可以尝试学习:

振动与转速有什么关系、电流与负载有什么关系、温度变化是否与之前的振动异常有关。

第三类是大规模设备数据平台

如果企业拥有几百、几千甚至几万台设备,并且积累了多年的运行数据,那么Transformer和自监督预训练的优势会越来越明显。

但是,如果只有:

几百个故障样本、一台设备和几个传感器,

那么Transformer未必优于LightGBM或者CNN。

甚至很可能出现:

模型更加复杂,但实际效果并没有提高。

所以设备故障诊断不能简单地认为:

Transformer > LSTM > CNN > LightGBM。

这种排列并不存在。


十一、Autoencoder:当“正常数据很多、故障数据很少”时尤其重要

工业现场最普遍的数据问题之一是:

正常数据很多,真正的故障数据很少。

一台可靠设备可能连续运行几年,只出现过几次严重故障。

这意味着很难收集足够的数据去训练:

正常、故障A、故障B、故障C……

这种多分类模型。

此时可以先使用Autoencoder,也就是自动编码器。

它的结构可以写成:xEncoderzDecoderx^\mathbf{x} \rightarrow Encoder \rightarrow \mathbf{z} \rightarrow Decoder \rightarrow \hat{\mathbf{x}}

其中:

x\mathbf{x} 是原始正常数据;

z\mathbf{z} 是模型压缩得到的低维特征;

x^\hat{\mathbf{x}} 是模型重新构造出来的数据。

训练目标就是让:x^x\hat{\mathbf{x}}\approx\mathbf{x}

也就是:

让模型尽可能把正常数据还原出来。

随后可以计算重构误差:E=1Ni=1N(xix^i)2E= \frac{1}{N} \sum_{i=1}^{N} (x_i-\hat{x}_i)^2

这里的 EE 就是原始数据和重建数据之间的平均差异。

通俗地说:

正常数据因为模型见过很多,所以通常能够很好地还原,误差比较小;

异常数据的模式模型没有学过,因此通常还原得比较差,误差变大。

于是可以设定:E>TE>T

其中 TT 是异常阈值。

其含义就是:

如果重构误差超过某个阈值,就认为设备状态可能发生异常。

这是一种典型的“只学习正常状态”的异常检测方法。

类似方法还包括Isolation Forest、One-Class SVM、Deep SVDD和Variational Autoencoder等。


十二、工业AI真正困难的地方,往往不是模型,而是故障样本不足

在实验室中,可以人为制造轴承损伤、不平衡、不对中或者齿轮缺陷,因此可以获得大量故障数据。

但真实工厂完全不同。

对于关键设备而言:

严重故障本身就是低概率事件。

这就导致一个非常典型的问题:

正常数据可能有几百万条,而某一种真实故障只有几十次。

因此,一个模型即使在实验室测试集上达到99%的准确率,也不意味着到了真实工厂仍然能够保持同样性能。

更麻烦的是,设备运行工况还会变化:

不同转速、不同负载、不同温度、不同设备型号、不同安装条件,甚至传感器安装位置变化,都可能改变数据分布。

这种现象通常被称为:

Domain Shift,也就是数据域发生了变化。

因此,实际工业项目越来越需要:

迁移学习、领域自适应和自监督学习。


十三、自监督学习可能比“直接上Transformer”更加重要

工业企业真正拥有的大量数据往往是:

没有标签的运行数据。

例如一台设备可能已经连续采集了一年振动数据,但真正经过工程师确认并标注的故障样本非常有限。

如果只采用传统监督学习,大量正常运行数据实际上没有被充分利用。

自监督学习的基本思路是:

先不给数据贴故障标签,而让模型通过其他任务学习设备运行规律。

例如随机遮掉一部分信号:x1,x2,?,x4,x5x_1,x_2,\boxed{?},x_4,x_5

然后让模型预测被遮挡的那个位置。

这个任务看起来简单,但模型为了预测缺失数据,就必须逐渐理解:

设备正常运行信号内部到底存在什么规律。

完成大量无监督预训练以后,再使用少量有标签故障数据进行微调。

于是形成:

大量无标签数据预训练 → 少量标注数据微调 → 故障识别

这与今天大语言模型的“预训练 + 微调”思想非常相似。


十四、不同AI模型如何比较?

下面给出一个更偏工程应用的综合比较。

模型适合的数据小样本能力时间建模原始信号能力可解释性计算量边缘部署
LightGBM人工提取特征很强较弱较弱很强很低很适合
XGBoost人工提取特征很强较弱较弱很强很适合
SVM中小规模特征很强较弱一般中等适合
1D CNN振动、电流、声音中等中等很强中等中等很适合
ResNet原始时间序列中等中等很强中等中等适合
InceptionTime多尺度时间序列中等较强很强中等中等适合
LSTM状态演化序列中等很强一般较弱中等一般
CNN-LSTM高频信号+过程变化中等很强很强较弱较高一般
TCN长时间序列中等很强很强中等中等很适合
Transformer大规模多变量序列较弱很强很强较弱较难
Autoencoder正常数据为主很强中等很强中等中等适合

这个表并不是理论排名,而是从一般工业设备项目的工程角度进行比较。


十五、什么情况下应该优先选择LightGBM?

如果已经有成熟的信号处理方法,并且数据规模有限,那么优先选择:

LightGBM或XGBoost。

例如系统已经能够提取:

振动RMS、峭度、峰值、频带能量、电流RMS、温度变化率、压力波动等特征。

那么使用LightGBM进行分类往往可以很快建立一个高质量基准模型。

它还有一个非常大的工程优势:

模型效果不好时,很容易分析原因。

如果发现某些特征贡献极低,可以重新设计特征;如果模型过度依赖某个转速参数,也可以及时发现。

因此,LightGBM特别适合项目早期。


十六、什么情况下应该选择CNN?

如果拥有大量原始振动、电流或者声音数据,而且希望减少人工特征工程,那么:

1D CNN / ResNet / InceptionTime

通常应该成为主力模型。

尤其对于轴承、齿轮、电机、泵、风机、压缩机等旋转设备,高频振动信号中的冲击和周期特征非常适合卷积网络提取。

如果时频结构特别重要,则可以进一步考虑:

STFT / 小波变换 + 2D CNN。


十七、什么情况下应该选择LSTM或TCN?

如果故障不是由某一个瞬间决定,而与整个动作过程有关,那么需要加强时间建模能力。

例如:

阀门开启过程、电梯门开闭过程、机械臂一次动作过程、电机启动过程、泵启动到稳定运行过程。

这种情况下推荐比较:

CNN-LSTM和CNN-TCN。

其中CNN负责回答:

当前信号里出现了什么特征?

LSTM或TCN负责回答:

这些特征在整个运行过程中是怎样演变的?

从工业边缘部署角度看,TCN尤其值得重点测试。


十八、什么时候才应该认真考虑Transformer?

如果企业已经进入比较成熟的数据阶段,例如拥有:

大量设备、多种传感器、大量历史运行数据、比较完整的标签体系,并且希望建立跨设备、跨工况的统一模型,

那么Transformer会越来越值得考虑。

更加进一步的方向甚至不是训练一个“故障分类Transformer”,而是建立:

设备运行基础模型。

让模型首先学习大量设备正常与异常运行数据,再针对具体任务进行微调。

这种模式可能逐渐发展成为工业领域的:

Equipment Foundation Model。

但对于只有一台设备、几千个样本的项目,没有必要为了使用Transformer而使用Transformer。


十九、实际工业项目推荐采用“双路线甚至三路线”

如果从产品化和可靠性角度考虑,我更推荐同时保留不同类型模型。

第一条路线是:

人工特征 → LightGBM

它代表工程知识路线。

第二条路线是:

原始信号 → CNN / ResNet / TCN

它代表自动特征学习路线。

如果存在明显的动作周期或者长期状态变化,再增加:

CNN → LSTM / TCN

最后可以融合不同模型的输出。

这种架构的最大意义在于:

人工经验和AI自动学习并不是二选一。

工程人员已经知道的故障机理,可以通过人工特征明确提供给LightGBM;

工程人员尚未发现的复杂波形模式,可以让CNN自动学习。

两者结合,通常比完全依赖一个黑箱模型更加可靠。


二十、评价模型时,Accuracy远远不够

假设一个设备10000次运行中只有100次真正故障。

如果模型把所有数据都预测成“正常”,那么准确率仍然可以达到:Accuracy=990010000=99%Accuracy=\frac{9900}{10000}=99\%

但这个模型实际上一个故障都没有识别出来。

因此,在设备故障识别中,单看Accuracy非常危险。

更加应该关注Recall,也就是故障召回率:Recall=TPTP+FNRecall= \frac{TP}{TP+FN}

其中,TPTP 表示正确识别出的故障数量,FNFN 表示实际发生了故障但模型没有发现的数量。

通俗地说:

真正发生的100次故障,模型到底找出了多少次?

还需要关注Precision:Precision=TPTP+FPPrecision= \frac{TP}{TP+FP}

其中 FPFP 是模型误报的故障。

它回答的是:

模型报告100次故障,其中到底有多少次真的发生了故障?

工业系统尤其需要同时关注两类错误:

漏报和误报。

漏报可能导致设备损坏;

误报过多则可能导致人员逐渐不再相信系统。

所以一个真正成熟的模型评估体系,还应该同时比较F1、误报率、漏报率、推理时间、模型大小以及跨工况和跨设备泛化能力。


二十一、工程上推荐的模型演进路线

如果一个设备智能诊断项目从零开始,我更建议采用下面的技术路线:

第一阶段:LightGBM建立基线。

先利用已有工程知识完成特征提取,然后使用LightGBM验证:

数据本身到底能不能区分这些故障?

如果LightGBM都只有60%的准确率,就不应该立即认为换成Transformer可以解决问题。首先应该检查传感器、数据质量、故障定义和样本标签。

第二阶段:引入CNN自动学习原始信号。

建立:

1D CNN、ResNet或者InceptionTime。

然后比较:

人工特征模型 vs 原始信号模型。

只有当深度模型真正带来稳定提升时,复杂度增加才是值得的。

第三阶段:增加时间建模。

如果设备存在完整运行周期,可以进一步测试:

CNN-LSTM和CNN-TCN。

第四阶段:解决数据稀缺和跨工况问题。

引入:

Autoencoder、自监督学习、迁移学习和Domain Adaptation。

第五阶段:Transformer和设备基础模型。

只有当数据规模、多设备规模和任务复杂度真正达到一定水平之后,再考虑建设大型统一时序模型。


二十二、最终建议:设备故障识别不应“唯模型论”

如果必须给出一个比较明确的模型选择建议,那么可以概括为:

LightGBM是最值得建立的工程Baseline;CNN仍然是振动、电流、声音等原始信号故障识别的主力模型;LSTM适合描述设备状态随时间的发展过程;TCN在很多工业时间序列任务中具有很高的性能与计算效率平衡;Transformer更加适合大规模、多传感器、长时间序列和预训练场景;Autoencoder则特别适合“正常数据很多、故障数据很少”的工业现实。

因此,对于多数设备故障识别项目,第一轮真正值得进行的模型对照实验不是:

CNN vs LSTM vs Transformer,谁最先进?

而应该是:

LightGBM vs 1D CNN / ResNet vs CNN-TCN。

如果设备具有明显的连续运行过程,再增加CNN-LSTM。

如果只有大量正常数据,则同时增加Autoencoder异常检测路线。

如果未来积累了大量多设备、多工况、长周期运行数据,再进一步进入Transformer、自监督学习和设备基础模型。

归根到底,设备故障识别真正决定效果的,往往并不是模型名字,而是:

传感器是否采到了真正反映故障的信息、数据是否覆盖真实工况、故障标签是否可靠、训练集与现场数据是否存在分布差异,以及模型在半年、一年以后还能不能保持稳定效果。

因此,工业AI模型选型的核心原则可以概括成一句话:

先用简单模型证明数据有效,再用深度模型减少人工特征;先解决跨工况泛化,再考虑更大的模型。

这通常比一开始直接采用Transformer,更符合设备故障诊断的工程规律。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Are you human? Please solve:Captcha