본문 바로가기

Time Series Analaysis/Time Series Anomaly Detection

Multi-Scaled Convolutional Recurrent Encoder Decoder(MSCRED) for Anomaly Detection

본 글은 다변량 시계열 데이터 기반 이상치 탐지 방법론 Multi-Scaled Convolutional Recurrent Encoder Decoder(MSCRED)에 대한 설명을 논문 "A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data(2019)"을 바탕으로 작성하였습니다.

 

▶ 다변량 시계열 데이터 기반 이상치 탐지의 중요성

다변량 시계열 데이터 기반 이상치 탐지는 특정 시점(time step)에서 비정상 상태(abnormal status) 여부를 확인(탐지)하는 것입니다. 이상치 탐지는 재정 손실 또는 기업 손실을  피하기 위해서 매우 중요하며 작동자(Operator)에게 다양한 사건들의 심각도(severity)를 이상치 점수(anomaly score)를 통해 제공할 수 있습니다. 

 

다변량 시계열 데이터 기반 이상치 탐지 방법론은 다음 4가지를 고려해야 합니다.

  1. [Temporal Information] 서로 다른 시점에 대해서 temporal dependency(intra-correlation)를 학습해야 합니다.
  2. [Spatial Information] 서로 다른 일변량 시계열 데이터간의 inter-correlation을 학습해야 합니다.
  3. [Robust] Noise에 robust해야합니다.
  4. [Anomaly Score] 서로 다른 사건들에 의한 심각도를 측정할 수 있는 이상치 점수를 산출해야합니다.

▶ Framework of Multi-Scaled Convolutional Recurrent Encoder Decoder(MSCRED)

논문의 저자는 위 4가지를 고려한 다변량 시계열 데이터 기반 이상치 탐지 방법론으로 Multi-Scaled Convolutional Recurrent Encoder Decoder(MSCRED) 모델을 제안합니다.

 

MSCRED는 크게 4가지의 구성요소가 존재합니다.

[Figure 1] Framework of MSCRED

[Step 1]. Multi-scale(resolution) signature matrices

[Step 2(Figure 1-(a))]. Convolutional Encoder : the inter-sensor correlations(spatial information) 정보 인코딩(encoding)

[Step 3(Figure 1-(b))]. Attention based Convolutional Long-Short Term Memory(ConvLSTM) network : 시계열 패턴(temporal pattern) 포착

[Step 4(Figure 1-(c))]. Convolutional decoder: 공간 정보와 시계열 패턴의 압축된 정보가 담긴 feature map을 기반으로 signature matrix 재건축

 

[Section 1] ~ [Section 4]에서 자세한 내용을 살펴보겠습니다.


▶ Problem Setting

데이터셋은 시점의 길이가 $T$인 $n$개의 시계열 데이터 $\mathbf{X}$이며 오직 정상(normal) 데이터만 존재합니다.

$$\mathbf{X} = (\mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_n)^T \in \mathbb{R}^{n \times T}$$

 

데이터셋 $\mathbf{X}$를 통해 학습 후 시점 $T$ 이후에 대해서 비정상 객체 탐지를 합니다.


본격적으로 MSCRED 모델 프레임워크에 대해 설명하고자 합니다.

1. Construct Multi-Scale(resolution) signatuer matrix

 

시스템의 전체적인 상황을 파악하기 위해서는 서로 다른 시계열 데이터간의 상관관계(correlation), 즉, spatial information을 파악하는 것은 중요합니다. MSCRED는 각 window(윈도우) 구간별 signature matrix를 형성해 시공간 데이터를 생성합니다. Signature matrix를 기반으로 convolutional encoder를 통해 공간 정보(spatial information)를 학습하고 ConvLSTM에서는 시계열  패턴을 파악합니다.

 

▶ Signature matrix

 


Question: How to generate multi-scale(resolution) system signature matrix?

Answer: Pairwise Inner Product


