[논문리뷰] DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks

hyo._.op·2026년 7월 22일

논문리뷰

목록 보기
13/14

Overview

논문명: DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks
학회(출판연도): International Journal of Forecasting (2020)
연구분야: 딥러닝 기반 시계열 예측 및 시계열 표현 학습


Background

  • Deep AR

    • 수많은 time series를 동시에 학습하는 autoregressive RNN기반 global neural forecasting model

      ⇒ 이후 DeepState, DeepFactor, Transformer-based forecasting, Temporal Fusion Transformer, PatchTST 등장

  • Time Series Forecasting

    • 과거 데이터를 이용해 미래 값을 예측하는 문제
      • salestsalest+1,salset+2,sales_t → sales_{t+1}, salse_{t+2}, …
    • 왜 중요한가?
      • 기업에서 거의 모든 의사결정에 사용
        • 재고 관리, 서버 load, 전력 소비, 교통량
  • Probabilistic Forecasting

    • 미래 값을 하나의 숫자가 아닌 확률 분포로 예측하는 것
    • 현실 세계에서는 불확실성이 존재하기 때문에 중요하다
  • Autoregressive Model

    • 현재 값을 이전 값으로 예측
      • AR
  • Recurrent Neural Network (RNN)

    • 시간 순서 데이터를 처리하는 neural network
  • Likelihood Modeling

    • DeepAR은 확률 분포를 직접 예측
      • 가우시안, Negative Binomial
  • 연구 흐름

    • 기존에는 single time series models로 각 모델 간 데이터 공유가 없고 학습 데이터가 부족하다는 문제가 있었음

      • ARIMA for series1
      • ARIMA for series2
      • ARIMA for series3
    • 이 논문에서 Power-law scale distribution이 중요한데

      몇몇 상품만 huge scales를 가지고 있어서 scale imbalance한 문제가 있음

      → 그래서 small series와 large series를 같은 모델에 넣으면 gradient imbalance 한 문제 발생

Abstract

  • Probabilistic forecasting(확률적 예측)

    • 과거 시계열 데이터를 기반으로 미래 값의 확률 분포를 추정하는 것
    • 비즈니스 프로세스를 최적화하는 데 중요한 역할 ex. 소매(retail) 산업에서 수요 예측이 적절한 재고를 적절한 장소에, 적절한 시점에 확보하기 위해 매우 중요
  • DeepAR

    • 많은 관련 시계열 데이터를 이용해 자기회귀(auto-regressive) 구조의 순환 신경망(RNN)을 학습시켜 정확한 확률적 예측을 생성하는 방법

      ✓ 자기회귀(auto-regressive)

      • 현재의 값을 과거의 값들의 함수로 표현하는 모델

      ✓ 순환신경망(RNN)

      • DeepAR의 경우 RNN의 구체적인 구현으로 LSTM 사용

      • Vanilla RNN은 gradient vanishing 문제로 인해 long term dependency로 학습이 어려움

        → LSTM은 memory cell을 가지고 있어서 long-term pattern을 잘 학습

      • time series의 dynamics를 잘 학습함

      • DeepAR
        • 입력
          • zt1,zt2z_{t-1}, z_{t-2}: previous value - 바로 이전 값
            • 자기상관모델이기때문에 이전 값이 다음 값을 설명한다고 가정
          • covariates
            • 시간 t에 알려진 외부 변수(feature)
            • 예를 들어 주말이면 판매가 증가한다
          • previous hidden state
            • RNN의 지금까지 기억하고 있는 과거 정보 요약
        • 계산 !image.png
          • zt1,zt2z_{t-1}, z_{t-2}, seasonality, trend, covariates 같은 정보를 hidden state에 저장함

            !image.png

          • hidden state에서 확률 분포 파라미터 계산 - fully connected layer로 계산

        • 확률분포 출력 → 예측(샘플을 뽑아서)
    • 이전 전통적인 방식은 시계열 하나 → 모델 하나에 대응시켰다면 DeepAR의 경우 수 천개의 시계열을 하나의 딥러닝 모델로 대응시켜서 패턴을 공유하고 학습

      • 전통적: ARIMA, exponential smoothing, classical statistical models → ① 많은 시계열 처리, ② 비선형 패턴 처리의 어려움과 ③ feature engineering 필요 ⇒ 딥러닝은 이런 문제를 자동으로 학습
  • 여러 실제 예측 데이터셋에 대한 실험을 통해 최신 방법과 비교하여 약 15%의 정확도 향상을 보였음

