Time-LLM: LLM을 다시 프로그래밍하여 시계열 예측을 하는 모델 (Time Series Forecasting by Reprogramming Large Language Models)

PyTorchKR​:fire::kr: :thinking::speech_balloon:

  • 개인적으로 관심이 있지만 이래저래 손을 못 대고 있었던 시계열 예측(Time-series Forecasting) 분야에서 LLM을 끼얹은(...) 논문을 발견하여 정리해보았습니다. 까먹고 있었는데 일깨워주신 @coyai 님께 감사드립니다. :bowing_man:
  • 이 글은 GPT 모델로 정리한 것으로, 잘못된 부분이 있을 수 있으니 글 아래쪽의 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

소개

Time-LLM: LLM을 다시 프로그래밍하여 시계열 예측을 하는 모델 (Time Series Forecasting by Reprogramming Large Language Models)

Time-LLM은 시계열 데이터를 텍스트 기반의 표현으로 변환한 뒤 이를 LLM에 학습시키는 방식을 활용합니다. 즉, LLM의 기존의 언어 처리 기능을 시계열 예측에 활용한 것으로, 시계열 데이터를 텍스트 형태로 변경 / 접두사형 프롬프트(PaP, Prompt-as-Prefix)를 사용한 요청, 결과 텍스트를 다시 시계열 데이터로 변경하는 과정을 거쳐서 예측을 하게 됩니다.

시계열 데이터의 미래 가치를 정확하게 예측하는 것은 금융, 마케팅, 자원 관리, 과학 연구 등 다양한 분야에서 매우 중요하지만, 기존의 예측 방법은 복잡한 데이터 패턴으로 인해 어려움을 겪거나 전문 지식이 필요한 경우가 대부분이었습니다. 통계 모델이나 머신러닝 알고리즘과 같은 전통적인 방법은 널리 사용되지만 데이터의 미묘한 뉘앙스를 포착하지 못할 수 있는데 반해, Time-LLM은 새로운 가능성을 제시합니다.

LLM 재프로그래밍(LLM Reprogramming)이란?

기존의 시계열 예측 방법들은 주로 특정 작업을 위해 설계된 알고리즘을 활용하고 있어, 예측 알고리즘과 데이터 특성에 대한 전문 지식을 필요로하는 것이 일반적이었습니다. 하지만, Time-LLM에서 접근한 'LLM 재프로그래밍(LLM reprogramming)' 방식을 사용하면 광범위한 파인튜닝이나 재학습 없이 원하는 시계열 예측 방법에 사용할 수 있게됩니다. Time-LLM의 구조에 대해서 살펴보기 전에 LLM 재프로그래밍 기법에 대해서 먼저 살펴보도록 하겠습니다.

LLM 재프로그래밍 기법은 기본적으로 방대한 양의 텍스트 데이터로 학습된 LLM이 시계열 예측을 수행하도록 약간의 '기교(trick)'를 부리는 것과 같습니다. 즉, LLM을 처음부터 다시 훈련시키는 대신, 언어 처리 및 패턴 인식에 대한 기존 기술을 새로운 작업에 맞게 용도를 변경하는 데 중점을 둡니다.

LLM 재프로그래밍은 다음과 같은 방식으로 동작합니다:

  • 데이터 변환(Data Transformation): 원본 시계열 데이터는 기호 기반 인코딩, 패턴 기반 인코딩 또는 자연어 설명 통합과 같은 다양한 기술을 사용하여 텍스트 표현으로 변환됩니다. 이렇게 하면 LLM이 이해할 수 있는 '언어'가 만들어집니다.
  • 접두사형 프롬프트(PaP, Prompt-as-Prefix): 프롬프트라고 하는 특정 지침이 텍스트 데이터와 함께 LLM에 제공됩니다. 이러한 프롬프트는 예측 대상, 도메인 지식 통합, 관련 패턴 강조 표시 등을 지정하여 예측 작업에 대한 LLM의 주의와 추론을 유도합니다.
  • LLM을 사용한 예측(Inference using LLM): LLM은 텍스트 데이터와 프롬프트를 분석하여 언어 처리 기능을 활용하여 데이터 내의 패턴과 관계를 식별합니다. 기본적으로 인코딩된 시계열을 '읽고' 의미 있는 정보를 추출합니다.
  • 출력 투영(Output Projection): 그런 다음 LLM의 예측 결과인 텍스트는 출력 투영이라는, 일종의 '디코딩(decoding)' 과정을 거쳐 다시 숫자로 변환됩니다. 이를 통해 실제 애플리케이션에서 예측을 직접 해석하고 사용할 수 있습니다.

