Self-Supervised Anomaly Detection A Survey and Outlook

本文是异常检测综述的另一篇文章,针对《Self-Supervised Anomaly Detection: A Survey and Outlook》进行翻译。

摘要

在过去几年中,异常检测是机器学习的一个子领域,主要关注罕见事件的检测,随着深度学习模型的空前增长,异常检测得到了极大的改进。
最近,自监督学习的出现引发了新的异常检测算法的发展,其精度大大超过了最先进的水平。本文旨在回顾自监督异常检测的现有方法。我们介绍了常用方法的技术细节,并讨论了它们的优缺点。我们还将这些模型的性能与其他最先进的异常检测模型进行了比较。最后,我们讨论了改进现有算法的各种新方向。

1. 引言

异常检测(AD)的任务是识别与大多数数据显著不同的样本,并经常表现成不规则、虚假、罕见或欺诈性观察的信号。在文献中,也使用了其他术语,如异常值、新颖性、分布外和偏差,而不是异常。异常检测在训练期间无法定义所有现有类的情况下特别有用。这使得AD算法可用于广泛的应用,包括但不限于网络安全中的入侵检测、金融和电信中的欺诈检测、声学新颖性检测、股票市场分析、地球科学领域中的事件检测、物理学、天文学,医学诊断和疾病检测、生物信息学和遗传学。
在过去的几十年里,为异常检测开发了一系列机器学习模型。核密度估计(KDE)、一类支持向量机(OCSVM)和孤立森林(IF)是异常检测中流行的经典(非深度)方法。这些算法仍然广泛用于解决异常检测任务,但在高维问题中其精度会下降。
近年来,深度模型已变得流行,并在大范围的应用中得到广泛应用。这些方法可以显著优于传统的基于非深度学习的算法,并在诸如对象识别和机器翻译等任务实现近乎人类水平的准确度。深度模型的一个关键优势在于,它们能够从原始数据中自动学习低维表示。因此,它们通常用于代替传统机器学习框架中使用的手动特征提取过程。
基于深度学习的AD模型可以大致分为三类

### 基于动态Transformer UNet的扩散模型在自监督异常分割中的应用 自监督学习已成为工业视觉领域的重要研究方向,尤其是在异常检测和分割任务中。基于动态Transformer UNet的扩散模型结合了动态计算机制与扩散模型的优势,在无监督或弱监督条件下实现了高效的特征学习和异常识别能力。 #### 扩散模型的基本原理 扩散模型是一种生成式模型,通过逐步添加噪声将数据分布转换为高斯分布,随后通过反向过程重建原始数据。这一特性使得扩散模型能够学习到数据的潜在分布,并在图像修复、去噪以及生成任务中表现出色。在异常分割场景中,扩散模型可以利用正常样本的学习结果对输入图像进行重建,从而发现与正常模式不符的区域 [^1]。 #### 动态Transformer UNet的结构优势 传统的UNet架构广泛应用于图像分割任务,其编码器-解码器结构能够有效地捕捉局部细节与全局上下文信息。然而,在大规模工业图像处理中,传统UNet存在计算冗余的问题。为此,引入**动态Transformer**(Dynamic Transformer)模块可以在推理过程中根据图像内容动态剪枝不重要的token,减少计算开销并提升效率 [^4]。 在基于扩散模型的异常分割框架中,**动态Transformer UNet**被用作主干网络,其核心思想是: - 在编码阶段,使用动态Transformer提取多尺度特征,并根据特征重要性选择性保留关键token。 - 在解码阶段,结合扩散模型的重建能力,对输入图像进行去噪操作,同时关注与异常相关的区域。 这种设计不仅提高了模型的推理速度,还增强了对复杂背景中微小异常的敏感度。 #### 自监督训练策略 为了实现完全自监督的异常分割,该方法通常采用以下训练策略: 1. **无监督预训练**:首先在大量正常样本上进行预训练,使模型掌握正常样本的特征分布。 2. **扩散重建损失**:在训练过程中,随机掩码部分图像区域,并通过扩散过程重建这些区域。模型在重构正常区域时表现良好,而在包含异常的区域则出现较大误差。 3. **一致性正则化**:引入自适应一致性正则化(Adaptive Consistency Regularization),增强模型对不同视角或扰动下的输入保持预测一致的能力,从而提高鲁棒性 [^5]。 #### 实验效果与性能 实验表明,基于动态Transformer UNet的扩散模型在多个工业异常检测数据集上取得了优异的表现。相比传统卷积UNet和静态Transformer模型,该方法在保证精度的同时显著降低了计算资源消耗。特别是在高分辨率图像处理中,动态机制带来的效率提升尤为明显 [^3]。 此外,该方法在没有标注数据的情况下,仅通过正常样本的重建误差即可实现像素级的异常分割,适用于实际工业场景中异常样本稀缺的情况。 ```python # 示例代码:扩散模型与动态Transformer UNet的融合结构(简化版) import torch from torch import nn class DynamicTransformerBlock(nn.Module): def __init__(self, dim, num_heads): super().__init__() self.attn = nn.MultiheadAttention(dim, num_heads) self.norm = nn.LayerNorm(dim) def forward(self, x): # 动态token剪枝逻辑可在此处插入 x = self.norm(x) attn_out, _ = self.attn(x, x, x) return x + attn_out class DiffusionUNet(nn.Module): def __init__(self, in_channels=3, out_channels=3): super().__init__() self.encoder = DynamicTransformerBlock(dim=768, num_heads=12) self.decoder = nn.Sequential( nn.ConvTranspose2d(768, 256, kernel_size=4, stride=2, padding=1), nn.ReLU(), nn.ConvTranspose2d(256, out_channels, kernel_size=4, stride=2, padding=1) ) def forward(self, x, t): # 模拟扩散时间步t的影响 x = self.encoder(x) x = self.decoder(x) return x ``` 上述代码展示了一个简化的扩散UNet模型,其中结合了动态Transformer模块。实际部署时需加入完整的扩散过程与训练策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值