4、常用异常检测模型:自编码器、孤立森林、单类SVM、LSTM等,在TinyML中的适用性分析

在TinyML异常检测场景中,模型的选择直接决定了部署后的检测精度、内存占用、推理延迟和能效比。不同于云端或边缘服务器,Ethos-U NPU所服务的MCU级系统通常只有几十KB到几MB的RAM,且对实时性和功耗有严苛要求。本章将系统对比自编码器(Autoencoder, AE)、孤立森林(Isolation Forest, iForest)、单类支持向量机(One-Class SVM, OC-SVM)和长短期记忆网络(LSTM)四类主流异常检测模型,从算法原理、资源开销、部署难度和Ethos-U适配性四个维度展开分析,帮助开发者在实际项目中做出合理选型。

TinyML异常检测模型选型决策框架 传感器/时序数据 传统机器学习模型 孤立森林 (iForest) RAM: 50-200KB 适合: 表格/短序列 单类SVM (OC-SVM) 深度学习模型 自编码器 (AE) RAM: 20-100KB 适合: 多维特征/重构误差 LSTM (长短期记忆) Ethos-U NPU 部署

上图展示了四类模型在TinyML场景下的基本决策路径。传统机器学习模型(iForest、OC-SVM)与深度学习模型(AE、LSTM)在数据适配性、资源消耗和NPU加速效果上存在显著差异。下面将逐一深入分析。

4.1 自编码器(Autoencoder, AE)

核心原理

自编码器是一种无监督神经网络,通过编码器将输入压缩到低维潜空间,再由解码器重构原始输入。训练时仅使用正常数据,使模型学会“压缩-重建”正常模式。推理时,计算重构误差(如MSE),若误差超过阈值则判定为异常。其核心优势在于能够自动学习数据的高阶非线性特征,无需人工设计特征。

在TinyML中的适用性判断

  • 资源开销:全连接AE参数量可控制在10K-100K之间,量化后INT8模型大小约10-100KB,RAM占用20-100KB,适合Cortex-M55/M85等带Ethos-U55/U65的MCU。
  • NPU加速效果:Ethos-U对全连接层和激活函数(ReLU、Sigmoid)支持良好,推理延迟可低至1-5ms(视输入维度而定)。
  • 适用场景:振动信号异常检测、电机电流波形分析、多传感器融合的工业预测性维护。

案例拆解:电机振动异常检测

某工厂需要在STM32N6(集成Ethos-U55)上部署电机轴承故障检测系统。输入为3轴加速度计数据,每轴取256个采样点,共768维特征。选用三层AE(768-64-768),训练集为正常振动数据5000条。

# 模型定义(TensorFlow/Keras)
from tensorflow import keras
model = keras.Sequential([
    keras.layers.Input(shape=(768,)),
    keras.layers.Dense(64, activation='relu'),
    keras.layers.Dense(768, activation='sigmoid')
])
model.compile(optimizer='adam', loss='mse')

部署时使用Vela编译器优化,INT8量化后模型大小42KB,RAM峰值68KB。在Ethos-U55上推理耗时2.3ms,功耗仅0.8mJ/次。通过验证集确定重构误差阈值为0.035,实际测试中故障检测准确率97.2%,误报率1.8%。

经验提醒:AE的潜空间维度不宜过小(信息丢失严重)或过大(过拟合噪声)。建议从输入维度的1/8~1/16开始尝试,并通过验证集误差分布确定阈值。

常见误区

  • 误区一:认为AE只能处理图像。实际上,一维时序信号同样适用,只需将窗口数据展平为向量。
  • 误区二:忽略输入归一化。不同传感器量纲差异大,必须进行Min-Max或Z-score归一化,否则重构误差会被大数值维度主导。
  • 误区三:直接使用浮点模型部署。Ethos-U仅支持INT8/INT16,必须做量化感知训练(QAT)或后训练量化(PTQ),否则精度损失可能超过5%。

4.2 孤立森林(Isolation Forest, iForest)

核心原理

孤立森林基于随机划分思想:异常点通常“少而不同”,更容易被少量随机划分孤立出来。通过构建多棵随机二叉树(iTree),计算样本的平均路径长度,路径越短越可能是异常。该算法线性时间复杂度,且无需计算距离或密度,非常适合高维数据。