1. 크기가 $w$인 window(윈도우) $\mathbf{X}^w = (\mathbf{x}^w_1, \mathbf{x}^w_2, \cdots, \mathbf{x}^{w}_n) \in \mathbb{R}^{n \times w}$를 형성합니다.

2. Window 구간 내에서 서로 다른 시계열 데이터 간의 내적 $m^{t}_{ij}$을 계산합니다.

$$m^t_{ij} = \dfrac{\sum^{w}_{\delta = 0}x^{t-\delta}_i x^{t-\delta}_j}{\kappa}$$

  • $\mathbf{x}^w_{i} = (x^{t-w}_i, x^{t-w-1}_i, \cdots, x^{t}_i)$
  • $\mathbf{x}^w_{j} = (x^{(t-w)}_j, x^{(t-w-1)_j},\cdots, x^t_{j})$
  • $\mathbf{x}^w_{i}, \mathbf{x}^w_j \in \mathbf{X}^w$
  • $\kappa$: rescale factor($\kappa = w$)

3. 서로 다른 모든 $n$개의 시계열 데이터에 대해서 $m^t_{ij} \in M^t$ 계산합니다.

 

이와 같은 과정을 통해 window 구간별 $n \times n$ signature matrix $M^t$를 생성할 수 있습니다. 

[Figure 2] (b) Different system signature matrices between normal and abnormal periods

 

 

 

 

 

 

[Figure 2-(b)]를 통해 정상 구간과 비정상 구간에서의 signautre matrix가 서로 다른 형태를 보이는 것을 확인할 수 있습니다.

 

 

 

 

 

Window의 크기(size) $w$의 값에 따라 각 구간별로 여러 개의 signatue matrix를 생성할 수 있습니다. 논문에서는 서로 다른 window 크기(scale)를 가진 $w=10, 30, 60$에 대해서 signature matrix를 생성했습니다.

 

[Multi-scale Signature matrix]

  • $w=10$으로 설정한 경우에 대해서 각 구간별 signature matrix 생성
  • $w=30$으로 설정한 경우에 대해서 각 구간별 signature matrix 생성
  • $w=60$으로 설정한 경우에 대해서 각 구간별 signature matrix 생성
  • 즉, 서로 다른 scale을 가진 3개의 signature matrix를 생성함으로써 multi-scale signature matrix 생성

이미지에 빗대어 생각하면  multi-scale signature matrix는 넓이(width)가 $n$, 높이(height)가 $n$, 채널(channel) 수가 $s=3$인 형태입니다. 즉, 여러 시간 차원에서 시스템의 상태를 다양한 해상도로 효과적으로 분석하고 표현한 행렬임을 알 수 있습니다.

 

다른 다변량 시계열 데이터 이상치 탐지 방법론과 MSCRED의 가장 큰 차이점은 multi-scale signature matrix를 생성하는 부분이라고 생각합니다. Multi-scale signature matrix의 장점은 다음과 같습니다.

  1. 내적을 통해 서로 다른 일변량 시계열 데이터간의 유사성을  포착하였습니다.
  2. 서로 다른 시계열 데이터간의 상관성(유사성)을 다양한 scale로 포착하였습니다.
  3. noise에 robust합니다.

 

2. Convolutional Encoder

[Figure 3] Convolutional Encoder

Signature matrix의 spatial information을 인코딩(encoding)하기 위해 논문의 저자는 총 4개의 convolution layer를 쌓음으로써 convolutional encoder를 구축하였습니다.

  • Input(입력값):  서로 다른 scale을 가진 system signature matrice를 concatenate한 3D tensor $\chi^{t,0} \in \mathbb{R}^{n \times n \times s }$
  • Output of $l$-th layer: $\chi^{t,l} = f(W^l *\chi^{t, l-1}+b^l) \in \mathbb{R}^{n_l \times n_l \times d_l}$
    • $\chi^{t, l-1} \in \mathbb{R}^{n_{l-1} \times n_{l-1} \times d_{l-1}}$: $(l-1)$-th layer의 feature map
    • $W^l \in \mathbb{R}^{k_l \times k_l \times d_l \times d_{l-1}}$
    • $b^l \in \mathbb{R}^{d_l}$
    • $*$: convolutional operation
    • $f$: activation function으로 "Scaled Exponential Linear Unit(SELU)" 사용
      • 산출값은 $l$-th layer의 feature map입니다.

