본문 바로가기

Data & AI

Time Series Foundation Model, Learning the Language of Time Series (Chronos Bolt)

반응형

안녕하세요. 

 

오늘은 시계열 예측모델에서 요즘 핫한

 

Chronos Foundation Model을 소개해드리려고 합니다. 

 

https://arxiv.org/html/2403.07815v1

 

Chronos: Learning the Language of Time Series

The scaled time series 𝒙~1:C+H=[x~1,…,x~C,…,x~C+H]subscript~𝒙:1𝐶𝐻subscript~𝑥1…subscript~𝑥𝐶…subscript~𝑥𝐶𝐻\tilde{{\bm{x}}}_{1:C+H}=[\tilde{x}_{1},\dots,\tilde{x}_{C},\dots,\tilde{x}_{C% +H}]over~ start_ARG bold_italic_x

arxiv.org

 

 

zero-shot 기능을 갖춘 대규모 언어모델, LLM이 등장하면서

 

시계열 도메인에서도 "Foundation Model"을 개발하는데 많은 관심이 생기게 되었습니다. 

 

Chronos 논문의 구조에 대해 설명드리면

 

section 1에서는 Chronos model의 탄생 배경을 언어모델과 비교하여 간단히 설명하고 있고

 

section 2에서는 시계열예측과 언어모델과 관련된 배경을 이야기하고

 

section 3에서는 시계열예측에서 chronos model프레임워크에 대해서 설명하고

 

section 4에서는 데이터 증강 기술에 대해서 이야기하고

 

section 5, 6에서는 결과들에 대해, 그리고 다양한 디자인 관점들, 앞으로의 방향과 마무리로 이어집니다. 

 

 

Chronos Model의 시작 

 

우선 언어모델과 시계열모델의 비교로부터부터 논문은 시작됩니다. 

 

다음 토큰을 예측하는 언어모델과

 

다음 값을 예측하는 시계열 예측모델 사이의 근본적 차이점에 논문은 중점을 두고 있습니다.

 

유한한 사전 토큰과 무한하고 일반적으로 연속적인 도메인의 값이라는 분명한 구별에도

 

언어와 시계열 모두 시퀀스를 처리한다는 공통적인 Task가 반복됩니다. 

 

결국 만들어진 언어모델 자체를 시퀀스를 처리한다는 공통점으로

 

시계열 모델에 적용해도 잘 동작해야 하지 않을까 라는 질문에서부터 Chronos가 구현되어 왔습니다. 

 

 

 

chronos에서는 시계열의 실수 값들에 대해 스케일링, 양자화를 이용한 시계열 값을 토큰화하고

 

토큰들은 언어모델의 트랜스포머로 들어가서 처리되고

 

모델은 cross entropy손실을 통해 토큰화된 기존 transformer based language model을 훈련합니다.  

 

추론하는 동안 모델에서 토큰을 자기 회귀적 샘플링하여 숫자 값으로 다시 매핑하여

 

여러 시퀀스들을 샘플링하여 예측의 분포를 얻습니다. 

 

 

 

TS Mixup & KernelSynth

 

Chronos는 시계열 도메인의 Foundation Model으로 거듭나기 위해

 

시계열데이터의 고질적 문제인 데이터 세트 부족 문제를 극복해야 했습니다. 

 

논문에서는 TSMixup, Kernel synth를 포함해 데이터 증강 전략을 이용했습니다. 

 

TSMixup은 다양한 학습 데이터들 사이에 기본 시계열 세트를 무작위로 샘플링하고

 

이들을 convex combination을 통해 새로운 시리즈 데이터로 만들어냅니다. 

 

convex combination은 두 개 이상의 데이터(벡터)를 비율에 따라 섞는 과정입니다. 

 

섞이는 비율은 [0, 1] 사이에 정해지며 합이 1입니다. 

 

학습 세트에서 임의의 두 시계열을 Beta 분포를 따르는 샘플링으로 섞어서

 

