基于LSTM-GAN的加油时序数据异常检测

2022-08-10 08:11王保全
计算机应用与软件 2022年7期
关键词:时序样本测试

赵 飏 李 晓 马 博 王保全 周 喜

(中国科学院新疆理化技术研究所 新疆 乌鲁木齐 830011) (中国科学院大学 北京 100049) (新疆理化技术研究所新疆民族语音语言信息处理实验室 新疆 乌鲁木齐 830011)

0 引 言

随着物联网技术的普及,种类丰富的信息传感器已经在人们的生活中随处可见,加油站中的信息采集也由人工记录全面转化为电子传感设备自动录入,使得数据采集更加高效。但由于系统故障错误或人为操作失误等因素,会产生异常加油数据。如何高效、准确地在海量加油数据中检测异常,成为加油站日常运营管理中不可忽视的问题。传统上,基于规则的异常检测方法是检测异常数据的常用解决方案,但由于加油数据体量巨大且拥有多变量的时序特性,无法简单通过基于规则的方法来准确判别异常。机器学习方法也逐步运用在异常检测中并取得了一定成果,但想要在加油站时序数据中检测异常,仍然是一项挑战。因为有监督机器学习方法需要大量真实的正常数据和带有标注的异常数据来训练学习,但实际中加油数据缺乏标记且异常数据较为稀少;而无监督学习大多是将样本数据进行线性变换和投影后嵌入向量空间,通过比较原始数据和预测数据的差异值来检测异常,但实际加油数据虽然数量较多,但个体加油样本普遍较少,且复杂的加油时序序列数据隐含的内在相关性往往是非线性的。

为了解决这一问题,本文针对加油时序数据异常检测提出一种基于生成式对抗网络[1](Generative Adversarial Network,GAN)的无监督异常检测方法,该方法通过捕捉加油站时序数据之间的非线性相关性来建立模型,并结合模型中的生成器和鉴别器共同来进行异常检测。

1 相关工作

目前关于无监督学习的异常检测算法主要可以分成四类:(1) 基于线性模型的方法;(2) 基于距离的方法;(3) 基于概率和密度估计的方法;(4) 基于统计机器学习的方法。

基于线性模型的无监督异常检测方法中,一种主流的方法是主成分分析(Principal Component Analysis,PCA)[2],它对数据进行降维后嵌入到低维空间,通过比较单个数据样本跟整体数据样本的偏离程度来挖掘异常;另一种方法是偏最小二乘法(Partial Least Squares,PLS)[3],它不仅可以克服共线性问题,还去除了对回归无益的噪声影响,因此被广泛应用于模型建立和异常检测。然而,它们只对具有高度相关性的数据有效[4],加油数据中个体和个体之间的加油行为却往往是相互独立的,因此并不适用于加油时序数据。

基于距离的异常检测方法中[5],K近邻(K-NearestNeighbor,KNN)算法是比较简单有效的一种,它通过参考特征空间中距离该样本最近的k个“邻居”的类别来对样本进行分类,从而达到检测异常点的目的[6]。此外还有基于密度、基于聚类的一些衍生方法,例如局部异常因子(Local Outlier Factor,LOF)算法[7],它会给数据中的每个点计算离群因子,通过判断这个离群因子是否接近于1来判定该点是否离群。以及对前者进行改进的基于聚类的局部离群因子(Cluster-Based Local Outlier Factor,CBLOF)[8]方法,它使用一个预定义的异常评分函数来识别异常。虽然这些基于距离的方法在某些情况下是有效的,但在加油时序数据中,数据间的距离难以界定,且正常数据可能没有足够的样本邻居,因此基于距离的异常检测方法不适用于加油时序数据。

基于概率和密度估计的方法中,有基于角度的异常检测(Angle-Based Outlier Detection,ABOD)算法[9],还有特征装袋(Feature Bagging,FB)算法[10],它们都是通过考虑变量之间的相关性来处理数据。但是这些方法不能考虑时序数据中时间步长上的相关性,因而并不适合用来处理加油时序数据。

还有基于统计机器学习的方法,通过神经网络具备的强特征提取能力和信息记忆能力来捕捉正常数据中的异常点,提出很多有效的模型,并应用在了各个领域。比较有代表性的有变分自编码器(Variational Auto-Encoder,VAE)[11]和循环神经网络(Recurrent Neural Network,RNN)[12]等,它们都是利用正常数据训练神经网络,然后通过检测实际数据的重构误差来进行异常检测。

综上,通过神经网络来进行机器学习,捕获数据特征间隐藏的相关性,建立符合实际需求的模型,能够更好地开展对加油时序数据的异常检测工作。

