APP下载

基于注意力变分自编码器的时序异常检测算法

2024-03-20陈述团

设备管理与维修 2024年4期
关键词:变分编码器注意力

陈述团

(诸城市交通运输局,山东潍坊 262200)

0 引言

时间序列异常检测广泛应用于各类设备的不同场景中,包括但不限于异常交通流量检测、工业设备状态监测、金融欺诈检测、异常流量检测、各类故障诊断以及汽车的日常监测和维护,随着多元高频传感器的快速发展,不同的应用系统在运行过程中能够收集大规模的时间序列数据[1],因此,有效发现系统中的异常模式对于确保安全性并避免经济损失至关重要。

然而,从大量且复杂的多元时间序列数据中发现异常具有一定挑战性。首先,需要确定异常的模式。异常也称为离群值,这意味着根据情况观察到的异常模式可能是不寻常、不规则、不一致或有缺陷的。此外,典型情况通常很复杂,难以定义什么是不寻常或意外。例如,风力涡轮机在不同天气情况下以不同的模式运行,不同的运行模式并不一定代表其发生了某种异常。不仅如此,随着多元高频传感器的全天候运行,海量监测数据中的异常模式通常是罕见的,这大大增加了标注异常标签的成本。

现有基于时间序列的异常检测方法主要集中于统计方法、传统机器学习方法和基于深度学习的方法[2],其中机器学习方法,特别是基于深度学习的方法,因其强大的数据建模能力而取得了巨大成功。然而,大多数监督和半监督方法无法处理有限的标记数据,特别是动态异常,即训练数据集中从未观察到的新异常。因此,本文提出一种基于变分自编码器的无监督时序异常检测算法,该算法采用重建的思想来学习模型并重建出正常样本,当已训练好的模型无法重建某实例时,该实例则被视为异常。

1 算法理论

1.1 自动编码器

AE(Auto-Encoder,自动编码器)是一种基于无监督的数据维度压缩和数据特征表达方法,在大部分应用场景中其网络结构是通过神经网络实现的。网络模型由编码器和解码器网络组成,编码器网络学习输入的潜在表示并对输入数据进行特征压缩。解码器的输出目标为重建编码器的输入,通过输入和重建之间的差异来确定重建误差。自动编码器有多种类型,但基本上遵循相同的构建模式,即在训练过程中自动编码器将重建误差最小化为目标函数。

AE 通常用于数据生成,作为生成式模型,其解码器可以基于人工分配的压缩表示来生成输出。

1.2 变分自动编码器

VAE(Variational Auto-Encoders,变分自动编码器)是基于贝叶斯推断的自动编码器变体,其结构如图1 所示,其中Decoder 为解码器部分、Encoder 为编码器部分。

图1 变分自动编码器结构

它能够对p(z)的底层分布进行建模,并通过引入一组潜在的变量z 来生成新数据。这个过程可以表达为:

由于z 是连续域,导致积分难以求解。相反,可以将单个点的边际对数似然表示为:

其中,DKL是先验pθ(z)与p(x|z)的变分近似qφ(z|x)的KL 散度;Lvae是根据Jensen 不等式得到的变分下界,φ与θ分别表示编码器与解码器的参数。

VAE 通过最大化对数似然的下界Lvae来优化参数φ与θ:

其中,第一项通过最小化近似后验与潜在变量先验之间的KL 散度来规范潜在变量z;第二项是通过最大化对数似然来重建x。

1.3 自注意力机制

Transformer 的提出给自然语言处理领域带来革命性进展,引领了一系列语言模型的发展,其中核心部分为多头自注意力机制,这使得模型在建模长序列时表现出非凡的效果。自注意力机制作为Transformer 中的核心构建模块,能通过一定的方式建模计算序列中不同位点之间的关联度,从而并行的得到序列位点之间的关联关系,在准确率与计算效率方面明显优于RNN与LSTM 等模型计算方式。

对于流经模型的序列数据,其输入进行自注意力计算前的数据可以表示为X,通过3 个线性嵌入可以生成3 个权重矩阵,这3 个权重矩阵都是可学习的,表示为Wq、Wk、Wv,由输入序列通过这3 个权重矩阵可以得到查询向量q、键向量k、值向量v 所对应的矩阵Q、K、V,表示为:

通过Q 矩阵与K 矩阵相乘并流经softmax 处理后,可以得到序列间的相似度得分,最终通过与V 矩阵进行加权得到最终的注意力输出。整个过程可以表示为:

其中dk是k 矩阵的维度。为了从多尺度学习到不同潜在空间中更加丰富的特征,在自注意力机制的基础上又引入了多头自注意力的计算方式,即在p 个头上进行并行化计算,对于输入需要使用p 个q、k、v 矩阵对其进行映射,最终输出的MSA(Multi-head Self-Attention,多头自注意力)是学习每个头的权重并应用并行点积注意力后得到的结果。

2 基于变分自编码器的异常检测算法

2.1 模型算法

根据上述算法理论,使用自动编码器结构能够训练得到一个学习了正常序列模式的算法模型,该模型在对异常序列进行重建时会表现出较大的重建损失,而变分自编码器在自动编码器的基础上能够对序列进行更好的建模,因此可以作为异常检测算法的基础模型。

依托于注意力机制对序列的建模能力,本文提出了一种注意力变分自动编码器的时间序列异常检测模型,在使用卷积神经网络提取较长序列特征后,采用注意力机制在低维度进行全序列的关联度建模。通过这种模式能够较好地捕捉序列之间的依存关系,能提高整个变分自动编码器特征提取与重建的性能。