3. Convolutional Long Short Term Memory(ConvLSTM)

[Figure 4] Attention based ConvLSTM

Convolutional Encoder에서 각 층(layer)별 형성된 feature map을 기반으로 temporal information을 학습하기 위해 ConvLSTM을 사용하였습니다. ConvLSTM에 대한 자세한 내용은 아래 블로그를 참조하면 될 것 같습니다.

※ [Link] ConvLSTM에 대한 설명글


[Input and output of ConvLSTM]

  • $l$-th hidden state $H^{l}$를 update하는 과정
    • 입력값: $\chi^{t,l} \in \mathbb{R}^{n_l \times n_l \times d_l}$, $H^{t-1,l} \in \mathbb{R}^{n_l \times n_l \times d_l}$
      • $\chi^{t,l}$: $l$-th convolution layer의 feature map(새로운 정보)
      • $H^{t-1,l}$: 이전 시점의 hidden state(과거 정보)
    • 산출값: $H^{t,l} = \text{ConvLSTM}(\chi^{t,l} , H^{t-1,l})\in \mathbb{R}^{n_l \times n_l \times d_l}$
      • $H^{t,l}$: current hidden state(새로 업데이트 된 정보)

[ConvLSTM cell]

ConvLSTM의 셀의 작동과정에 대해서 설명하겠습니다.

 

$\color{red}{*}$ : convolution operator, $\color{blue}{\circ}$: Hadamard product

Input $\chi^{t,l}$, Cell state $C^{t,l}$, Hidden state $H^{t-1,l}$, gate $z^{t,l}, r^{t,l}, o^{t,l}$: 3D Tensor

 

1. Input gate $z^{t,l} \in (0,1)$: 현재 time step에서 입력되는 정보의 반영 비중을 결정하는 게이트

 

[Input gate layer: sigmoid layer]

$$z^{t,l} = \sigma(\tilde{W}^l_{X  Z} * \chi^{t,l} + \tilde{W}^l_{HZ} * H^{t-1,l} + \tilde{W}^{l}_{CZ} \circ C^{t-1,l}+\tilde{b}^l_Z) \in (0,1)$$

  • 입력값: 과거의 정보 $H^{t-1,l}$, 현재 새로운 정보 $\chi^{t,l}$, 이전 cell state 정보 $C^{t-1,l}$
  • 산출값: 현재 정보(새로운 정보)를 cell state $C_t$에 얼만큼 반영할지에 대한 비중 $z^{t,l} \in (0,1)$
  • $\sigma$: sigmoid function

[Tanh layer]: new candidate values

$$\tilde{C}^{t,l} = \text{tanh}(\tilde{W}^l_{X C} * \chi^{t,l} + \tilde{W}^l_{HC} * H^{t-1,l} + \tilde{b}^l_C)$$

  • 입력값: 과거의 정보 $H^{t-1,l}$, 현재 새로운 정보 $\chi^{t,l}$
  • 산출값: new candidate values $\tilde{C}^{t,l}$

$z^{t,l} \circ \tilde{C}^{t,l}$ 계산을 통해 현재 새로 업데이트 된 정보를 $C^{t,l}$에 얼만큼 반영할지 결정합니다.

 

2. Forget gate(망각 게이트) $r^{t,l} \in (0,1)$ : 과거 정보의 반영 비중

 

[Forget gate layer: sigmoid layer]

$$r^{t,l} = \sigma(\tilde{W}^l_{X R} * \chi^{t,l} + \tilde{W}^l_{HR} * H^{t-1,l} + \tilde{W}^{l}_{CR} \circ C^{t-1,l}+\tilde{b}^l_R) \in (0,1)$$

  • 입력값: 과거의 정보 $H^{t-1,l}$, 현재 새로운 정보 $\chi^{t,l}$, 이전 cell state 정보 $C^{t-1,l}$
  • 산출값: 과거의 정보 반영 비중 $r^{t,l} \in (0,1)$
  • $\sigma$: sigmoid function