데이터의 다양성을 증가시키고 일반화 성능이 향상될 수 있습니다. 

 

 

Kernel Synth는 가우시안 프로세스를 사용하여

 

kernel함수를 무작위로 구성하여 합성 시계열을 생성합니다. 

 

kernel 함수의 무작위 조합을 사용해 

 

다양한 패턴을 가진 합성 시계열 데이터를 생성할 수 있습니다. 

 

 

 

 

이런 기술은 시계열 예측에서 소규모 훈련 데이터 세트의 본질적 한계를 해결하고

 

모델의 robust, generalization을 강화하는데 일조하게 되었습니다.

 

Foundation 모델이기에 일반화를 위한, 더 많은 데이터에서의 학습을 위해 합성데이터를 만들어서 사용하고 있지만

 

과연 시장에 적용하기 위한 트레이딩 모델에서도 합성데이터로 훈련된 모델을 투입시키는 게 바람직할 것인가에는 아직 의문이지만

 

앞으로 연구될 MoE 같은 구조를 보면, 받아들이는 확률분포에 따라 적절한 Transformer Model을 이용하기 때문에

 

트레이딩을 위한 자산에 대한 계절/시기적 확률적 분포를 합성데이터로 생성해 두고

 

더 다양한 합성데이터로 훈련을 하고 

 

시장에 존재할 수 있는 위험요인들을 간헐적으로 투입시켜 가상의 시장데이터를 만들어 훈련하면

 

어느 합성데이터로 학습시켰는지에 따라 모델의 버전을 여러 개 둘 수 있지 않을까 생각하고 있습니다. 

 

 

 

zero-shot forecasting 

 

zero-shot은 학습되지 않은, 데이터에 대해서 시계열에 대한 예측을 생성하는 능력입니다. 

 

초기에는 하나의 시계열 데이터셋으로 학습하고, 다른 데이터셋으로 테스트하는 방식을 채택했는데

 

트랜스포머 기반 모델이 들어오며 미리 정의된 트렌드와 계절성에 따라 

 

생성된 합성데이터로 학습하고, 학습된 모델을 실제 시계열 데이터에 제로샷 방식을 적용해 보는 방식으로 변경되었습니다. 

 

새로운 chronos모델은 가우시안 프로세스를 통해 합성 시계열 데이터를 생성하고

 

실제 데이터와 합성데이터를 함께 사용해서 학습되었기 때문에

 

전반적으로 제로샷 성능이 향상되었을 것을 기대하고

 

확률적인 예측이 가능한 장점이 생기게 되었습니다.

 

 

 

Trading Experiments

 

물론 해당 논문에서 fine-tuning 없이 zero-shot forecasting이 가능하다는 강점을 내세우고 있지만

 

저는 pretrained 된 chronos-bolt 모델을 가져와서 

 

각 자산군의 트레이딩을 위해 fine-tuning 하는 작업을 진행했습니다. 

 

사용한 pretrained model은 chronos-bolt tiny/small/base모델을 사용했고

 

각각 8.7M / 47.7M / 205.3M 정도의 파라미터를 가지고 있습니다. 

 

 

Chronos bolt tiny QQQ Forecasting
Chronos bolt small QQQ Forecasting
Chronos bolt base QQQ Forecasting

 

모든 트레이딩은 100 거래일의 data를 context로, 10 거래일 가격을 예측하는 task로 학습되었고

 

모든 모델에서 공통적으로 예측에 큰 차이는 없어 보입니다. 

 

제가 모델을 훈련하면서 주로 관심 갖는 지표가 있는데

 

물론 손실함수결과값도 중요하지만 의미 있게 보는 건  accuracy입니다. 

 

시계열 도메인에서도 다양한 sub-domain이 있고

 

저희가 속해있는 트레이딩에선, 예측이 결국 맞냐, 틀리냐도 중요한 척도입니다. 

 

