当前位置: 首页 > news >正文

TranAD对比8大基线模型:LSTM_AD、OmniAnomaly、USAD、GDN等异常检测算法实测分析

TranAD对比8大基线模型:LSTM_AD、OmniAnomaly、USAD、GDN等异常检测算法实测分析

【免费下载链接】TranAD[VLDB'22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranAD

TranAD 是基于深度 Transformer 网络的多变量时间序列异常检测框架(VLDB 2022 论文开源实现),内置了 LSTM_AD、OmniAnomaly、USAD、GDN 等 8 个主流基线模型,支持在 SMAP、MSL、SWaT、SMD 等 9 个公开数据集上"一键复现"论文结果。本文带你实测对比这些异常检测算法的表现,并讲清楚 TranAD 为什么更强。

一、TranAD 是什么?适合谁用?

TranAD(Deep Transformer Networks for Anomaly Detection in Multivariate Time Series Data)解决的核心问题是:

  • 多变量时间序列:一条时间线上有多个特征(如机器 25 个传感器指标),需要整体判断是否异常;
  • 异常检测 + 异常诊断:不仅给出"哪段时间异常",还能输出每个特征维度的异常分数,定位"哪个指标出了问题";
  • 统一对比:仓库里直接实现了 8 个基线异常检测算法,同代码、同数据、同指标横向对比,省去自己搭实验环境的麻烦。

💡 适合人群:做时序异常检测研究的研究生/工程师、需要选型异常检测算法的业务同学。

二、快速上手:3 步跑通异常检测对比实验

1️⃣ 获取代码

git clone https://gitcode.com/gh_mirrors/tr/TranAD

2️⃣ 安装依赖(Python ≥ 3.7)

pip3 install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html pip3 install -r requirements.txt

3️⃣ 预处理数据 + 训练模型

# 预处理 9 个数据集(数据集不全可删减,详见 data/ 下各目录 readme) python3 preprocess.py SMAP MSL SWaT WADI SMD MSDS UCR MBA NAB # 训练并测试某个异常检测模型 python3 main.py --model TranAD --dataset SMAP --retrain

其中--model可取:TranADGDNMAD_GANMTAD_GATMSCREDUSADOmniAnomalyLSTM_AD--dataset可取SMAPMSLSWaTWADISMDMSDSMBAUCRNAB。加--less参数则只用 20% 训练数据,方便快速验证。

三、8 大基线异常检测算法一览

仓库中所有模型定义在src/models.py,训练调度逻辑在main.py,每个基线对应一类经典思路:

基线模型核心思路类型
LSTM_AD单变量 LSTM 自编码,重建误差判异RNN 自编码
OmniAnomalyVAE + RNN,概率化异常评分,支持流式检测变分自编码
USAD双自编码器对抗式训练,放大正常/异常差距对抗自编码
GDN图自注意力 + 自编码,显式建模特征间关系图注意力
MAD_GAN生成器 + 判别器,重建误差 + 判别分数GAN
MTAD_GAT门控图注意力 + LSTM 混合建模GNN + RNN
MSCRED多变量自编码 + 图注意力联合训练自编码
MERLIN基于自注意力的序列异常评分(实现见src/merlin.py注意力

四、实测结果对比:TranAD 赢在哪?

项目自带的九大数据集完整对比结果如下图所示(指标为各数据集上的 Precision / Recall / AUC / F1):

📊 关键结论(摘自上表 F1 列):

  1. TranAD 在 9 个数据集中的 F1 均位于第一梯队:NAB 0.9364、UCR 0.9694、MBA 0.9780、SMAP 0.8915、SWaT 0.8151、MSDS 0.9262 均为全场最高;
  2. GDN 在 MSL 上 F1 最高(0.9591),但 TranAD 以 AUC 0.9916 的排序能力紧随其后,说明其异常分数区分度极强;
  3. 简单模型在复杂场景掉分明显:WADI 上 LSTM-NDT 的 F1 仅 0.0271、DAGMM 仅 0.1412,而 TranAD 稳定在 0.4951,体现 Transformer 对多变量复杂耦合关系的建模优势;
  4. SMD 数据集上,TranAD 拿下 AUC 0.9974、F1 0.9605 双第一,工业机器监控场景可直接参考该配置。

⚠️ 注意:仓库内的基线代码是简化实现,官方建议精确复现论文原数据时应使用各基线原始代码库(README 中已注明)。

五、TranAD 为什么更强?三大核心技术

完整模型定义见 src/models.py 中的TranAD类(L491 起),核心设计有三点:

  • Transformer 编码-解码结构:以 10 步窗口输入(n_window=10),编码器学习多变量依赖,解码器重建当前时间步,重建误差即异常分数;
  • 自条件(Self-conditioning):两阶段解码——第一阶段正常解码,第二阶段把第一阶段的重建误差作为异常分数条件再次解码,让模型学会"利用已检测到的异常"提升精度;
  • 对抗训练(Adversarial):训练中向输入添加对抗扰动,增强对未见异常模式的鲁棒性。

想拆解各组件贡献?仓库提供了 4 个消融变体,直接换模型名即可运行:

python3 main.py --model TranAD_Basic --dataset SMAP --retrain python3 main.py --model TranAD_Transformer --dataset SMAP --retrain python3 main.py --model TranAD_Adversarial --dataset SMAP --retrain python3 main.py --model TranAD_SelfConditioning --dataset SMAP --retrain

超参数(学习率、epoch 等)统一在src/params.jsonsrc/constants.py中配置,可按数据集微调。

六、如何看懂输出指标?

训练完成后,程序会打印每个特征维度的检测结果与整体汇总,例如:

Training time: 3.1920 s Testing TranAD on SMAP {'FN': 0, 'FP': 182, 'TP': 748, 'TN': 7575, 'f1': 0.8915, 'precision': 0.8043, 'recall': 0.9999, 'Hit@150%': 1.0, 'NDCG@150%': 1.0, 'threshold': 0.1613}
  • P / R / F1:检测准确率的经典三件套,选型看 F1 最直观;
  • AUC:异常分数排序能力,AUC 高意味着容易通过阈值调参;
  • Hit@150% / NDCG:检测位置与真实异常区间的对齐程度,衡量"报得准不准位置";
  • threshold:推荐判异阈值,可直接用于线上部署。

每次运行还会在plots/下生成训练曲线与预测曲线 PDF(如plots/TranAD_SMD/training-graph.pdf),便于可视化对比不同模型的收敛情况。

七、总结:怎么选异常检测算法?

场景推荐
多变量复杂系统、精度优先TranAD(F1/AUC 综合最强)
需要图结构建模传感器关系GDN
流式/在线检测、概率输出OmniAnomaly
计算资源受限LSTM_AD(但复杂场景精度损失大)

TranAD 用统一的代码框架把 Transformer 异常检测做到了"开箱即比",是时序异常检测选型与论文实验复现的高性价比起点。动手试试吧!🚀

【免费下载链接】TranAD[VLDB'22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranAD

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4189469.html

相关文章:

  • 应广PMS132B单片机入门:从寄存器操作到点灯实战
  • Web智能体安全新范式:基于推理驱动的提示词注入防御实践
  • AI编码智能体如何作为测试套件审计员,发现传统测试遗漏的缺陷
  • 盘点编程题库
  • 智能体化数据系统:如何弥合语义鸿沟,避免分析工作流落地失败?
  • STM32标准库开发入门:从零搭建工程到点亮LED实战指南
  • 为什么 playground-elements 默认把沙箱放在 unpkg.com?读懂 4 条关键安全规则
  • 原生PHP网站如何实现QQ登录?
  • ATANT v1.1基准测试:系统化评估大模型记忆与长上下文能力
  • 解释一下Cookie和Session的区别及其应用场景。
  • 【学习篇】C语言数组填充值规则
  • Chrome与Edge技巧与扩展
  • CentOS/Ubuntu服务器等保整改实战:从安全基线到合规落地
  • 基于RK3588的边缘AI实战:从芯片解析到智慧场景全链路部署
  • VSCode+CMake中文乱码终极解决方案:从原理到实战
  • 深入解析C++ Vector:从动态数组到高性能容器的核心原理与实践
  • 基于OpenClaw与GLM 5.1构建免费AI Agent:本地部署与实战指南
  • 多智能体协作重塑长视频:Soap2Soap架构与实现解析
  • Java全栈工程师面试核心技术与实战指南
  • ComfyUI-LTXVideo 完整上手教程:10 分钟跑出第一条 LTX-2 视频
  • AI时代求职必备:5款降AI率工具深度评测
  • 大模型技术面试核心:强化学习与PPO/GRPO算法解析
  • 系统架构设计师考后复盘:从真实考场到架构决策实战
  • DeepSeek Harness插件开发实战:从环境搭建到API集成
  • SystemVerilog中rand与randc的深度解析:从原理到实战应用
  • 基于认知过程模型的多智能体动态情绪对话系统设计与实现
  • 构建可扩展后端系统:从核心模式到实战部署
  • MIT 6.006算法精髓:从排序、哈希到图与DP的工程实践指南
  • 三模无线游戏鼠标选购指南:从传感器到人体工学的技术解析
  • 技术面试中的幽默艺术与沟通策略