在TinyML中的适用性判断

  • 资源开销:模型由多棵决策树组成,每棵树深度通常限制在8-10层。100棵树、深度10的模型约需50-200KB存储(INT8),RAM占用取决于推理时同时加载的树数量。
  • NPU加速效果:不适用。Ethos-U NPU主要加速卷积和全连接层,对树模型的分支判断(if-else)无法有效加速,只能由CPU(Cortex-M55)执行。
  • 适用场景:低功耗蓝牙传输的温湿度传感器数据异常检测、电池供电的野外监测节点。

案例拆解:环境监测节点异常检测

某农业物联网项目使用nRF5340(无NPU)采集土壤温湿度、光照和CO2浓度,每5分钟上报一次。由于数据维度低(4维)、样本量小(每天288条),选用iForest模型。训练时用正常数据构建50棵树,每棵深度6。

# 使用scikit-learn训练
from sklearn.ensemble import IsolationForest
model = IsolationForest(n_estimators=50, max_depth=6, contamination=0.02)
model.fit(X_train_normal)
# 导出为C数组(通过m2cgen或自定义转换)

转换后的C代码占用Flash 38KB,RAM 12KB,在Cortex-M33上单次推理耗时0.4ms。检测到传感器漂移或通信异常时,准确率91.5%。但注意,该方案无法利用NPU,若MCU不带NPU则完全适用;若已有Ethos-U,则NPU处于空闲状态。

风险提示:iForest在低维数据(<10维)上表现良好,但高维数据(>100维)时随机划分效率下降,且树模型无法在Ethos-U上加速。若项目已确定使用NPU,建议优先考虑AE或LSTM。

常见误区

  • 误区一:树越多越好。在MCU上,树数量超过100棵收益递减,且Flash占用线性增长。
  • 误区二:忽略contamination参数。该参数影响阈值设定,需根据实际异常比例调整,而非默认0.1。
  • 误区三:直接使用浮点权重。树模型的分裂阈值需量化为定点数,否则在MCU上运行会因浮点模拟而变慢。

4.3 单类支持向量机(One-Class SVM, OC-SVM)

核心原理

OC-SVM将数据映射到高维特征空间,寻找一个超平面将正常数据与原点分离,最大化超平面到原点的距离。新样本若落在超平面内侧(决策函数值>0)则视为正常,否则为异常。其优势在于小样本下泛化能力强,且决策边界清晰。

在TinyML中的适用性判断

  • 资源开销:模型存储取决于支持向量(SV)数量。通常SV数量为训练样本的10%-30%,若训练集1000条,SV约100-300个,每个SV维度为特征维度。INT8量化后,100维特征、200个SV约需20-80KB。
  • NPU加速效果:部分不适用。OC-SVM的推理核心是计算核函数(如RBF),涉及大量指数运算,Ethos-U不支持。但若使用线性核,则退化为简单的点积运算,可由NPU的矩阵乘法单元加速。
  • 适用场景:小样本工业质检(如PCB焊点检测)、设备启动阶段的基线建立。

案例拆解:PCB焊点异常检测

某电子制造厂需要在产线上对PCB焊点进行快速检测。每块板提取12维特征(如焊点面积、亮度、形状因子),正常样本仅200条。选用线性核OC-SVM,训练后得到45个支持向量。

# 训练线性核OC-SVM
from sklearn.svm import OneClassSVM
model = OneClassSVM(kernel='linear', nu=0.05)
model.fit(X_normal)
# 导出支持向量和rho阈值

部署到STM32H7(无NPU)时,Flash占用15KB,RAM 8KB,推理耗时0.2ms。若迁移到带Ethos-U55的STM32N6,线性核的点积运算可映射到NPU的矩阵乘法单元,推理时间降至0.05ms,但需要手动将支持向量组织为权重矩阵。

关键判断:OC-SVM的RBF核在MCU上计算代价极高(每对样本需计算exp),不推荐。线性核或多项式核(低阶)更适合嵌入式部署。

常见误区

  • 误区一:盲目使用RBF核。RBF核在MCU上无法利用NPU,且浮点exp运算在无FPU的MCU上极慢。
  • 误区二:忽略nu参数调优。nu控制异常比例的上界,需根据实际数据分布调整,而非固定0.1。
  • 误区三:支持向量过多。若训练集过大,SV数量膨胀导致模型超限,需通过减少训练样本或使用近似算法(如SGD)控制。

