Time Series Representation Learning

castlechoi·2023년 7월 24일
0

Projects

목록 보기
2/2

연구기간


02/2023 ~ 07/2023

연구 목적


M4 Dataset에 대해서 SOTA를 달성하는 Self-Supervised learning model의 구현

모델 구조


  1. TF-C
  2. N-BEATS

데이터


  • M4 Dataset
  • N-BEATS backbone 적용 전에는 Many-to-one 실험
    1. 같은 Time frequency
    2. 같은 Data domain
  • N-BEATS backbone 적용 후에는 One-to-one 실험

실험


  1. 시계열 분류 → 시계열 예측 문제로 변경

    • Classifier → Forecaster로 변경
    • 분류와 관련된 코드를 모두 예측 Task로 변경
  2. 하이퍼파라미터의 변경

    • Loss Function에서의 각 항의 계수 변경
    • Learning rate 변경
    • 입력 데이터의 window size와 horizon size의 변경
  3. Augmentation의 변경

    • Time domain
      • Jittering
      • Clipping
      • Perturbation
    • Jittering만 사용했을 경우가 가장 성능이 좋았음
  4. Fine-tuning Loss를 sMAPE으로 변경

    • 기존에 분류 task를 수행했기 때문에 cross-entropy loss 이었음
    • sMAPE은 M4 Competition에서 사용된 evaluation function 중 하나
  5. 시계열 예측에 대한 Baseline 모델 구현하여 성능 비교

    • Baseline 모델
      • N-BEATS
      • TF-C 모델에서 Frequency 부분을 떼어낸 Skip-connection이 적용된 CNN model
      • TF-C 모델에서 Frequency 부분을 떼어낸 Transformer model
  6. Backbone의 변경

    • 논문에서 제시한 방법인 Transformer / CNN / LSTM backbone을 각각 적용해보고 성능 확인
    • M4 dataset에 대하여 SOTA를 달성했던 모델인 N-BEATS를 TF-C 모델의 backbone으로 사용하여 성능 확인
    • 현재 여러 시계열 데이터셋에서 SOTA를 달성한 모델인 N-Linear 모델을 backbone으로 사용하여 성능 확인

    → 그나마 Transformer가 성능이 좋았음

  7. MinMaxScaling을 제거하고 실험

    • N-BEATS 논문에서 M4 데이터셋에 대하여 MinMaxScaling을 통한 전처리를 하지 않았고 Scaling에 robust한 sMAPE을 사용했기 때문에 MinMaxScaling이 시계열 데이터의 정보를 훼손한다고 생각하였음
    • 단순히 Backbone을 N-BEATS 모델로 적용했을 때보다는 성능이 개선되었지만 여전히 supervised learning으로 학습한 N-BEATS 모델보다는 성능이 떨어짐
  8. N-BEATS의 출력을 backcast일 경우 forecast일 경우에 대해 성능 확인

    • N-BEATS의 출력인 forecast와 backcast 두 표현 방식에 대해서 성능에 큰 차이가 없었음

References


TF-C code github : https://github.com/mims-harvard/TFC-pretraining

N-Beats code github : https://github.com/ServiceNow/N-BEATS

회고


  1. N-BEATS 모델은 horizon의 길이에 따라서 다른 파라미터를 가지는 여러 모델들을 앙상블해서 학습을 하는데 Contrastive learning에서 이 앙상블 학습이 시계열 특성을 해치지는 않는지 궁금함
  2. Jittering에서 Gaussian noise의 범위를 조절하여 성능향상을 할 수 있을 것으로 예상
  3. 시계열 데이터는 다른 데이터들에 비해서 정보가 적다고 생각하여 복잡한 모델에서의 시계열 데이터의 학습은 과적합이 쉽게 일어날 것 같아 이 과적합을 잡아주는 것이 시계열 데이터의 문제들을 해결하는데 큰 요인으로 작용할 수도 있을 것이라고 생각하게 됨
  4. 시계열 데이터는 같은 도메인과 같은 시간 주기에 대해서 데이터를 가져오면 데이터가 상당히 유사한 모습을 지니고 있다고 생각을 하여 과적합을 잘 잡아주어야한다고 생각하는데 이를 Scale정보를 분리하여 따로 학습하고 MinMaxScaling한 데이터를 모델에 넣어주어 학습을 하여 두 feature를 결합하는 방식으로 모델을 구성하는 방식으로 성능을 개선시킬 수 있을지 궁금함
profile
내가 보려고 만든 논문 정리 블로그

1개의 댓글

comment-user-thumbnail
2023년 7월 25일

좋은 글 감사합니다.

답글 달기
Powered by GraphCDN, the GraphQL CDN