3. Update cell

$$C^{t,l} = z^{t,l} \circ \tilde{C}^{t,l} + r^{t,l} \circ \tilde{C}^{t-1,l}$$

  • $C^{t-1,l}$: old cell state
  • $r^{t,l} \in (0,1)$: 과거 정보 반영 비중
  • $\tilde{C}^{t,l}$: new information(새로 업데이트된 정보)
  • $z_t \in (0,1)$: 현재 정보(새로운 정보) 반영 비중

4. Output gate(출력 게이트) $o^{t,l} \in (0,1)$  : 최종적으로 $C_t$의 정보 중 어떤 정보를 $h_t$에 반영할지에 대한 비중

 

[Output gate layer: sigmoid layer]

$$o^{t,l} = \sigma(\tilde{W}^l_{X O} * \chi^{t,l} + \tilde{W}^l_{HO} * H^{t-1,l} + \tilde{W}_{CO}^l \circ C^{t-1,l}+\tilde{b}^l_O) \in (0,1) \in (0,1)$$

  • 입력값: 과거의 정보 $H^{t-1,l}$, 현재 새로운 정보 $\chi^{t,l}$, 이전 cell state 정보 $C^{t-1,l}$
  • 산출값: cell state $C^{t,l}$의 어떤 정보(부분)을 반영할지에 대한 비중 $o^{t,l} \in (0,1)$
  • $\sigma$: sigmoid function

5. 최종 output: $H^{t,l} = o^{t,l} \circ \text{tanh}(C^{t,l})$

 

  • $\tilde{b}^l_Z, \tilde{b}^l_R, \tilde{b}^l_C, \tilde{b}^l_O \in \mathbb{R}^{d_l}$는 ConvLSTM의 $l$-th layer의 bias parameter
  • $W^l_{\chi Z}, W^l_{H Z}, W^l_{C Z}, W^l_{\chi R}, W^l_{H R}, W^l_{C R}, W^l_{\chi C}, W^l_{H C}, W^l_{\chi O}, W^l_{HO}, W^l_{CO} \in \mathbb{R}^{\tilde{k}_l \times \tilde{k}_l \times \tilde{d}_l \times \tilde{d}_l}$ : kernel size가 $\tilde{k}_l \times \tilde{k}_l \times \tilde{d_l}$인 convolutional kernel
    • Convolutional Encoder에서의 kernel size와 같도록 설정해주었습니다.

기존 ConvLSTM의 경우 sequence의 길이가 증가함에 따라 성능이 악하될 가능성이 높아진다는 단점이 존재합니다. 이를 해결하고자 논문의 저자는 Attention based ConvLSTM을 제안했습니다.

 

▶ Attention based ConvLSTM

기존의 ConvLSTM에서의 변형된 점은 마지막 hidden state $H^{t,l}$에 attention score $\alpha^i$를 도입했다는 점입니다.  Attention을 도입한 이유는 current state $H^{t,l}$이 이전 시점 $H^{t-1,l}, \cdots,  H^{t-h,l}$ 들과의 temporal dependency가 동등하지 않기 때문입니다. 더 큰 temporal dependency가 있을수록 current state $ \hat{H}^{t,l}  $의 계산에 더 큰 가중치 $ \alpha^i $를 줍니다. 이를 통해 중요한 패턴이나 구조에 중점을 둘 수 있습니다.

$$\hat{H}^{t,l} = \sum_{i \in (t-h, t)} \alpha^i H^{i,l}$$

$$\alpha^i = \dfrac{exp \{\dfrac{Vec(H^{t,l})^T Vec(H^{i,l})}{\lambda}\}}{\sum_{i \in (t-h,t)}exp\{\dfrac{Vec(H^{t,l})^T Vec(H^{t,i})}{\lambda}\}}$$

  • $Vec(\cdot)$: vector 명시
  • $\lambda$: rescale factor($\lambda=0.5$)
  • $\alpha^i$: temporal attention으로 softmax function을 이용하여 계산

 