4.4 LSTM(长短期记忆网络)

核心原理

LSTM通过门控机制(输入门、遗忘门、输出门)捕捉时间序列中的长期依赖关系。在异常检测中,通常使用LSTM预测下一个时间步的值,若预测误差超过阈值则判定异常;或使用LSTM编码器-解码器结构计算重构误差。其优势在于天然适配时序数据,能学习动态变化模式。

在TinyML中的适用性判断

  • 资源开销:LSTM参数量较大。单层LSTM(隐藏单元32)处理1维输入,参数量约4×(1+32)×32=4.2K,量化后约4KB。但若输入维度高(如3轴加速度),参数量会成倍增长。
  • NPU加速效果:Ethos-U对LSTM的支持有限。NPU可加速矩阵乘法部分(输入到隐藏层的变换),但门控激活(sigmoid/tanh)和逐元素操作仍需CPU执行。实际加速比约为2-4倍,不如CNN/AE显著。
  • 适用场景:语音活动检测、ECG心电信号异常识别、连续运行设备的趋势预测。

案例拆解:ECG心电异常监测

某可穿戴设备项目需在Cortex-M55+Ethos-U55上实时检测心律失常。输入为单导联ECG信号,窗口长度128点,采样率250Hz。使用LSTM预测模型:输入前64点,预测后64点,计算MSE作为异常分数。

# LSTM预测模型
model = keras.Sequential([
    keras.layers.LSTM(16, return_sequences=True, input_shape=(64, 1)),
    keras.layers.TimeDistributed(keras.layers.Dense(1))
])
model.compile(optimizer='adam', loss='mse')

INT8量化后模型大小28KB,RAM峰值45KB。在Ethos-U55上推理耗时8.5ms(其中NPU加速矩阵乘法约3ms,CPU执行门控操作5.5ms)。检测房颤的准确率94.3%,但功耗比AE方案高约40%。

风险提示:LSTM在MCU上的主要瓶颈是门控计算的串行依赖,无法完全并行化。若对实时性要求极高(<5ms),建议改用CNN或AE;若必须用LSTM,可考虑减少隐藏单元数或使用GRU(参数量更少)。

常见误区

  • 误区一:认为LSTM一定优于AE。对于短窗口(<100点)数据,AE往往更高效且精度相当。
  • 误区二:忽略状态重置。在MCU上连续推理时,LSTM的隐藏状态需在每次窗口滑动时正确传递,否则会产生累积误差。
  • 误区三:直接部署浮点模型。LSTM对量化敏感,建议使用QAT训练,并验证不同量化精度(INT8 vs INT16)下的性能差异。

4.5 模型综合对比与选型决策

维度 自编码器 (AE) 孤立森林 (iForest) 单类SVM (OC-SVM) LSTM
数据适配性 多维特征、图像、时序 表格数据、低维特征 小样本、低维特征 时序数据、序列预测
模型大小 (INT8) 10-100KB 50-200KB 20-80KB 20-100KB
RAM占用 20-100KB 10-50KB 8-30KB 30-80KB
NPU加速效果 优秀(全连接层) 不支持 仅线性核可加速 部分加速(矩阵乘法)
推理延迟 (Ethos-U55) 1-5ms 0.5-2ms (CPU) 0.1-1ms (CPU) 5-15ms
训练复杂度 中等(需正常数据) 低(无需标签) 低(小样本) 高(需序列数据)
适用场景 振动、电流、多传感器 环境监测、简单阈值 质检、小样本基线 ECG、语音、趋势预测

选型决策流程

  1. 确认硬件:是否集成Ethos-U NPU?若无NPU,优先考虑iForest或OC-SVM(线性核)。
  2. 分析数据:数据维度是否>50?是否具有时序相关性?若高维且非线性,选AE;若低维且独立,选iForest。
  3. 评估实时性:要求延迟<5ms且功耗敏感,选AE;允许10ms以上延迟,可考虑LSTM。
  4. 考虑训练数据量:样本<500且维度低,OC-SVM合适;样本>1000且无标签,AE或iForest更佳。
总结:在Ethos-U平台上,自编码器是综合性价比最高的选择——既能充分利用NPU加速,又具备良好的非线性拟合能力。LSTM适合强时序依赖场景但需接受较高延迟;iForest和OC-SVM在无NPU的低功耗场景中仍有价值,但无法发挥Ethos-U算力优势。