본문 바로가기
논문리뷰

[논문리뷰] MODERNTCN:A MODERN PURE CONVOLUTION STRUCTURE FOR GENERAL TIME SERIES ANALYSIS

by 객잔주인 2024. 5. 26.

분야: Time Seires

아키텍쳐: ModerTCN [원문링크]

날짜: 2023-11-27

타입: Multivariate

출판 정보: ICLR 2024

 

Introduction

시계열 예측은 다양한 적용 범위를 가지는 기술입니다. 결측치 예측, 행동 예측, 이상치 탐지 등 많은 활용이 가능합니다. 최근 시계열 분석 및 예측 분야에서 트랜스포머와 MLP 기반 모델들이 두각을 나타내면서 컨볼루션 기반 모델들이 소외되었습니다. 그러나 컨볼루션 기반 모델은 효율과 성능의 밸런스가 좋기 때문에 이 저자는 완전 컨볼루션 모델을 연구하고자 했습니다.

 

트랜스포너와 MLP 기반 모델의 성능이 좋았던 것은 ERFs(effective receptive fields)가 전역적이기 때문에 장기적인 시간 의존성(시간적으로 멀리 떨어진 두 시점 사이의 관계)을 더 잘 포착할 수 있기 때문입니다. TCN(Temporal Convolution Network)은 시계열 예측 분야에서 사용하는 컨볼루션 딥러닝 모델입니다. 기존에는 TCN이 트랜스포머 및 MLP 기반 모델의 성능을 따라잡기 위해 컨볼루션 부분을 업그레이드하는 것보다 복잡한 구조를 덧붙이는 것에 집중했습니다. 이는 ERF를 향상시키는 것을 통해 TCN의 성능을 올릴 수 있다는 판단이 있었기 때문입니다.

 

반면 CV 분야에서는 컨볼루션 자체를 최적화하는 모던 컨볼루션(modern convolution)을 고안해냈습니다. 모던 컨볼루션은 트랜스포머의 아키텍쳐 디자인을 차용하여 만들어졌습니다. 게다가 컨볼루션은 변수간 의존성을 잘 포착할 수 있는 구조입니다. 따라서 저자는 이 구조를 시계열 예측에서도 사용해보고자 했습니다.

(좌) 트랜스포머 블록의 구조, (우) 모던 컨볼루션 블록의 구조

Related Work

시계열에서 다시 컨볼루션을 사용하기 위한 노력이 없었던 것은 아닙니다. 예를 들어, MICN은 여러 스케일의 컨볼루션 구조를 사용해 지역적인 특징과 전역적인 특징을 갖는 아키텍쳐이고, SCINet은 인과적 컨볼루션(현재 시점의 출력을 계산할 때 미래의 정보를 사용하지 않도록 보장하는 컨볼루션 방식) 개념을 버리고 재귀적 다운샘플링-컨볼루션-상호작용 아키텍쳐를 사용했습니다. 그러나 ERF의 한계는 여전히 존재했고 장기 의존성을 모델링하기는 어려웠습니다. 반면 TimesNet은 1D 컨볼루션을 사용하는 공식을 깨고 시계열을 2D 행렬로 변환하여 CV처럼 2D 컨볼루션을 사용했으며 여러 시계열 예측 분야의 SOTA 모델로 자리잡고 있습니다.

ModernTCN

Modern Convolution

(좌) 모던 컨볼루션 블록의 구조 (우) ConvFFN의 디테일한 구조

모던 컨볼루션 블록은 크게 세 가지 구조가 있습니다: DWConv 모듈, ConvFFN 모듈, 그리고 스킵 커넥션. DWConv(Depthwise Convolution)는 feature 단위로 시간적인 정보를 학습합니다. 즉, 트랜스포머의 셀프어텐션 모듈과 같은 역할을 합니다. ConvFFN은 트랜스포머의 FFN 모듈과 비슷한 역할을 합니다. ConvFFN은 두 개의 PWConv(Pointwise Convolution)과 inverted bottleneck구조로 구성됩니다. PWConv는 채널간의 상호작용을 학습하는 구조이고 inverted bottleneck 구조는 모던 컨볼루션에 데이터가 입력되기 전 변수의 차원(수)를 줄였던 것을 다시 원래의 차원으로 확장하기 위한 역할을 합니다. 위 디자인을 이용하면 시간적 정보와 feature mixing을 분리하여 학습할 수 있습니다.

 

그러나 이런 구조가 시계열 예측에서 성능 향상이 미미했다고 합니다. 다변량 시계열 데이터에는 피쳐 차원, 시간 차원에 더해 변수 차원이 있습니다. 모던 컨볼루션 블록은 변수 차원을 제대로 다룰 수 가 없습니다. 다변량 시계열 데이터에는 변수 간 상호작용 정보도 중요하기 때문에 모던 컨볼루션에 변화가 필요했습니다.

 

