序列在现实世界中是非常常见的一种数据形式,即在时间维度上传感器采集的数据流。我们最常见的序列数据像语音,自然语言,视频等信号,它们的共同点就是有很强的上下文。一般而言,任何高级有效的模型在处理这种数据时都会考虑这种上下文关系,充分挖掘潜藏的时空相关性,以对数据进行建模,比如混合动态纹理模型。而异常呢,一般在不同场景中有不同的定义,比如一个心脏跳动的信号,在平稳中突然跳动。那么这个跳动就是异常,任何高级的系统都会捕捉到异常并报警。无论是哪种异常,在计算机的世界里,无非就是在特征维度张成的空间中,根据相应的度量形式寻找远离簇的孤立点。其实,异常检测在现实世界中有着广泛的应用,并在各领域扮演着重要的角色,比如网络入侵,欺诈检测,视频监控等。
本文主要讨论在序列数据中如何建立有效的非监督模型去发现异常。非监督的框架在现实世界中更加有效,因为数据的标签很难有效得到。总之,这类问题有3个挑战:
下面介绍3篇文献,学习他们的建模方法。其中,一篇基于传统的类似混合动态纹理模型,另两篇基于比较火的RNN和LSTM模型。
第一篇文献是国内中山大学在视觉领域-前景检测方面的研究成果,Complex background subtraction by pursuing dynamic spatio-temporal models。总的来说,提出的方法最核心的思想即是在一个定义的隐空间中考虑时间相干性;并提出了模型在在线检测中的更新机制。我们具体看一下建模过程:
V={v1,v2,⋯,vn} V = { v 1 , v 2 , ⋯ , v n } 表示在 n n 个连续帧中相同位置处的数据,其中 vi∈Rm v i ∈ R m 表示在第 i i 帧的当前位置处提取的特征向量。该特征向量是在以该位置为中心的小立方体(比如 3×3×5 3 × 3 × 5 pixels)中提取类似于local ternary patterns (LTP)的特征。在这个特征向量空间中,作者采用了一组正交基 C∈Rm×d C ∈ R m × d 来表示其中的点,并刻画序列数据的一致性:
第二篇文献为TIP2017年上的文章Unsupervised Sequential Outlier Detection With Deep Architectures。这个工作与上一个工作有着异曲同工之妙,同样是在隐层空间中考虑时间相关性;上一篇用矩阵 A A 来线性刻画,那么这篇文章这是用循环神经网络来非线性刻画。模型的层级结构如下:
通过上图可知,该模型包含两部分:去噪自动编码器(DAE)和循环神经网络(RNN)。其中DAE主要用来提取特征,捕捉正常数据和异常数据间最本质的区别;RNN则充分利用上下文,并使学习器应对时间维度上的演变更加稳健。
h层为自动编码器的隐层,这里不做详细介绍。下面我们主要看RNN,与标准的循环神经网络不同,作者简化了其形式,即当前状态仅取决于上一个状态:
第三篇文献为ICCV2015年上的文章Unsupervised Extraction of Video Highlights Via Robust Recurrent Auto-encoders。这个工作与上一个工作类似,同样是在隐层空间中考虑时间相关性;用LSTM而不是循环神经网络来非线性刻画。模型的层级结构如下:
上图中(a)为视频帧序列,在一段时间内用3D CNN提取特征;红色虚线上是自动编码器,而在自动编码器的隐层(d)用LSTM刻画时间维度上的相干性。异常是否的判断同样考虑重构误差。