1.Introduction
离散事件序列异常检测
每个日志由消息类型和变量组成,当日志键根据记录时间按照顺序排列的时候,它们形成一个离散时间序列。
比如说这个例子,如果正常状态下k2总在k1之后,那么k2接在k5之后就可能是系统的一个异常状态。
存在的两个问题:
1.异常检测问题中的数据不平衡问题。系统大部分时间处于正常状态,异常状态比较罕见,这使得二元分类模型在异常检测上变得没有效果。
2.事件的离散性,离散事件序列由离散的符号组成,很难捕捉事件随时间的关系。
于是作者提出一种用于事件序列异常检测的多尺度单分类递归神经网络框架OC4SEQ,将异常检测目标与专门设计的深度序列模型集成起来,模型包含了不同尺度的序列模式。
2. THE PROPOSED FRAMEWORK
图为模型框架的整体,主要由两个组件组成,分别关注序列中的全局和局部信息。
2.1 Learning Embeddings for Events
框架的输入是事件序列,其中每一个事件都是一个one-hot 向量(独热编码),e(i)=0,e(j)=1, et是E的第j个类型的数据。
但是现实场景中,事件空间可能特别大,即E有数以万计的类型,这就会导致非常高的维度。灾难。此外这种一个one-hot向量隐含的假设了事件是彼此独立的,这个在实际中也是不现实的。
于是作者提出了一个嵌入层,将事件嵌入到一个低维空间之中,以保持事件之间的关系。
因此引入一个嵌入矩阵E
其中d(e)是嵌入空间的维数,|E|是事件类型的数量。
于是et可以由如下表示。
xt是et新的低维密集表示向量。在嵌入层之后,输入序列将要被传递到下一个要引入的组件中。
2.2 Anomaly Detection from Global Perspective
为了检测异常序列,学习整个序列在潜在空间中的有效表示非常重要,选用递归循环神经网络(GRU)与一类目标函数相结合。
给定一个正常序列:
GRU以递归方式学习序列的表示。在第t步,GRU输出一个状态向量ht,是前一个状态向量ht-1与候选状态ht之间的一个线性差值。
⊙是元素乘法。zt是更新门,用于控制当前给定信息xi的情况下应该更新多少状态。zt的计算如下:
其中Wz和Uz是可训练参数,σ(·)是sigmod函数。
候选状态ht的计算:
g(·)是tanh函数
W和U是之前等式中所提到的,r表示一个复位门,目的是为了应该在多大程度上合并当前的状态。r的计算如下:
最后一步的状态向量总结了前面步骤中的所有信息,将其视为整个序列的表示。
同时受深度SVDD的启发,即所有的正常数据都应该位于潜在的最小的超球体之中,于是我们训练的目标函数:
c是潜在空间预定义的中心,n是训练集中的序列总数,序列中第一项使用二次损失类惩罚每个序列到中心的距离,第二项是由超参数λ控制的正则化器。目的是使得向量与潜在空间中心的距离最小。
尽管全局GRU可以有效的对整个序列进行建模,但是序列的异常特性可能仅由一个小的异常子序列甚至单个异常事件引起。当异常序列较长时,在表征学习过程中,异常信息可能被其他正常子序列淹没,这可能导致极高的假阴性率。
2.3 Anomaly Detection from Local Perspective
本节中设计一个子序列学习组件来从局部角度检测异常。
对于给定的事件序列,构造具有滑动窗口的固定大小的子序列。因此每个子序列都包含其唯一的局部信息,这对于判断整个序列是否异常起着重要的作用。为了学习子序列的表示,引入了本地的GRU组件,该组件对每个子序列中的顺序依赖项进行建模。
给定一个序列
本地GRU按顺序处理事件并输出隐藏状态。最后一个状态不熬是本地子序列的表示。
因此,对于序列中的所有子序列,GRU都将获得一个隐藏序列表示,该序列包含每个局部区域中的序列相关性。
其中LocalGRU是处理每个子序列的第二个GRU的模型的名称。对于正常事件序列,可以直观的假设其所有子序列也是正常的。因此我们进一步假设所有的局部子序列都应该在另一个潜在空间的超球面内。为了实现这以假设,设计以下目标函数知道局部学习过程。
cL是潜在空间中的另一个超球面的预定义中心,包含LocalGRU的所有可训练参数。第一项惩罚所有正常子序列到中心的平均距离。第二项是正则化器。
2.4 The Objective Function and Optimization Procedure
本节中设计目标函数将它们结合到一起,考虑全局和局部的损失函数之和,总体的目标函数定义如下:
α是一个超参数,用于控制序列中局部信息的贡献,这个目标函数能够使我们以端到端的方式对框架进行培训。
优化:
使用随机梯度下降及其变体优化之前的定义的目标函数,为了加速训练过程,预定义的中心c的计算如下:给定未训练的GRU,首先将训练集中的序列输入其中,并获得序列表示向量。然后通过计算所有向量的平均值得到一个平均向量,并将其作为中心c。本地GRU也通过同样的操作获得CL,在优化过程中,一旦获得了特征向量,它们将保持不变。