많은 시계열 모델이 채택하는 MSE Loss는 모든 point-wise loss를 집계할 순 있지만

 

모델이 결국 마지막 context의 가격으로부터 상승/하락을 잘 맞추었는가는 알 수 없고, 

 

제가 훈련 시 별도로 accuracy항목을 측정하고 있습니다. 

 

학습데이터의 구조마다 다를 수 있으나

 

validation에서 tiny / small / base 모델 각각 65.4% / 70.3% / 71.2% 의 accuracy를 가지나

 

다른 예측 모델보다 지표가 좋게 나온 것 같은데

 

해당 데이터셋이 그냥 우상향 하는, 예측 모델이 예측하기 쉬운 구간이었을 수 있습니다. 

 

test data에서는 다시 54.2% / 56.2% / 52.2% 의 accuracy를 갖고 있습니다. 

 

validation / test data accuracy

 

눈여겨볼 것은 수치의 scala값 자체에 의미를 두지 않고

 

파라미터가 늘어남에 따라 특정 확률분포를 갖는 시장에서 우수한 성과를 낼 수 있지만

 

시장은 늘 변화하기 때문에 다른 확률분포의 시장으로 흘러가면

 

모델의 파라미터가 학습한 최적의 가중치들이 무의미해질 수 있음을 보여줍니다. 

 

그럼에 시장의 확률분포를 모니터링하고 적재적소에 적절한 가중치를 갖는 모델을 이용해서

 

추론, 트레이딩 하는 게 중요할 수 있겠습니다. 

 

무슨 신의 영역 트레이딩이냐고 하실 수 있는데

 

현재 트랜스포머 이후 가장 주목받고 있는 아키텍처 자체도 MoE, SSM으로

 

제가 자주 언급했던 시장의 확률 분포를 관찰하면서

 

적절한 모델들을 투입하는 것과 유사한 방식의 모델연구들이 많습니다.

 

내년엔 이런 연구들도 진행하면서 JeTech Lab을 한 단계 더 업그레이드하면 좋을 것 같습니다.

 

 

마무리

 

오늘은 Timeseries Forecasting을 위한  Foundation Model인 chronos에 대해 알아보았습니다. 

 

사실 Chronos의 특징 중 하나는 확률적 예측을 한다는 것입니다. 

 

위에서 보여준 예시는 예측의 분포상 중앙값에 근사하는 예측치들을 기본적으로 보여드렸습니다. 

 

커뮤니티에 예시로 보여드린 것처럼, 1 분위부터 9 분위까지 예측데이터의 영역을 제공할 수 있고

 

이에 따라 마치 미래의 볼린저밴드를 켜둔 것처럼, 현재 가격의 분포를 시각적으로 볼 수 있으면

 

트레이딩에 대응하기 더 용이할 것 같습니다. 

 

JeTech Lab에 해당 모델을 적용하기 위해 fine-tuning 작업을 이어서 진행해야겠습니다. 

 

그리고 제가 연구한 내용들을 블로그에 꾸준히 적고 있는데

 

앞으로 서비스에 해외 확장을 위해 영문으로 작성된 블로그 내용 또한 작성하고 유튜브에 업로드할 예정입니다. 

 

티스토리에는 기존 한글 포스트를 공유하고 

 

Medium 플랫폼에서 영문 포스트를 공유하여 분리할 예정입니다. 

 

유튜브에는 상황을 봐서 한국포스트만, 혹은 영어포스트만, 혹은 둘 다 올릴지 알고리즘 시도를 해볼 예정입니다. 

 

12월 잘 보내고 계신가요?

 

JeTech Lab을 공개하고 시간이 제법 지났는데 

 

앞으로 더욱 다양한 모델들로 채워나가도록 하겠습니다. 

 

내년에는 더 다양한 시각화와 강력한 모델들도 선보일 예정이니 기대해 주시기 바랍니다. 

 

감사합니다. 

 

반응형