Attention based ConvLSTM은 각 $l$-th convolution layer와 jointly하게 temporal information와 signature matrix의 spatial patten을 함께 모델링합니다([Figure 4] 참조).


4. Convolutional Decoder

[Figure 5] Convolutional Decoder

Convolutional decoder의 경우 역순으로 각 window 구간별 signature matrix를 재건축(reconstruct)합니다.

 

Reconstructed Signature matrices $ \hat{\chi}^{t,l-1} $를 얻기 위해서 Attention based ConvLSTM의 $l$-th layer의 output $\hat{H}^{t,l}$과 Convolutional decoder의 $l$-th layer의 output  $\hat{\chi}^{t,l}$을 활용합니다.

 

$$\hat{\chi}^{t,l-1} = \begin{cases} 
f(\hat{W}^{t,l} \circledast \hat{H}^{t,l} + \hat{b}^{t,l}) &l=4
\\
f(\hat{W}^{t,l} \circledast [\hat{H^{t,l}} \oplus \hat{\chi}^{t,l}]+\hat{b}^{t,l}) & l=3,2,1
\end{cases}$$

  • $\circledast$:deconvolution operation
  • $\oplus$: concatenation operation
  • $\hat{W}^l \in \mathbb{R}^{\hat{k}_l \times \hat{k}_l \times \hat{d}_l \times \hat{d}_{l-1}}$: $l$-th deconvolutional layer의 filter kernel
  • $\hat{b}^l \in \mathbb{R}^{\hat{d}_l}$: $l$-th deconvolutional layer의 bias
  • output feature map $\hat{\chi}^{t, l-1} \in \mathbb{R}^{\hat{n}_{l-1} \times \hat{n}_{l-1} \times \hat{d}_{l-1}}$은 ConvLSTM의 output $\hat{H}^{t,l}$과 concatenate됩니다.

최종 output $\hat{\chi}^{t, l-1} \in \mathbb{R}^{n \times n \times s}$은 reconstructed signature matrice입니다.


5. Loss Function

[Figure 5] Loss Function

$$L_{MSCRED} = \sum_t \sum^s_{c=1}|| \chi^{t,0}_{:,:,c} - \hat{\chi}^{t,0}_{:,:,c}||^2_F$$

  • $\chi^{t,0}_{:,:,c} \in \mathbb{R}^{n \times n}$
  • $c$: 채널 
  • $ \chi^{t,0}_{:,:,c} - \hat{\chi}^{t,0}_{:,:,c} $: residual matrix

목적 함수는 signature matrix에 대한 reconstruction error로 이 값이 최소화되도록 parameter를 학습합니다.

 

▶ Anomaly Diagnosis

MSCRED는 residual matrix를 기반으로 이상치 점수를 산출합니다.

1. 임의의 threshold $\tau$와 $\alpha$ 값을 설정합니다.

2. 정상 데이터셋에서의 window 구간별 residual matrix의 각 pixel 값이 $\tau$ 이상인 개수최댓값 $m$을 계산합니다.

3. 검증/테스트 데이터셋에서의 window 구간별 residual matrix의 각 pixel 값이 $\tau$ 이상인 개수가 $m*\alpha$보다 큰 경우 그 window는 비정상 구간으로 판단합니다.

 


본 글은 다변량 시계열 데이터 이상치 탐지 방법론인 MSCRED에 다루었습니다. 다른 모델과는 다르게 각 window별 signature matrix를 생성해 3D tensor 데이터(시공간 데이터)를 활용하였습니다. Spatio information을 학습하기 위해 CNN encoder, temporal information을 학습하기 위해 ConvLSTM을 사용하였습니다. CNN decoder를 통해 signature matrix를 재건축함으로써 original signautre matrix와 reconstructed signature matrix의 차인 residual signature matrix를 기반으로 이상치 탐지를 했습니다.