Signature Matrices 생성 for 여러 window size
인풋: h timestep의 n개의 univariate 시계열 (consisting multivariate)
아웃풋: 한 timestep에 대해 각각 이전 10, 30, 60 timestep까지 segment를 만들고 n개의 univariate간에 공분산 행렬을 만든 것 (by calculating inner product btw the vectors), 서로 다른 time window를 3개 사용하므로 총 n x n 행렬이 3개 생긴다.
Purpose: 1. duration에 따라 anomaly의 severity를 다르게 판단할 것이기 때문에 / 2. n개의 univariate간의 상호관계를 나타내기 위해
Convolutional Encoder ==> encode spatial patterns (inter-correlation btw different sensors(univariates))
h개의 sequential 데이터 각각이 (n, n, s)의 image-like tensor(3개의 n x n 행렬을 concatenate)이기 때문에 convolution을 사용할 수 있다.
인풋: h개의 (n, n, s) 텐서
4개의 convolution layer에서 만들어지는 T개(전체 timestep)의 output feature map중 연속적인 h개의 피쳐맵이 Attention-based ConvLSTM의 입력으로 사용된다!
Attention-based ConvLSTM ==> encode temporal dependencies
(Time window: h)
T개의 3D tensor마다 이전 h개의 데이터를 이용하여 temporal information을 인코딩함
이 때, h개의 timestep이 현재 timestep에 영향을 끼치는 중요도가 다르기 때문에 attention을 도입
아웃풋: output tensor, hidden tensor 중 hidden을 사용하여 decoder의 입력으로 사용한다!
Convolutional Decoder ==> reconstruct signature matrices
deconvolution, 4개의 convLSTM 층의 hidden tensor을 중간중간 concate함
아웃풋: (n, n, s)
Loss function: L2 (reconstrunction) loss
Anomaly score: (ground truth signature matrices) - (predicted signature matrices) = residual matrices에서 값이 threshold 보다 큰 것 = anomaly ("The number of poorly reconstructed pairwise correlations")
https://stopspoon.tistory.com/38
https://youtu.be/NJASxGwvQXg
https://github.com/Zhang-Zhi-Jie/Pytorch-MSCRED