1. Introduction

  • 예측(forecasting)은 대부분의 기업에서 운영 프로세스를 ① 자동화하고 ② 최적화하는데 중요한 역할을 하며, ③ 데이터 기반의 의사결정을 가능하게 함

    • 소매산업 → 공급과 수요의 확률적 예측을 통해 재고관리, 직원 스케줄링, 물류 네트워크 설계 등에 사용 ⇒ 공급망 최적화의 핵심 기술
  • 기존: 개별 시계열 또는 소수의 시계열을 예측하는 환경에서 개발

    • 각 시계열마다 모델 파라미터를 과거 데이터로부터 독립적으로 추정

    • 이렇게 되면 상품이 1000개라고 했을 때 모델이 1000개 필요한 비효율 발생 + 신제품의 경우에는 데이터가 적어서 모델이 불안정

    • 모델은 자기 상관 구조, 추세, 계절성, 기타 설명 변수 등을 고려해서 수동으로 선택(사람이 설계해야함)

      • 학습된 모델은 모델의 동적 구조에 따라 ① 미래 값을 예측, ② 시뮬레이션

        예측 분포의 닫힌 형태(closed-form expression)을 통해 확률적 예측 생성 가능

        ✓ 모델의 동적 구조(dynamic structure)

        • 동적구조: 시간이 흐르면서 값이 어떻게 변화하는지를 정의하는 규칙

          • 현재 값 → 다음 값이 어떻게 만들어지는지 정의하는 수식 구조

          • 시간 의존성이 존재하기 때문에 동적 모델 statet = f(state{t-1})

            ↔ 정적 모델 y=f(x)

        ✓ 예측 분포의 닫힌 형태

        • 적분이나 시뮬레이션없이 수식 하나로 바로 계산할 수 있는 형태

          • 가우시안, 이항분포, 포아송

            ↔ 시뮬레이션: 샘플을 많이 만들어서 근사

            ex. GAN, Diffusion, DeepAR sampling

        • Box-Jenkins 방법론, 지수 평활법 또는 상태 공간 모델(state space model) 기반
  • Deep AR
    • 몇 개의 시계열이 아닌 가정별 전력 소비 예측, 데이터센터 서버 부하 예측 등 수천개~수백만개의 관련 시계열을 예측해야함 ⇒ autoregressive recurrent network 기반의 예측 방법인 DeepAR 제안
  • 기존의 예측 방법

    • ARIMA, Exponential smoothing

      ✓ Exponential smoothing

      • 최근 데이터에 더 큰 가중치를 주는 방법
    • 한계

      • 수요 예측 매우 불규칙적이고, 간헐적이며, 갑자기 급증하는 데이터 多

        → 전통적 모델의 핵심 가정을 깨뜨림

      • 데이터 전처리 방법도 위 문제를 충분히 해결하기 어려움

        ⇒ 분포: zero-inflated Poisson, negative binomial

      • 여러 시계열간 정보를 공유하면 예측 정확도를 향상시킬 수 있으나 구현의 어려움

        (각 시계열이 매우 이질적이기 때문)

        ⇒ matrix factorization, Bayesian Hierarchical models

  • RNN
    • 예측 분야는 아니지만 nlp, audio 등 다양한 분야에서 성
  • DeepAR의 설계
    • 확률 예측에서는 단일값이 아닌 전체 확률 분포에 관심이 있음
    • count data의 정확한 분포를 얻기 위해서 Negative Binomial likelihood 사용

