TranAD消融实验完全指南:Basic、Transformer、Adversarial、SelfConditioning四大变体贡献量化对比

发布时间:2026/8/24 17:22:20
TranAD消融实验完全指南:Basic、Transformer、Adversarial、SelfConditioning四大变体贡献量化对比 TranAD消融实验完全指南Basic、Transformer、Adversarial、SelfConditioning四大变体贡献量化对比【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranADTranAD 是基于 Transformer 的多变量时序异常检测模型VLDB 2022通过自条件化Self-Conditioning与对抗训练Adversarial Training显著提升检测精度。本文带你从零跑通 TranAD 消融实验逐一量化 Basic、Transformer、Adversarial、SelfConditioning 四大变体的性能贡献帮你快速理解每个组件到底带来了多少提升。一张图看懂TranAD 在 9 大数据集上的总战绩先看论文的核心结果表来自仓库内置的 results/main.PNGTranAD 在 NAB、UCR、SMAP、MSL 等数据集上拿下最优 F1 / AUC例如 NAB 的 F1 达到 0.9364AUC 0.9541UCR 的 F1 为 0.9694均明显领先 LSTM-NDT、OmniAnomaly、USAD、GDN 等 13 个基线模型。消融实验是什么逐个拆开 TranAD 的 4 大组件消融实验Ablation Study的思路很简单把完整模型像拆积木一样每次拿走一块组件观察性能变化从而量化每个组件的贡献。TranAD 官方代码内置了 4 个消融变体见 README.md模型名称Transformer 骨干自条件化Self-Conditioning对抗训练AdversarialTranAD_Basic✅❌❌TranAD_Transformer❌FCN 骨干✅❌TranAD_Adversarial✅✅❌TranAD_SelfConditioning✅❌✅TranAD完整版✅✅✅⚠️ 命名小贴士变体名指的是该消融中重点考察的组件。例如TranAD_Transformer实际是 FCN全连接网络骨干 自条件化的版本用来回答骨干换成 Transformer 到底有没有用这个经典问题TranAD_SelfConditioning则是去掉自条件化、仅保留对抗训练的对照组。四大组件在源码中分别长什么样所有变体定义在 src/models.py 中值得重点阅读TranAD_Basicsrc/models.py#L354-L376最朴素的版本——1 层 TransformerEncoder 1 层 TransformerDecoder 位置编码输入 10 步窗口重构最后 1 步数据。它是所有组件的底座。自条件化 Self-Conditioningsrc/models.py#L517-L524完整版的forward分两阶段执行。第一阶段c torch.zeros_like(src)零向量条件得到初步重构x1第二阶段把重构误差c (x1 - src) ** 2拼接到输入再次编码解码得到最终输出x2。误差信号让模型自我审视显著稳定训练。TranAD_Adversarial / TranAD_SelfConditioningsrc/models.py#L420-L488与完整版共享双解码器结构仅组件组合不同是消融对照的核心。快速上手3 步跑通 TranAD 消融实验第 1 步克隆仓库并安装依赖git clone https://gitcode.com/gh_mirrors/tr/TranAD cd TranAD pip3 install torch torchvision torchaudio pip3 install -r requirements.txt要求 Python 3.7 及以上。第 2 步预处理数据集python3 preprocess.py SMAP MSL SWaT WADI SMD MSDS UCR MBA NAB该命令由 preprocess.py 驱动把 data/ 下的原始数据如 SMAP/MSL 的.npy、SWaT 的 data/SWaT/series.json统一切分、归一化并生成标签。若某个数据集无法下载直接从命令中删掉该名称即可预处理不会中断。第 3 步依次运行四大消融变体python3 main.py --model TranAD_Basic --dataset SMD --retrain python3 main.py --model TranAD_Transformer --dataset SMD --retrain python3 main.py --model TranAD_Adversarial --dataset SMD --retrain python3 main.py --model TranAD_SelfConditioning --dataset SMD --retrain python3 main.py --model TranAD --dataset SMD --retrain参数含义定义于 src/parser.py参数作用--model模型名消融四变体 TranAD 完整版均可选--dataset数据集名SMAP / MSL / SWaT / WADI / SMD / MSDS / MBA / UCR / NAB--retrain强制重新训练否则加载 checkpoints/ 中的已有模型--less只用 20% 训练数据适合快速实验读懂训练与评估输出每个变体训练 5 个 epochmain.py 中num_epochs 5输出示例摘自 README.mdTraining TranAD on SMAP Epoch 0, L1 0.09839354782306504 ... Training time: 3.1920 s Testing TranAD on SMAP {FN: 0, FP: 182, Hit100%: 1.0, NDCG100%: 0.9999..., f1: 0.8915, precision: 0.8043, recall: 0.9999, ...}评估逻辑值得注意损失加权自条件化模型的两个阶段损失按1/n : (1-1/n)n10加权即第二阶段含自条件信号权重更高main.py#L264指标来源F1、AUC 等指标由 src/pot.py 基于 POT 假设检验计算并附加 src/utils.py 中的 Hit、NDCG 时序定位指标阈值与学习率按数据集差异化配置集中存放在 src/constants.py如 SMAP 的 percentile 为 97、SMD 为 98。训练过程还会自动落盘模型权重保存到checkpoints/模型_数据集/model.ckpt损失曲线图由 src/plotting.py 绘制并输出到plots/目录。官方已预置 plots/TranAD_SMD/output.pdf检测分数 vs 重构结果可视化和 plots/TranAD_SWaT/training-graph.pdf训练损失曲线可直接参考。结果解读量化四大组件的贡献把 5 个模型在同一数据集上的 F1 / AUC 横向对比即可得到组件贡献Basic → 完整版Transformer 骨干 自条件化 对抗训练的累计增益即完整方案值不值FCN vs Transformer 骨干对比TranAD_TransformerFCN与TranAD_AdversarialTransformer 骨干隔离出注意力机制在跨变量特征关联上的价值自条件化的稳定性论文中自条件化对对抗训练尤其关键——第二阶段误差条件信号降低了训练方差这也是 F1 提升最明显的来源之一对抗训练的泛化收益对比带/不带对抗训练的两组变体观察其在 WADI、SMD 等难数据集上的 AUC 差异。 实践建议消融对比务必固定数据集、种子与 epoch 数README 也提示可重复运行多次以保证统计显著性用--less先在单变量UCR上快速验证再扩展到 SMAP、SMD 等多变量场景完整基线模型USAD、OmniAnomaly、GDN、MTAD-GAT 等共 9 个实现也在 src/models.py 中可与四变体一起纳入你自己的消融表。常见坑与排查清单现象原因与解法Processed Data not found未执行预处理先运行preprocess.py生成.npy缓存变体结果与论文有出入官方代码注明为重构版且基线建议用各自原始代码库复现见 README.md训练极快SMAP 约 3 秒属正常现象训练数据量小单序列、5 epoch、CPU 可跑阈值 F1 异常低检查 src/constants.py 中percentiles是否匹配你的数据集小结TranAD 消融实验的核心路径只有一条Basic 打底 → 换 Transformer 骨干 → 加自条件化 → 加对抗训练四步走完就能完整复现 VLDB22 论文的组件贡献分析。掌握这条链路后你不仅能读懂论文表格中每个数字的来源还能把同一套逐组件拆解的方法迁移到自己的时序异常检测研究中。动手试试在 SMD 数据集上跑完这 5 个变体吧你得到的就是第一张属于自己的量化消融表 【免费下载链接】TranAD[VLDB22] Anomaly Detection using Transformers, self-conditioning and adversarial training.项目地址: https://gitcode.com/gh_mirrors/tr/TranAD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考