本文采用10 层CNN(Convolutional Neural Networks,卷积神经网络)与4 层注意力机制层来构建网络模型,其中编码器与解码器各对应7 层(图2)。注意力变分自编码器模型的输入层接受经过预处理后的时间序列数据,其可接受的数据量占5000 个位点,输入模型前转换为1*1*5000*batch size(批量大小)的张量格式,批量大小表示一次性传播到网络中的样本数,两次注意力层能一次性建模的位点数分别为832、276,稀疏表示(或瓶颈层)的设计大小为1*90*27,卷积层采用一维(1D)卷积,并配合有批处理归一化和激活层,激活层采用tanh 激活函数用于在模型训练中引入非线性,模型的解码器部分(Decoder)是编码器(Encoder)的逆对称,其中模型的卷积层采用(3,3)、(5,5)、(7,7)和(9,9)四种不同大小的滤波器进行上采样和下采样。环境中进行训练,训练过程包括3 个阶段:第一阶段,将输入信号(1*1*5000*batch size)被转发到模型中进行重建,其中批量大小为100;第二阶段,涉及基于均方误差(MSE)和Kullback-Leibler(KL)散度损失找到输入和输出之间的差异;第三阶段及最后阶段涉及网络模型的优化,通过反向传播来传递损失并改变网络的权重以减少损失的大小。该模型使用Adam 优化器进行训练,dropout 设为0.5,每个epoch 的学习率为0.001。

图2 基于注意力变分自编码器的网络模型

2.2 异常检测流程

使用变分自动编码器进行时间序列的异常检测,主要分为3 步骤。

(1)第一步是构建好网络模型。该网络模型是基于本文提出的、基于注意力变分自动编码器的时序异常检测算法。

(2)第二步是将训练集的数据按照原数据量的80%、20%进行划分。其中,占比为80%的数据集单纯用于模型训练,这部分数据被输送到网络模型中进行训练来确保网络模型随着迭代次数的增加而优化,随着模型的训练,重建损失也相应的减小;占比为20%的数据用来评估已训练后的模型来确定异常阈值,在模型训练之后,将来自隔离的正常状态的20%数据输入模型,并计算重建损失从而确定异常数据阈值。阈值是根据计算的重建损失分布计算的,它是平均值和3 个标准偏差的总和,表示为:

(3)第三步则是进行模型的测试。这一步是将带有标签的数据传递给模型并比较重建损失,重建损失低于计算阈值的信号被标记为正常状态,否则为异常状态,从而计算模型检测异常的准确率。

简单来说,该方法背后的原理是模型学习了它经过训练和熟悉的数据的分布,并且无法重建任何其他不熟悉的分布。基于变分自编码器的异常检测算法流程流程如图3 所示。

图3 基于变分自编码器的异常检测算法流程

3 实验分析

本实验采用一套服务器监测数据集,它是一个记录了服务器5 周监测时长的数据集。该数据集包含3组实体,自28 台不同机器的数据组成,并提供标签来表明某个点是否异常以及每个异常的维度。整个数据集的异常率占比4.1%,其中训练集的时序步长为708 400 个时间步,测试集的步长为708 420 个时间步。

本实验的硬件条件为,CPU 为AMD EPYC 7302 CPU@2 GHz、GPU 为NVIDIA GeForce RTX 3090 GPU、64G RAM,实现的模型基于Pytorch、CUDA 11.2、Python 3.8 环境完成。对于异常检测的评价指标设定为精确率(Precision)、召回率(Recall)和F1 值(F1-score),计算方式可以表示为:

其中,TP 表示真正例、FP 表示假正例、FN 表示假反例,F1 是综合考虑了精确率和召回率,调和二者的平均值。

在本实验的数据集上,将基于注意力变分自编码器的无监督时间序列异常检测算法与现有的方法进行对比,这些模型包括密度估计模型LOF[3]、基于子序列的聚类模型OCSVM[3]、基于孤立森林算法的IForest[5]、变化点检测和时间序列分割方法U-Time[6]以及基于自回归重建的模型VAR[7],实验结果如表1 所示。

表1 异常检测实验对比结果

实验结果表明,本文方法在Precision、Recall 和F1-score 这3 个指标方面比现有方法均有提升。其中,对于基于传统统计学及无监督聚类的3 种方法LOF、OCSVM、IForest 方法有大幅性能提升,这也得益于深度学习强特征提取的优势;与时间序列分割的方法UTime 相比也有较大提升,这也验证无监督学习方法在少标签学习的过程中具有较强的优势;本模型也与VAR 进行了对比,在Recall 与F1-score 上有明显提升。这也验证了本方法在模型设计方面的先进性。

4 结束语

针对各种应用场景中高通量多源异构时间序列的产生,现有的方法很难在无异常标签或少量异常标签的状态下对异常情况进行准确识别,本文提出了一种无监督异常序列检测方法,即基于注意力变分自编码器的时序异常检测算法,通过对正常序列重建的方法确定异常阈值。基于这种思路设计了一套异常检测流程,与现有的基于非重建的方法相比,其在准确度、召回率和F1 得分3 个方面的性能明显提升。此外,通过在模型中引入自注意力机制,加强了对序列的特征关联度计算,增强了模型对序列的特征提取以及序列重建能力,其较现有的3 种评估方法也有不同程度的提升,证明了本文方法的有效性。

猜你喜欢

变分编码器注意力
让注意力“飞”回来
逆拟变分不等式问题的相关研究
求解变分不等式的一种双投影算法
基于FPGA的同步机轴角编码器
关于一个约束变分问题的注记
“扬眼”APP:让注意力“变现”
基于PRBS检测的8B/IOB编码器设计
一个扰动变分不等式的可解性
A Beautiful Way Of Looking At Things
JESD204B接口协议中的8B10B编码器设计