4、异常检测方法概览:基于统计、基于距离、基于重构、基于分类的方法,以及适合TinyML的轻量级算法选择
振动异常检测是预测性维护与设备状态监测的核心环节。在TinyML场景下,模型需要部署在内存以KB计、算力以MHz计的MCU上,因此异常检测算法的选择不能仅看准确率,更要综合考量计算复杂度、内存占用、实时性与鲁棒性。本章从四类主流异常检测方法出发,剖析其核心原理、适用边界与TinyML适配性,并给出轻量级算法选型决策框架。
上图展示了四类异常检测方法在TinyML场景下的整体框架。基于统计的方法假设正常数据服从某种分布;基于距离的方法依赖样本间的相似性度量;基于重构的方法通过模型对输入的还原能力判断异常;基于分类的方法则利用正常/异常样本的标签信息。四类方法各有优劣,下面逐一展开。
4.1 基于统计的方法:从分布假设到轻量阈值
核心原理
基于统计的异常检测假设正常振动数据服从某一概率分布(如高斯分布、泊松分布),异常样本则显著偏离该分布。在TinyML中,最常用的是均值-方差阈值法:对正常振动信号提取特征(如RMS、峰值、峭度),计算其均值μ与标准差σ,当新样本特征超出μ±kσ(通常k=3)时判定为异常。该方法计算量极小,仅需维护两个浮点数,非常适合MCU实时计算。
判断方法或操作流程
- 特征提取:从原始振动波形中提取时域特征(RMS、峰值因子、峭度)或频域特征(主频幅值、频带能量)。
- 离线训练:采集设备正常运转时的振动数据,计算特征均值μ与标准差σ。
- 阈值设定:根据3σ准则或业务容忍度设定上下限阈值。
- 在线检测:实时计算新样本特征,与阈值比较,超限即报警。
| 方法 | 计算量 | 内存占用 | 适用场景 | TinyML适配度 |
|---|---|---|---|---|
| 3σ阈值 | O(1) | 2个浮点数 | 平稳转速设备 | ★★★★★ |
| 概率密度估计 | O(n) | 需存储样本 | 分布复杂场景 | ★★☆☆☆ |
| 卡方统计量 | O(d²) | 协方差矩阵 | 多特征联合检测 | ★★★☆☆ |
案例拆解:风扇轴承早期磨损检测
某数据中心风扇在恒定转速下运行,初始振动RMS值为0.12g,标准差0.02g。部署3σ阈值模型后,设定报警阈值为0.18g。运行3个月后,RMS值缓慢上升至0.17g,未触发报警;第4个月某天RMS突增至0.25g,系统立即报警。经拆检发现轴承已出现明显磨损。复盘发现,缓慢漂移型故障用固定阈值容易漏报,后续引入滑动窗口均值更新策略,每24小时用最近7天数据重新计算μ和σ,使检测灵敏度提升40%。
4.2 基于距离的方法:几何空间中的离群点识别
核心原理
基于距离的方法将每个振动样本视为特征空间中的一个点,正常样本在空间中聚集紧密,异常样本则远离正常簇。TinyML中常用k近邻(kNN)距离和聚类中心距离两种简化形式。kNN方法计算新样本与训练集中k个最近邻的平均距离,超过阈值即判异常;聚类方法则先用K-Means等算法对正常样本聚类,再计算新样本到最近聚类中心的距离。
判断方法或操作流程
- 特征降维:对高维振动特征(如FFT频谱)进行PCA或自编码器降维,保留前2-5个主成分。
- 离线建模:用正常样本训练聚类模型(如K-Means,k=3~5),记录各簇中心坐标。
- 距离计算:在线计算新样本到最近簇中心的欧氏距离或马氏距离。
- 动态阈值:以训练集中所有样本到簇中心距离的95%分位数作为阈值。
实战场景:电机负载突变检测
某工业电机在正常工况下振动特征(1x频幅、2x频幅、RMS)形成紧密簇。部署基于K-Means(k=3)的距离检测模型后,当电机负载突然增加20%时,振动特征点迅速偏离原簇中心,距离从平均0.35跃升至1.82,超过阈值0.8,系统在200ms内完成报警。相比统计方法,距离方法对多特征联合变化更敏感,能捕捉到单一特征未超限但组合特征异常的情况。
4.3 基于重构的方法:自编码器与PCA的降维重构误差
核心原理
基于重构的方法利用模型对正常数据的"压缩-还原"能力。自编码器(AE)通过编码器将输入压缩到低维瓶颈层,再由解码器还原;PCA则通过线性投影实现类似功能。模型仅用正常样本训练,因此对正常数据重构误差小,对异常数据重构误差大。TinyML中常用线性自编码器(即PCA的神经网络实现)或小型深度自编码器(2-3层全连接)。
判断方法或操作流程
- 模型设计:输入层维度=特征维度(如32维FFT幅值),隐藏层维度=8~16,输出层=输入维度。
- 离线训练:用正常振动数据训练模型,最小化重构误差(MSE)。
- 阈值标定:计算训练集所有样本的重构误差,取99%分位数作为阈值。
- 在线推理:将新样本输入模型,计算重构误差,超过阈值即判异常。
| 模型 | 参数量 | 推理计算量 | 重构能力 | MCU可行性 |
|---|---|---|---|---|
| 线性AE(PCA) | d×h | O(d×h) | 线性特征 | 高 |
| 2层全连接AE | d×h+h×d | O(2×d×h) | 非线性特征 | 中高 |
| 卷积AE | 较大 | 高 | 局部特征 | 低 |
案例拆解:齿轮箱断齿故障的早期预警
某减速齿轮箱正常运行时,振动频谱以啮合频率及其谐波为主。采集1024点FFT幅值作为输入特征(32维),训练一个隐藏层16节点的自编码器。正常样本重构误差均值0.02,阈值设为0.05。当齿轮出现微小裂纹时,高频分量发生变化,重构误差升至0.11,系统提前72小时预警。相比统计方法(RMS未超限),重构方法能捕捉频谱形状的细微变化。但代价是模型训练需要较多样本(约5000组正常数据),且MCU上需存储权重矩阵(32×16+16×32=1024个浮点,约4KB)。
4.4 基于分类的方法:监督学习与一类分类
核心原理
基于分类的方法分为两类:一类是传统二分类(正常vs异常),需要大量标注数据;另一类是一类分类(One-Class Classification),仅用正常样本训练,如One-Class SVM、隔离森林。TinyML中更常用后者,因为异常样本难以获取且种类多样。隔离森林通过随机切分特征空间,异常样本更容易被孤立,路径长度更短。
判断方法或操作流程
- 数据准备:仅需正常振动数据,提取特征并标准化。
- 模型训练:训练隔离森林(树数量50~100,每棵树深度限制8~10)或One-Class SVM(RBF核)。
- 异常评分:隔离森林输出异常分数(0~1),SVM输出到超平面的距离。
- 阈值设定:用验证集正常样本的分数分布确定阈值。
实战场景:泵阀气蚀检测
某水泵在气蚀初期产生高频冲击振动。采集正常数据2000组,训练隔离森林(100棵树,深度8)。部署后,气蚀初期异常分数从0.35升至0.78(阈值0.6),成功预警。对比发现,统计方法需RMS超限15%才报警,而隔离森林在RMS仅超限5%时即捕获异常,提前量约3小时。但隔离森林对特征分布漂移敏感,设备转速变化时需重新训练。
4.5 TinyML轻量级算法选择决策框架
核心原理
算法选择需综合评估四个维度:内存预算、计算实时性、检测灵敏度、鲁棒性。TinyML设备通常具备以下约束:Flash 256KB~1MB,RAM 16~256KB,CPU主频 80~240MHz,单次推理时间需控制在10ms内。
决策流程
- 评估特征维度:若特征维度≤8,统计方法即可;若>8,考虑距离或重构方法。
- 评估异常类型:若为幅值突变型,统计方法有效;若为频谱形状变化,重构方法更优;若为组合特征异常,距离或隔离森林更合适。
- 评估内存余量:RAM<32KB时,仅考虑统计或距离方法;RAM≥64KB时,可部署小型自编码器或隔离森林。
- 评估实时性:若需1kHz采样率下逐样本检测,统计方法(O(1))是唯一选择;若可接受10ms窗口批量处理,其他方法均可。
| 约束条件 | 推荐算法 | 典型内存 | 推理时间(80MHz MCU) |
|---|---|---|---|
| RAM≤16KB, 特征≤4 | 3σ阈值 | 0.1KB | <0.1ms |
| RAM≤32KB, 特征≤8 | K-Means距离 | 1KB | 0.5ms |
| RAM≤64KB, 特征≤32 | 线性自编码器 | 4KB | 2ms |
| RAM≤128KB, 特征≤64 | 隔离森林(100棵树) | 8KB | 3ms |
案例拆解:无线振动传感器节点算法选型
某工业无线传感器节点采用Cortex-M4 80MHz MCU,RAM 64KB,Flash 256KB,电池供电,需每5分钟采集一次振动数据(1024点,采样率10kHz),并通过BLE上传结果。初始方案采用自编码器(隐藏层32节点),模型推理时间3.2ms,内存占用12KB,满足要求。但实际部署后发现,电池续航从预期6个月降至3个月,因为每次推理需唤醒MCU并加载权重。优化方案:改用K-Means距离检测(k=4,特征降维至6维),推理时间0.8ms,内存占用2KB,电池续航恢复至5.5个月。检测准确率仅下降2%(从97%降至95%),但功耗降低60%。
总结复盘
四类异常检测方法各有适用边界:统计方法适合简单场景、资源极度受限;距离方法在中等特征维度下表现均衡;重构方法能捕捉复杂模式但需较多内存;分类方法(隔离森林)灵敏度高但需注意分布漂移。实际TinyML项目中,建议采用"两级检测"策略:第一级用统计方法做快速粗筛,第二级用距离或重构方法做精确判断。这种组合既能保证实时性,又能提升检测精度,且总内存占用可控制在10KB以内。