本文继承了基于无监督学习的异常检测算法思想,并受到GAN模型博弈原理[13]的启发后,提出一种新的异常检测方法。主要工作如下:(1) 提出一种基于GAN的无监督异常检测方法,用于检测加油时序数据中的异常;(2) 模型结构采用了广泛应用在图像开发中的GAN框架,将长短期循环神经网络(LSTM)嵌入GAN框架作为生成器和鉴别器[14]来分析加油时序数据,捕捉其时间相关性;(3) 综合鉴别器的判别结果和生成器的数据重构残差来对每一个测试样本进行异常评分。

2 异常检测模型

2.1 GAN模型

近年来提出的生成式对抗网络(GAN)框架能够通过博弈训练生成模型,它以对抗的方式同时训练生成器和鉴别器:生成器(generator,G)的思想是将一个噪声包装成一个逼真的样本,判别器(discriminator,D)则需要判断送入的样本是否真实,即通过对抗训练共同进步,判别器D对样本的判别能力不断上升,生成器G生成样本能力也不断上升[15]。目前GAN主要应用在一些生成图像的工作中,并取得了一定成果,例如在医学领域可以通过GAN模型来对肿瘤CT图像进行语义分割与检测[16];或是在影像方面进行视频修复[17],但是目前在时间序列数据中采用GAN框架的工作还比较少,且加油时序数据还要求同时处理多个具有潜在关系的变量。

为了处理加油的时间序列数据,将GAN的生成器和鉴别器构造为两个长短期递归神经网络(LSTM)。首先将加油数据通过PCA进行降维后输入至GAN模型,在添加来自潜在空间的随机噪声后将序列输入至生成器中,生成器根据输入生成序列样本传递给鉴别器,鉴别器将尝试区分生成的序列样本和实际的训练样本,并根据鉴别结果更新自身和生成器的参数,这样可以训练鉴别器尽可能地为真序列和假序列分配正确的标签。在经过足够多轮的迭代后,生成器将被训练得能生成足够逼真的样本,并且鉴别器也能够以较高精准度区分真(正常)数据和假(异常)数据。在加油时序数据异常检测工作中,通过计算实际测试样本和生成测试样本之间的差异来得到数据的重构损失以及鉴别器对实际测试样本的判别损失,综合这两部分来检测数据中的潜在异常。本文方法的总体流程如图1所示。

图1 GAN模型流程

2.2 LSTM神经网络

长短期记忆循环神经网络(LSTM)模型由Hochreiter等[18]在1997年提出,是对循环神经网络(RNN)的一种改进。RNN的隐藏层只有一个状态,它对短时间内的输入较为敏感,而LSTM添加了一个内部记忆单元c来保存长期状态,并同时增加3个门用于控制[19],分别是遗忘门ft、输入门it和输出门ot。遗忘门ft决定上一层隐藏层输出被遗忘的程度大小:

ft=δ(Wf×xt+Uf×ht-1+Vf×Ct-1+bf)

(1)

式中:C表示LSTM中的细胞状态。

输入门it控制输入和当前计算的状态更新到记忆单元的程度大小:

it=δ(Wi×xt+Uiht-1+ViCt-1+bi)

(2)

输出门ot控制输入和当前输出取决于当前记忆单元的程度大小:

ot=δ(Wo×xt+Uo×ht-1+Vo×Ct+bo)

(3)

通过这三个控制门,记忆单元c即可有效记忆历史输入值,从而增加了模型的特征包含能力和记忆能力,其在t时刻的状态即可表示为:

ct=ft×ct-1+it×tanh(Wc×xt+Uc×ht-1+bc)

(4)

所以LSTM单元在t时间点的所有输出为:

ht=ot×tanh(ct)

(5)

式中:W、U、V、b分别是系数组成的矩阵和偏置的向量;δ是激活函数Sigmoid。

2.3 基于LSTM-GAN的异常检测

通过数据预处理以后,将训练集Dtrain=(xi,i=1,2,…,n)以及对其添加随机噪声后生成的样本Z=(zi,i=1,2,…,n)输入GAN模型,对抗训练可以看成是采用生成器与判别器之间的一个极小极大化策略[20],目标函数如下:

min maxL(D,G)=εx~pdata(D)[logD(x)]+

εz~pz(z)[log(1-D(G(z)))]

(6)

式中:ε指代取期望;D(x)为判别映射函数;G(z)为生成映射函数;Pdata为真实数据分布;Pz为原始噪声的分布。

经过足够多轮的迭代训练后模型达到拟合,训练好的鉴别器(D)和生成器(G)即可用于检测测试集中的异常。模型训练过程如图2所示。

图2 GAN模型训练过程

这里通过加权计算鉴别器(D)的鉴别损失LD和生成器(G)的重构残差LG两部分得到异常损失L,通过比较L的交叉熵H和预定值T来判断是否为异常点。并将每一条数据标记如下:

(7)

式中:Li代表测试集中第i条数据yi的异常损失。

2.4 异常损失

在GAN模型训练达到拟合后,将训练好的鉴别器和生成器共同用来检测异常,如图3所示的测试过程中,将两部分都应用于异常评判中能够更好地来识别异常,所以基于GAN的异常检测由两部分构成。

(1) 基于判别器的异常检测:训练后的鉴别器能够以较高灵敏度将“假数据”(即异常数据)与真实数据区分开来,可以直接用来进行异常检测。

(2) 基于生成器的异常检测:训练后的生成器能够生成足够逼真的数据样本,它实际上是一种从潜在空间到真实数据的映射:G(Z):Z→X。如果潜在空间中的输入十分接近,则生成器可输出相似的样本。因此,如果能够在测试集Dtest的潜在空间中找到对应的映射,那么测试集Dtest和通过生成器重构的测试样本G(Z)之间的相似性可以在一定程度上反映测试集是否符合生成器所反映的数据分布。这样可以利用测试集和生成样本之间的重构残差LG来识别测试数据中的异常点。

图3 GAN模型测试过程

为了找到与测试样本相对应的最佳Zt,首先从测试集中随机抽取一个集合Z1作为样本,通过潜在空间映射输入生成器,得到重构样本G(Z1)。然后用Dtest和G(Z1)定义的误差函数得到的梯度来更新映射到潜在空间中的样本。为了便于计算,这里通过计算协方差来比较数据样本之间的相似性[21]。

minErr(Dtest,G(Zi))=1-Sim(Dtest,G(Z1))

(8)

式中:Err(Dtest,G(Zi))为重构样本损失函数;G(Z1)为生成映射函数;Sim(Dtest,G(Z1))为相似性函数。

经过迭代多轮更新后,误差会达到足够小,此时将样本Zt记录为测试样本在潜在空间中的对应映射。所以得到测试样本的重构残差:

(9)

再结合鉴别器的判别损失,可以得到异常检测的损失L为:

L=λLG+(1-λ)LD

(10)

式中:LG为生成器的重构残差;LD为判别器的判别损失;λ为影响因子。

3 实 验

3.1 实验配置

为了验证本文方法在时序数据异常检测上的准确性和有效性,本文在两个数据集上进行了实验,第一个是在中国某省份各加油站采集的加油数据集,另一个是公开时序数据集UCR[22]。

实验机系统为Windows 7 64位操作系统,CPU为Intel(R) Core(TM) i7-3770HQ CPU @ 3.40 GHz,内存8 GB,Python版本为3.5,使用的数据库为MongoDB 3.0。

加油数据集采用了某省份所有加油站两个月的加油记录作为原始数据,对其进行数据清洗、数据融合和特征处理等操作后得到真实可靠的实验数据,将其作为实验中的正常数据;异常数据选取历史检测工作中通过预警记录、人工筛查等方式确认的部分异常数据。最后将正常数据的80%作为实验的训练集,另外20%正常数据和异常数据共同作为测试集。

3.2 实验数据集

3.2.1加油数据集

加油数据集采用了某省份所有加油站两个月的加油记录作为原始数据,对其进行数据清洗、数据融合、特征处理等操作后得到真实可靠的实验数据,将其作为实验中的正常数据;异常数据选取历史检测工作中通过预警记录、人工筛查等方式确认的部分异常数据。最后将正常数据的80%作为实验的训练集,另外20%正常数据和异常数据共同作为测试集。

3.2.2 UCR数据集

UCR数据集是一个用于时间序列分类预测的公开数据集,其中包含80多个用于时间序列分类的数据集,本文从中选取了Wafer数据集和Ford数据集作为对比实验数据集。Wafer数据集共有7 174条记录,含有类别标签和152个特征;Ford数据集共有4 921条记录,含有类别标签和500个特征。两个数据集都按照7 ∶3的比例划分训练集和测试集。

3.3 实验结果及分析

3.3.1加油数据样本生成

在GAN模型的博弈对抗过程中,为了使鉴别器能够敏锐地分辨真假样本,生成器会根据输入尽可能生成逼真的数据样本。为了验证LSTM-GAN模型是否可以捕捉到时序数据样本的特征分布,将加油数据集训练过程中初期(第10轮)和后期(第80轮)生成的数据样本进行可视化,这里选择了t6和t8两个特征,结果如图4所示,其中:图4(a)为原始数据的特征分布;图4(b)为训练初期(第10轮)生成的样本;图4(c)为训练后期(第80轮)生成的样本。

(a) 真实样本分布