3. Model

  • 모델링 목표
    • 시계열 i의 시간 t에서의 값을 zi,tz_{i,t}라고 할 때, P(미래값 | 과거값, 외생변수) 조건부 확률 분포 모델링 !image.png
      • 각 시계열의 미래 값: zi,t0:Tz_{i,t_0:T} ⇒ prediction range(모델이 예측해야 하는 구간)
      • 과거값: zi,1:t01z_{i,1:t_0-1} ⇒ conditioning range (모델이 조건으로 사용하는 구간) → t0t_0는 예측 시점에서 값이 알려지지 않은 시점의 시작점 의미 → Xi,1:TX_{i,1:T}: 모든 시점에서 알려져있다고 가정되는 외생 변수(conditioning, prediction 모두 주어짐)
  • 학습
    • conditioning range와 prediction range 모두 과거에 위치해야 함 → zi,tz_{i,t} 값 모두 관측 but, 예측 단계에서는 conditioning range에서만 관측!
    • t는 상대적인 값 → t=1은 시계열 i마다 서로 다른 실제 시간을 가질 수 있음

  • Model distribution을 likelihood의 곱으로 분해 가능하다고 가정

  • Q의 분포에 대해 t_0부터 T시점까지 하나씩 보면 곱으로 보고 최종적으로 p라는 분포를 통해 계산 가 ⇒ chain rule
  • Prediction process
    • hi,th_{i,t}에 conditioning range의 t를 순차적으로 대입하여 hi,t01h_{i,t_0-1}을 구함
    • prediction range의 t에 대해 틸다 zi,tz_{i,t}를 sampling
    • smapling을 통해 예측을 진행하므로 quantile 정보 예측 가능

3.1 Likelihood model

  • 데이터의 노이즈 모델 결정하고, 데이터의 통계적 특성에 맞게 선택되어야 함

    • Deep AR은 예측값을 직접 출력하지 않음 → likelihood(확률분포) 출력
  • 신경망이 다음 시정의 확률 분포의 모든 파라미터(ex. 평균과 분산)를 직접 예측함

  • 사용하는 likelihood 2가지

    • 실수 데이터 → 가우시안

      • 가우시안
      • Distribution Parameter
    • 양의 정수 데이터 → negative binomial likelihood

      • negative binomial likelihood
        • 판매 데이터 특징상 variance > mean
        • 포아송은 var = mean이므로 사용하기 부적합하고
          negative binomial은 Var = μ + μ²α로 더 유연함
        • 분산이 mean보다 클 수 있다는 특징을 잘 표현 - retail demand
    • beta distribution, bernoulli, mixture distributions 와 같은 다른 likelihood 모델도 쉽게 사용 가능

      단, 해당 분포에서 샘플링이 쉽고, log-likelihood 와 그 gradient를 계산할 수 있어야 함

3.2 Training

  • 시계열 데이터셋 {zi,1:Tz_{i,1:T}}i=1,...,N_{i=1,...,N} 과 covariates xi,1:Tx_{i,1:T}가 주어졌다고 하면 모델 파라미터는 log-likelihood를 최대화하는 방식으로 학습

    • 어떤 확률분포 p에서 hi,th_{i,t}라는 특정 파라미터가 주어졌을 때 zi,tz_{i,t}가 나올 확률이 가장 높도록 학습
    • 세타에 대한 학습을 할 것 이기 때문에 세타에 대한 stochastic gradient descent를 통해 학습 진행 ⇒ 모델이 예측한 분포에서 실제 값이 얼마나 가능성이 높은지
  • DeepAR은

    • latent variable inference 필요없음 → direct likelihood optimiztion 이므로!

    • training window sampling → data augmentation 가능

      • window1 → 2013 start
      • window2 → 2013+1 start
      • window3 → 2013+2 start
  • training 과 predition의 mismatch한 문제가 있긴 하지만 큰 문제는 안 됨

3.3 Scale handling

  • power-law 규모 분포를 가진 데이터에 모델을 적용하면 2가지 문제 발생
  • 문제1
    • autoregressive 구조 때문에 입력 zi,t1z_{i,t-1}과 네트워크 출력 모두 관측값에 비례해 스케일이 커짐

    • 신경망의 비선형 함수들의 작동 범위가 제한적이라 gradient 문제 발생

      → 추가적 조치가 없다면 (P) 입력을 적절한 범위로 스케일링 하는 방법을 학습해야함

      ⇒ (S) 아이템별 scale factor vi로 나누어 해결

      (각 아이템별로 고유한 특성이 있을 것이기 때문)

      µ = νi * softplus(oµ)

      → 네트워크 output을 scaled parameter로 하는 데에 중요

      → 평균값을 scale factor로 사용하는 방법 잘 작동

  • 문제2
    • 데이터 불균형으로 인해 큰 scale 시계열이 학습에서 거의 선택되지 않을 수 있음 → weigthed sampling을 통해 scale이 큰 아이템을 더 자주 학습함