Time-LLM에서 적용한 LLM 재프로그래밍은 사전 학습된 LLM의 능력을 활용하는 방법으로, (1) 각 작업별로 모델을 학습하는 방식(task-specific learning)보다 유연성이 뛰어나고 일반화하된 방식으로 사용할 수 있습니다. 또한, (2) 모델을 파인튜닝하는 방식(model fine-tuning)에 비해 기본 모델의 잠재력을 충분히 활용할 수 있으며, 적용하고자 하는 세부 작업별로 파인튜닝을 하지 않아도 된다는 장점이 있습니다. 하지만, 최적의 성능을 위해서는 텍스트 인코딩 및 프롬프트의 신중한 설계가 필요하며, 아직은 모든 작업에서 전문화된 모델을 능가하지는 못한다는 약점도 함께 가지고 있습니다.

Time-LLM 모델 구조

Time-LLM의 핵심은 시계열 예측 작업을 위해 기존의 대규모 언어 모델(LLM)을 다시 프로그래밍하는 기능에 있습니다. 어떻게 이러한 접근 방법이 가능한지에 대해서 살펴보겠습니다.

입력 임베딩(Input Embedding)

먼저 입력으로 사용할 시계열 데이터를 준비합니다. 이러한 원본 시계열 데이터를 텍스트로 인코딩하기 전, 모델과의 호환성과 일관성을 유지하기 위해 전처리 및 정제하는 과정을 거칩니다. 이러한 전처리 과정에는 결측값(missing value)이나 이상치(outlier) 처리, 데이터 스케일링 및 정규화(scaling / normalizing) 등이 포함되어 있습니다.

전처리가 완료된 시계열 데이터가 준비되었다면, 이제 LLM이 이해할 수 있도록 텍스트로 인코딩합니다. 서로 다른 시점의 숫자 값으로 구성된 시계열 데이터는 LLM이 직접 이해할 수 없습니다. 이 간극을 메우기 위해 Time-LLM은 텍스트 인코딩 기법을 사용합니다. 여기에는 숫자 데이터를 일련의 기호와 패턴으로 변환하여 LLM이 "언어"로 해석할 수 있도록 하는 작업이 포함됩니다.

다음은 데이터의 특성과 작업의 종류에 따른 몇 가지 일반적인 인코딩 기법의 예시들입니다:

  • 기호 기반 인코딩(Symbol-based encoding): 각 데이터 포인트는 고유한 기호로 표시되며, 일련의 기호는 시계열 패턴을 인코딩합니다.
  • 패턴 기반 인코딩(Pattern-based encoding): 추세(trend), 계절성(seasonality) 또는 주기(cycle)와 같은 특정 패턴이 식별되고 기호로 표시되어 LLM이 이러한 역학을 포착할 수 있습니다.
  • 자연어 인코딩(Natural Language encoding): 텍스트 설명이나 관련 이벤트가 있는 시계열의 경우, 이러한 요소를 텍스트 표현에 직접 통합하여 LLM에 더 풍부한 컨텍스트를 제공할 수 있습니다.

인코딩 방법의 선택은 Time-LLM의 효과에 결정적인 역할을 합니다. 신중하게 설계된 인코딩은 LLM이 데이터 내의 기본 패턴과 관계를 이해하는 데 필요한 정보를 수신할 수 있도록 보장합니다.

패치 재프로그래밍(Patch Reprogramming)

(시계열 → 텍스트로) 인코딩된 데이터를 패치(patch)라고 불리는 일정한 크기의 데이터 조각(segment)로 나눕니다. LLM은 이러한 패치를 입력으로 받아 데이터를 처리하게 됩니다. 기존의 언어 모델과 동일하게 입력 값(여기서는 패치)은 임베딩 레이어를 거쳐 다차원의 임베딩 벡터로 변환되며, 이 과정에서 패치 내부의 의미있는 데이터와 관계가 표현되게 됩니다.

이를 위해 인코딩된 시계열 데이터의 관계 식별을 위한 어텐션을 아래와 같은 방식으로 정리합니다. 아래 수식에서 Q^{(i)}_k, K^{(i)}_k, V^{(i)}_ki 번째 레이어에서의 Key, Query, Value 벡터이며, Z^{(i)}_k 는 현재 예측 작업과 가장 관련성 높은 부분의 인코딩된 데이터의 가중합을 나타냅니다. (자세한 내용은 5페이지의 수식(1)을 참고해주세요. :sweat_smile: )

Z^{(i)}_k = Attention(Q^{(i)}_k, K^{(i)}_k, V^{(i)}_k) = SOFTMAX( {{ Q^{(i)}_k \times K^{(i)T}_k } \over {\sqrt{d_k}}}) \times V^{(i)}_k

