时间序列异常检测(TSAD)是物联网时代一项重要的数据挖掘任务,有着广泛的应用。近年来,大量基于深度神经网络的方法被提出,在解决各种领域的挑战性TSAD问题方面,它们的性能明显优于传统方法。然而,这些深度TSAD方法通常依赖于干净的训练数据集,不受异常污染,以学习潜在动态的“正常剖面”。这个要求很重要,因为在实践中很难提供干净的数据集。此外,在没有意识到它们的鲁棒性的情况下,盲目地应用带有潜在污染训练数据的深度TSAD方法可能会导致检测阶段的性能显著下降。在这项工作中,为了解决这一重要挑战,我们首先研究了常用的带有污染训练数据的深度TSAD方法的鲁棒性,为在提供的训练数据不保证是异常的情况下应用这些方法提供了指导。此外,我们提出了一种模型不可知的方法,可以有效地提高学习具有潜在污染数据的主流深度TSAD模型的鲁棒性。实验结果表明,在广泛使用的基准数据集上,我们的方法能够一致地防止或缓解主流深度TSAD模型的性能下降。
近年来,深度神经网络(DNNs)被广泛应用,在解决各种现实应用中具有挑战性的TSAD问题方面显示出了比传统异常检测模型更好的性能。到目前为止,主流的深度TSAD模型可以分为两类:基于预测的和基于重构的。具体来说,基于预测的TSAD首先学习一种预测模型,如递归神经网络[9,15,31,35]和卷积神经网络[13,33]来预测未来时间步长的信号。然后将预测信号与观测信号进行比较,产生剩余误差。如果剩余误差超过阈值,则检测到异常。基于重构的TSAD采用了类似的方法,只是它学习了一种重构模型,如自动编码器[5,16,21,25,38]和变压器[24,32],将时间信号压缩到低维嵌入,然后进行重构。重建误差用于检测异常。
还有其他的深度异常检测模型,如基于密度的[3,11,20,29,37,40],基于生成式对抗网络的[18,19,27,28]和基于一类的[26,34]。然而,它们要么不是专门为时间序列数据设计的,要么与主流模型密切相关,因为它们的底层骨干主要是一个重建或预测模型。
由于通常标记异常的稀缺性,大多数深度TSAD模型都是半监督的,这意味着它们需要一个干净的、不受任何异常污染的训练数据集来学习数据中正常的时间动态剖面。
然而,这样清晰的数据集在实践中很少存在。在实际应用中,建模人员通常会得到可能被未知异常污染的数据集。与此同时,DNN经常使用过度参数化的机制进行训练,这意味着它们的参数数量可能超过训练数据的大小。因此,深度TSAD模型有能力对任何给定的训练数据进行过拟合,而不考虑异常的未知比例,导致检测阶段的性能严重下降。我们在各种基准数据集上使用两个代表性的深度TSAD模型(基于预测的和基于重构的)进行实验,清楚地证明了这个问题。
提出了一种简单而有效的模型不可知论方法,可以显著提高从污染训练数据学习的深度TSAD模型的鲁棒性。具体来说,我们的方法是在模型训练的早期阶段,丢弃训练损失持续较大或损失更新振荡较强的样本。我们的样本过滤方法的理由是DNNs的“记忆效应”[4],这意味着DNNs倾向于优先学习多个样本共享的简单模式,然后在训练过程中逐渐记忆噪声样本。
我们用于学习鲁棒深度TSAD模型的模型不可知样本过滤方法是基于DNN在初始阶段开始从常见模式学习,并在训练期间逐渐适应噪声样本的观察。因此,当对污染数据进行训练时,DNN将优先从正常样本学习,然后再对整个数据集进行过拟合。直观地说,当dnn使用反向传播更新它们的参数时,梯度是对所有训练数据平均的。因此,在初始阶段,整体梯度更容易被正常样本所主导。因此,正常样本上的训练损失更有可能稳步下降,而异常样本上的训练损失在初始阶段的训练时段内保持较大或剧烈波动。
N
N
N为试验epoch的总数,
x
x
x为训练数据
用
L
x
i
L_x^i
Lxi表示
x
x
x在第
i
i
i个epoch结束时的损失
用
Δ
x
i
=
L
x
i
−
L
x
i
−
1
\Delta_x^i=L_x^i-L_x^{i-1}
Δxi=Lxi−Lxi−1表示第
i
i
i个epoch的损失的更新。
在第
N
N
N个试验周期结束时,对每个数据计算以下两个指标
m
x
=
μ
(
L
x
)
w
h
e
r
e
L
x
=
[
L
X
1
,
⋯
,
L
x
N
]
u
x
=
σ
(
Δ
x
)
w
h
e
r
e
Δ
x
=
[
Δ
x
1
,
⋯
,
Δ
x
N
]
m_x=\mu(L_x)\;\;where\;L_x=[L_X^1,\cdots,L_x^N]\\\;\\ u_x=\sigma(\Delta_x)\;\; where\; \Delta_x=[\Delta_x^1,\cdots,\Delta_x^N]
mx=μ(Lx)whereLx=[LX1,⋯,LxN]ux=σ(Δx)whereΔx=[Δx1,⋯,ΔxN]
其中 m x m_x mx是 x x x在试验期间损失的均值, u x u_x ux是 x x x在试验期间损失更新的标准差。
具体来说,用 m x m_x mx来过滤出训练损失较大的样本; u x u_x ux用于过滤掉每epoch损失更新中振荡更强的样本,表明基准面梯度方向与正常样本不一致。任何一个度量值越高,说明样本很可能是一个异常。
设 t t t为潜在污染数据集中异常率的用户定义上限,设 S m = { x ∣ m x > Q m ( 1 − τ ) } S_m=\{x|m_x>Q_m(1-\tau)\} Sm={x∣mx>Qm(1−τ)}和 S u = { x ∣ u x > Q u ( 1 − τ ) } S_u=\{x|u_x>Q_u(1-\tau)\} Su={x∣ux>Qu(1−τ)},其中 Q m ( 1 − τ ) Q_m(1-\tau) Qm(1−τ)和 Q u ( 1 − τ ) Q_u(1-\tau) Qu(1−τ)分别是数据集中 m x m_x mx和 u x u_x ux的 1 − τ 1-\tau 1−τ分位数。我们丢弃了 S m ∪ S u S_m\cup S_u Sm∪Su中的所有样品。在丢弃看似合理的异常样本后,我们在剩余的数据上从零开始重新训练模型。
我们的样本丢弃策略看起来相当激进,然而,由于异常率在大多数情况下是一个小值,而且由于季节性导致的重复模式,时间序列数据往往具有高度的冗余,丢弃一小部分正常数据不太可能导致训练模型的性能下降。
实验的目的有两个。
首先,研究了带有污染训练数据的各种深度TSAD模型的鲁棒性。
其次,验证了所提出的方法是否能有效提高深度TSAD模型的鲁棒性。
选择了四个代表性的模型,基于重构、基于预测、基于密度、分类。
通过计算样本的损失,将损失较大的样本去除早期的模型训练。