可以看出,在训练初期生成器的稳定性较差,产生的数据样本有很强的随机性,但随着迭代轮数的增加,在训练达到第80轮时,生成器产生的样本已经基本符合真实样本的数据分布,说明通过多轮训练LSTM-GAN模型可以有效学习到加油时序数据样本特征的分布。

3.3.2最佳子序列长度分析对比

在实验中,加油数据被处理成序列输入模型中进行训练,而子序列长度会影响到模型训练时间以及预测结果的好坏,从而影响异常检测的结果。选择合适的子序列长度不仅可以提高模型的效率,还能提升模型的检测效果。这里通过尝试一些子序列长度来确定最佳值。具体结果如表1所示。

表1 不同子序列长度结果对比

可以看出子序列长度较小时,GAN模型在加油数据集上的预测效果一般,精确率低于60%;随着子序列长度提升至50,预测效果相较于之前较好,精确率和F1值都有较大提升;而当子序列长度达到100左右时,虽然模型召回率能提升至接近90%,但精确率开始大幅下滑,整体预测效果较差。所以在模型训练时子序列长度选定为50,此时模型异常检测的效果最好。

3.3.3 PCA降维分析对比

如前所述,为了减少模型的计算量,提高模型效率,在输入模型前对加油数据使用PCA进行降维处理,剔除次要变量。为了能够尽可能保留原始样本信息,这里计算了PCA各保留特征数的方差率,结果如图5所示。

图5 PCA方差率

可以看出当通过PCA保留5个特征时,占所有特征方差的百分比已超过90%,意味着基本保留了所有信息,所以确定PCA保留特征数为5。

3.3.4加油数据集实验

在加油数据集实验中,通过与已经验证在异常检测领域上有效的K近邻(KNN)、装袋法(FB)、自动编码机(AutoEncoder)和孤立森林(IsolationForest)[23]进行比较评估,来验证本文算法的性能。为了考量模型检测异常的整体效果,实验结果使用精确率(Precision)、召回率(Recall)和F1值来综合评估LSTM-GAN模型的异常检测性能:

(11)

(12)

(13)

式中:TP是实际检测出的异常样本数量(检测值:1;真实值:1);FP是检测为异常但实际非异常的样本数量(检测值:1;真实值:0);FN是未被检测出的异常样本数量(检测值:0;真实值:1);TN是实际检测为正常的样本数量(检测值:0;真实值:0);Precision简写为Pre;Recall简写为Rec。

实验结果如表2所示。

表2 加油数据集实验结果对比

实验结果表明相比于传统的异常检测算法,本文提出的LSTM-GAN模型在召回率和F1值上都具有较好的效果,虽然精确率相对于FeatureBagging和IForest较低,但是后两者的召回率较差,无法同时兼顾精确率和召回率。而LSTM-GAN模型的精确率和召回率都在75%以上,且从F1值上可以看出LSTM-GAN模型整体预测效果更好,说明LSTM-GAN模型在加油时序数据上有着较好的检测结果。

3.3.5 UCR数据集实验

Wafer数据集上的结果如表3所示。

表3 Wafer数据集实验结果对比

Ford数据集上的结果如表4所示。

表4 Ford数据集实验结果对比

结果表明,在UCR的两个数据集上LSTM-GAN模型相比于其他三种方法的整体预测效果较好。在Wafer数据集上IsolationForest和LSTM-GAN相较于其他两种方法效果更好,且LSTM-GAN的F1值更高。在Ford数据集上由于数据的维数较高且样本数量较少,整体预测结果都不是很理想,但LSTM-GAN模型还是能够有近90%的精确率和超过60%的召回率,说明LSTM-GAN模型在时序数据上相比于其他方法有较好的预测结果。

4 结 语

本文鉴于目前在加油时序数据上的无监督异常检测方法存在一定缺陷,提出一种将LSTM嵌入GAN模型并通过生成器和鉴别器共同检测数据异常的方法。该方法首先通过PCA对数据进行降维处理,提取有效特征后输入GAN模型进行训练,待模型拟合后将测试数据输入,通过训练好的生成器和鉴别器共同得到异常损失,与设定阈值进行比较来对时序数据进行异常检测。在加油数据集和UCR中两个数据集上的实验结果表明该方法对于现有算法有了一定的改进与提升。但是LSTM-GAN模型中的LSTM神经网络在处理较长时间序列时需要更多的时间且GAN模型的博弈训练过程自由性较高,还不是足够稳定,后续的研究过程中将探索是否能够结合其他神经网络提高模型效率并且能使训练过程更加稳定的异常检测方法。

猜你喜欢
时序样本测试
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
你不能把整个春天都搬到冬天来
心理测试
规划·样本
随机微分方程的样本Lyapunov二次型估计
心理小测试
测试
基于支持向量机的测厚仪CS值电压漂移故障判定及处理