代码链接:GitHub - sxxmason/FGANomaly: Implementation of FGANomaly
级别:IEEE Trans
补充部分GAN的知识
1. 源于论文:《Generative Adversarial Nets》
2. GAN的网络框架:
3. “GAN” 与 “对抗样本” 的区别:
“对抗样本” 简介:
对输入图像进行迭代修改,误导神经网络 “指鹿为马”
与 “GAN” 的区别:
“对抗样本” 仅修改输入图像,不被用于网络训练
4. 目标函数(注意并非 “损失函数”):
5. 图示说明 GAN 的训练过程:交替 训练 “判别器” 及 “生成器”
6. 具体算法流程:
(一) 前置知识
1. 观测值 Observation (Sample/Instance):
单维时间序列 —— 标量;多维时间序列 —— m维张量;
2. 重建 / 重构(Reconstruction):基于重构的异常检测方法 首先将 输入数据 分解为 其低维表示(或编码),再用这些编码对输入数据进行重构;
3. 重建误差(Reconstruction error):原始观测值与其相应重建值间的距离;
公式为:
4. 次优性能(sub-optimal performance)
5. 维度诅咒(dimensionality)
(二) 整体框架
(三) Methology
1. 面临的问题 :
正常数据 + GAN → 遵循正常数据分布,生成正常数据,难以重建异常数据,易检测异常;
在实践中,建立一个仅由正常样本组成的训练集非常困难;当训练集被异常样本污染时;
→ GAN 捕获的数据分布不再准确
2. Pseudo-Label and Filter GAN(伪标签 及 具备过滤功能的GAN):
无监督学习(unsupervised learning)场景下,无法通过标签过滤噪音;
→ 生成基于 重建误差(reconstruction errors)的 伪标签(pseudo-labels):
GAN 在训练初期捕获的异常分布不准确,引入平衡因子(a balance factor):
获得伪标签后,计算损失值:(我的理解:仅让正样本参与损失值计算)
3. Adaptive Weighted Loss(自适应、带权重 的 损失机制):
重建误差越大,观测值越可能出现异常 →
可在计算损失前为每个观测值分配一个权重:观测值越有可能为正例,分配给其的权重越大;
在每次迭代反向传播前,获得所有观测值的z-score:
z-score > 0 → 重构误差大于平均水平 → 权重 < 1/w (重构误差越大,对应权重越小);
z-score<0 → 重构误差小于平均水平 → 权重 >1/w (重构误差越小,对应权重越大);