이러한 어텐션 메커니즘을 통해 Time-LLM은 인코딩된 시계열 데이터 중 현재 예측 작업과 가장 관련성이 높은 특정 부분에 집중할 수 있습니다. 시계열 데이터에는 복잡한 패턴과 종속성이 포함되어 있는 경우가 많고 모든 데이터 포인트가 정확한 예측을 위해 똑같이 중요한 것은 아니기 때문에 이 기능은 매우 중요합니다. 가장 관련성이 높은 정보에 선택적으로 관심을 기울이면 모든 데이터 요소를 동일하게 처리하는 방법에 비해 Time-LLM이 더 나은 예측 성능을 달성할 수 있습니다.

접두사형 프롬프트 (PaP, Prompt-as-Prefix)

이전 단계의 텍스트 인코딩은 LLM이 시계열 데이터를 처리할 수 있게 해주지만, LLM이 입력된 데이터로 "무엇을 해야 하는지"는 명시하지 않습니다. 바로 이 부분에서 PaP(Prompt-as-Prefix, 접두사형 프롬프트)가 등장합니다. PaP는 인코딩된 데이터와 함께 LLM에 전달되는 일련의 명령어 또는 프롬프트 역할을 합니다.

프롬프트 구성 예시 (논문의 그림4)

Time-LLM으로 처리하고자 하는 작업 유형(예. 미래 값 예측, 이상징후 감지 등)에 맞춰 프롬프트 템플릿을 설계하고, LLM이 이러한 프롬프트를 처리하며 원하는 작업 유형에 맞는 추론이 되도록 유도합니다. 이를 위해 프롬프트를 구성하는 단계와 각 패치 앞에 해당 프롬프트를 앞에 붙이는(prefix) 단계를 거칩니다.

이러한 프롬프트는 다음을 통해 LLM의 분석을 안내합니다:

  • 예측 작업 지정: 미래 값 예측, 추세 파악, 이상 징후 감지 등 다양한 예측 작업을 수행할 수 있습니다.
  • 도메인 지식 제공: 데이터 소스, 컨텍스트 또는 특정 예측 목표에 대한 관련 정보를 통합합니다.
  • 어텐션 유도: LLM이 집중해야 할 데이터 내의 특정 패턴이나 특징을 강조 표시합니다.

개발자는 PaP 프롬프트를 효과적으로 작성함으로써 LLM의 동작을 원하는대로 조작할 수 있으며, 정확하고 관련성 있는 예측을 하도록 유도할 수 있습니다.

출력 투영(Output Projection)

인코딩된 데이터에 PaP를 포함하여 LLM에 추론을 요청하면 결과를 얻을 수 있습니다. LLM은 방대한 언어 처리 능력을 바탕으로 텍스트 표현을 분석하여 다음과 같은 작업을 수행합니다:

  • 데이터 내에서의 패턴과 관계 식별: LLM은 텍스트를 분석하는 방식과 유사하게 데이터 내에서 반복되는 시퀀스, 상관관계, 종속성을 검색합니다.
  • 컨텍스트에 기반한 추론: PaP 프롬프트는 컨텍스트를 제공하고 LLM의 추론 프로세스를 안내하여 미래 값에 대해 정보에 입각한 예측을 할 수 있도록 합니다.
  • 텍스트 기반 예측 생성: LLM의 출력은 처음에 선택한 인코딩 방법에 맞춰 텍스트 예측의 형태로 제공됩니다.

이렇게 제공된 LLM의 예측을 텍스트 데이터에서 원래 시계열 데이터와 관련된 수치로 다시 변환하는 것입니다. 출력 투영(Output Projection)이라 부르는 과정을 통해 예측을 직접 해석할 수 있고 실제 애플리케이션에 사용할 수 있습니다.

인코딩 시에 사용했던 방법과 원하는 출력 형식에 따라 다양한 투영 기법을 사용할 수 있습니다. 예를 들어, 인코딩에 기호가 사용된 경우(Symbol-based Encoding), 매핑 체계가 이를 다시 숫자 값으로 변환합니다. 패턴을 인식하여 인코딩된 경우(Pattern-based Encoding)에는 식별된 패턴을 기반으로 원래의 시계열을 재구성하는 투영 기법이 사용될 수 있습니다.

결론

전반적으로 Time-LLM은 언어 처리 및 적응에 있어 고유한 장점으로 인해 다양한 예측 작업에 대한 유망한 잠재력을 보여줍니다. 현재의 한계를 해결하기 위해서는 더 많은 연구와 개발이 필요하지만, Time-LLM은 특히 다양한 데이터와 작업에 대한 일반화 및 적응이 필요한 시나리오에서 시계열 예측에 대한 새롭고 유연한 접근 방식을 위한 길을 열어줍니다.

Time-LLM은 다양한 예측 작업에서 다른 방법과 비교했을 때 특히 다음 네 가지 주요 영역에서 유망한 성능을 보여주었습니다:

1. 장기 예측(Long-term Forecasting)

장점: 대규모 텍스트 데이터셋을 학습한 LLM은 기존 모델이 놓칠 수 있는 장기적인 종속성과 맥락 정보를 포착할 수 있습니다. 또한, Time-LLM의 리프로그래밍 접근 방식은 프롬프트를 통해 도메인 지식을 통합하여 특정 컨텍스트에서 장기 예측을 개선할 수 있었으며, 텍스트 인코딩의 유연한 특성으로 인해 장기 예측과 관련된 다양한 패턴을 포착할 수 있습니다.

한계: 장기 종속성은 본질적으로 노이즈가 많고 학습하기 어려울 수 있으며, 전문화된 방법에 비해 Time-LLM의 장기 정확도에 영향을 미칠 수 있습니다. 장기적인 추세를 분석할 때 LLM 예측의 해석 가능성이 어려울 수 있습니다.

2. 단기 예측(Short-term Forecasting)

장점: Time-LLM의 기반이 되는 LLM은 텍스트 데이터 내에서 단기 패턴과 관계를 식별하는 데 탁월하며, 이러한 LLM의 특징은 단기 예측 작업에 유용합니다. 또한, Time-LLM의 프롬프트 기반 접근 방식은 특정 단기 추세나 이상 징후에 집중할 수 있어 잠재적으로 정확성을 높일 수 있으며, 복잡한 딥러닝 모델에 비해 LLM 추론의 효율성은 실시간 요구 사항이 있는 단기 예측 애플리케이션에서 유용하게 사용할 수 있습니다.

한계: 단기 예측은 특정 도메인 지식과 데이터 특성에 크게 의존하는 경우가 많으며, 이는 텍스트 인코딩과 프롬프트를 통해 완전히 포착되지 않을 수 있습니다. 전문화된 단기 예측 모델과 비교하여 경쟁력 있는 성능을 달성하려면 Time-LLM을 신중하게 튜닝하거나 특정 인코딩을 선택해야 할 수 있습니다.

3. 퓨-샷 예측(Few-shot Forecasting)

장점: LLM은 대규모 사전 학습을 통해 일반적인 언어 처리 기술을 활용하여 제한된 데이터(few-shot)로 새로운 작업에 적응할 수 있습니다. Time-LLM의 프롬프트는 사용 가능한 제한된 데이터를 효과적으로 통합하도록 조정할 수 있으므로 전문 모델을 재학습하는 것에 비해 더 나은 적응력을 발휘할 수 있습니다. 텍스트 인코딩의 유연성 덕분에 단발성 학습 시 다양한 정보 소스(예: 텍스트 설명)를 활용할 수 있습니다.

한계: 퓨-샷 학습은 본질적으로 제한된 데이터로 인해 어려움을 겪을 수 있으며, Time-LLM의 성능은 제공되는 제한된 데이터의 품질과 관련성에 민감할 수 있습니다. 이러한 시나리오에서 효과적인 프롬프트를 설계하려면 더 많은 연구와 미세 조정이 필요합니다.

4. 제로-샷 예측(Zero-shot Forecasting)

Time-LLM과 다른 모델들 간의 제로-샷 예측(Zero-shot Forecasting) 결과 비교: 학습 데이터의 5% 사용 시

장점: LLM은 사전 학습된 방대한 지식으로 인해 학습 데이터 없이(제로-샷, zero-shot) 작업을 수행할 수 있는 독보적인 능력을 갖추고 있습니다. 특정 데이터 없이도 예측 작업과 도메인 지식을 설명하도록 Time-LLM의 프롬프트를 만들 수 있으므로 잠재적으로 제로-샷 예측이 가능합니다. 보이지 않는 데이터 포인트에 대한 LLM의 일반화 가능성은 데이터 기반 방식에 비해 제로-샷 시나리오에서 이점을 제공할 수 있습니다.

한계: 제로-샷 예측은 여전히 어려운 과제이며, 관련 데이터를 사용할 수 없는 경우 Time-LLM의 성능이 데이터 기반 접근 방식보다 현저히 떨어질 수 있습니다. 프롬프트의 품질과 효과는 제로-샷 성능에 큰 영향을 미치므로 신중한 설계와 전문 지식이 필요합니다.

더 읽어보기

Time-LLM 논문

Time-LLM GitHub 저장소




:fire:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 뉴스 발행에 힘이 됩니다~ :star_struck:

1개의 좋아요

오늘 YouTube를 열었다가 추천 영상으로 고려대학교 DSBA 연구실의 Time-LLM 리뷰가 떴더라구요 :scream_cat:

image


일단 저는 다음에 보기를 눌렀고요:rofl: 다른 분들과도 공유하고자 살포시 덧글 달아봅니다 ㅎㅎ