Time Series Related Modifications

CV에서는 3채널 RGB 이미지를 각 픽셀에서 D 차원 임베딩으로 투영하면서 각 채널의 정보를 믹싱합니다. 그러나 이런 단순한 임베딩 방식은 시계열 데이터의 변수 믹싱에 적절하지 않습니다. 왜냐하면: 이미지의 채널 간 차이보다 시계열의 각 변수 간의 차이가 크고; 변수간의 복잡한 의존성을 학습하기 어려우며; 변수 차원을 삭제하기 때문에 변수 간 의존성에 대한 후속 연구가 불가능합니다. 그래서 저자는 patchify variable-independent embedding을 제안합니다. 이는 각 변수를 합쳐 하나의 임베딩을 만드는 대신 변수별로 패치화(patchify) 한 후 임베딩을 만들어 변수 차원을 살리는 방식입니다.

 

입력 시계열 데이터 $\mathbf{X}_{i n} \in \mathbb{R}^{M \times L}$($M$: 변수의 개수, $L$: 시계열의 길이)라고 할 때 각 변수 $\boldsymbol{x}_i \in \mathbb{R}^{1 \times L}(where i = 1, ..., M)$를 적절히 패딩한 후에 패치 크기 $P$, stride $S$로 $N$개의 패치로 변환(1$D$ 컨볼루션)합니다. 이후 각 패치를 $D$-차원의 임베딩 벡터가 되고 최종적으로 데이터는 $\mathbf{X}_{emb} \in \mathbb{R}^{M \times D \times N}$이 됩니다. 여기서 $M$은 변수 차원, $D$는 피쳐 차원, $N$은 시간 차원입니다.

차원에 관한 설명

변수 차원: 각 변수는 독립적으로 임베딩 되므로 이전과 똑같은 $M$ 차원입니다.

시간 차원: 패치화를 하면서 $1 \times L$의 벡터가 $N \times P$인 행렬로 변했습니다. 이 때 이 행렬은 여러 연속되는 타임스텝이 묶인 $P$차원 벡터가 $N$개가 있는 구조이고 결국 이 $N$개의 벡터들도 시간적으로 연속되기 때문에 벡터를 $D$ 차원의 임베딩 벡터로 투영하면서 $N$을 새로운 시간차원으로 본 것 같습니다.

피쳐 차원: NLP의 word embedding을 떠올려보면 단어 하나가 512차원, 768차원의 임베딩 벡터를 가집니다. 이 때 각 차원이 무엇을 의미하는지는 정확히 모르지만 단어의 의미정보를 가지고 있을 것이라고 생각하게 되는데요. 마찬가지로 시계열에서의 피쳐도 시계열이 가진 어떤 의미 정보를 가지고 있을 것으로 기대하여 $D$ 차원의 임베딩으로 패치를 투영합니다.

즉, 위 임베딩 과정을 거치면 각 $M$개의 변수가 $N$ 만큼의 시간 단위를 가지는 $D$개의 피쳐를 가지는 데이터로 변환됩니다.

DWConv ModernTCN은 기존 모던 컨볼루션의 DWConv를 개조해 피쳐와 변수에 모두 독립적으로, 즉, 시점 정보만을 학습하도록 했습니다. 그리고 ERFs를 키우기 위해 커널 사이즈릴 키워 시간 모델링 능력을 올렸습니다.

 

ConvFFN 기존 모던 컨볼루션에는 1층만 있던 ConvFFN를 두 층으로 디커플링했습니다. ConvFFN1은 각 변수의 피쳐 표현을 학습하기 위한 층이고, ConvFFN2는 각 피쳐의 변수 간 상호작용을 포착하기 위해 고안되었습니다.

 

따라서 DWConv, ConvFFN1, ConvFFN2는 각각 시간, 피쳐, 변수 차원의 상호작용을 따로따로 학습하게 됩니다. 여기에 스킵 커넥션이 하나 추가되어 한 블록을 통과하는 동안의 프로세스는 다음과 같이 표현됩니다:
$$\mathbf{Z}_{i+1}=\operatorname{Block}\left(\mathbf{Z}_i\right)+\mathbf{Z}_i$$

여기서 $i$는 블록 번호를 의미합니다. 전체적인 backbone의 구조는 이런 블록이 여러개 쌓인 구조이기 때문입니다.

 

아래 이미지는 각 컨볼루션 기반의 모델(ModernTCN, SCINet, MICN)의 ERFs를 확인하기 위해 마지막 은닉 상태 피쳐맵에서 가운데 있는 포인트에 영향을 미치는 부분을 시각화한 결과입니다. ks(kernel size)를 키운 ModernTCN의 구조가 가장 넓은 ERFs를 가진 것을 확인할 수 있습니다.