3.4 Features

  • covariate xi,tx_{i,t}는 item feature(product categroy, brand, size), time feature(weekday, month, holiday) 모두 가능
  • 모든 실험에서 age feature 사용
    • age = 현재 시점 - 시계열 시작 시점 → new item behaviour 학습 가능
  • categorical item feature 사용, 모델은 embedding 학습
  • 모든 covariates는 평균 0, 분산 1로 정규화

4. Applications and Experiments

  • 실험 환경

    • Framework: MXNet

    • Machine: AWS p2.xlarge

      • CPU 4개
      • GPU 1개
  • 성과

    • 500,000개의 시계열을 학습하는데 10시간 이하 → 매우 큰 데이터에서도 학습 가능하다
  • 사용 데이터셋

    • parts(자동차 부품 판매량/1046개의 시계열, 50 time steps)

    • electricity(전력 사용량/370 households, 시간 단위)

    • traffic(도로 점유율/963 freeway lanes, 시간 단위)

      → 전력과 도로 점유율은 rolling window forecast 방식 사용

      ✓ rolling window forecast

      • rolling window
        • 여러 시점에서 반복 평가
        • 모델을 다시 학습하지 않음 - 한 번 학습된 모델로 여러 forecast 수행

      ✓ ec(아마존 판매 데이터), ec-sub(아마존 판매 데이터 subset)

      • time series가 매우 다양 - slow moving item, fast moving item

        즉, 판매량 scale 차이가 매우 큼

      • 새 상품의 경우 history가 거의 없다는 문제 → cold start problem

  • DeepAR의 경우 global model로 모든 시계열을 같이 학습하기 때문에 패턴 공유 가능

    → probabilistic forecasting(불확실성 모델링)

    → scale normalization(power-law 문제 해결)

4.1 Accuracy comparsion

  • parts와 ec/ec-sub 데이터셋에서 baseline 모델 비교

  • baseline 모델

    • Croston - 간헐적 수요 예측을 위해 개발된 방법

    • ETS - Error Trend Seasonality 대표적인 Classical forecasting 모델

    • Snyder - Negative Binomial 기반 autoregressive 모델

    • ISSM - covariates를 사용하는 state space model


      [RNN기반] ← DeepAR의 구성요소가 실제로 중요한지 검증 목적

    • RNN-Gaussian

      • DeepAR과 동일한 구조 but 가우시안 분포 사용
    • RNN-negbin ← DeepAR의 design 요소 검증 목적

      • negative binomial 분포 사용
      • scale normalization, weighted smapling 사용 x
  • 평가지표: p-risk metric (quantile loss) ← parts, ec, ec-sub

    • prediction range의 특정 구간인 L,L+S)를 지정하고 평가
    • eletricity와 traffic은 ND와 RMSE로 평가

4.2 Quantile analysis

  • ISSM 모델은 uncertainty가 선형적으로 증가한다고 가정하지만
    DeepAR은 uncertainty 증가 패턴을 데이터로부터 학습
    → 시간이 지날수록 uncertainty가 증가한다는 패턴 학습
    - uncertainty는 4분기(Q4)에 증가하고 이후 다시 감소 - retail의 특징 (수요변동성 증가)

  • ISSM모델과 비교했을 때 DeepAR이 calibration이 전반적으로 good

  • shuffled forecast calibration 곡선

    • 예측 샘플을 시간 순서 없이 섞음으로써 시간 간의 상관관계 제거

    • 짧은 구간에서는 큰 차이가 없지만 긴 예측 구간에서는 상관관계를 제거하면 calibration이 더 나빠짐

      → 모델이 시간 간 중요한 상관관계를 잘 학습하고 있음을 알 수 있음


5. Conclusion

  • DeepAR모델은
    • 여러 시계열로부터 global model을 학습하고
    • rescaling과 velocity 기반 smapling으로 다양한 규모를 처리한다
    • calibrated probabilistic forecast를 생성하고
    • 데이터로부터 seasonality와 uncertainty 증가 패턴 학습
  • 또한 다양한 데이터셋에서 하이퍼파라미터 튜닝을 거의 하지않더라도 잘 작동함
  • 몇 백개정도의 중간 규모의 데이터셋에서도 good

0개의 댓글