N-BEATS

June·2022년 1월 16일
0
post-thumbnail

N-BEATS란?


N-BEATS는 RNN과 달리 값 자체가 아닌 수식의 Parameter를 예측하도록 만들어진, 시계열 데이터 예측에 사용하기 위해 새로 제안된 모델이다.

시계열 분해

시계열 데이터는 추세 (trend), 계절성 (seasonality), 잔차 (residual)로 구분할 수 있고, 이러한 형태로 분리하는 것을 시계열 분해라고 한다.

N-BEATS는 시계열 분해를 기반으로 최종 값을 예측하게 된다.

N-BEATS 구조

각 스텍은 위에서 부터 Trend stack, Seasonality stack, Residual stack으로 3개의 Stack을 사용한다.

각 Stack들은 여러 개의 block으로 이루어져 있으며, Trend stack의 block들은 Trend block, Seasonality stack에서는 Seasonality block, Residual stack에서는 Residual block 이라 부른다.
Trend block들은 입력된 데이터에서 추세(trend)를 추출하고 제거, Seasonality block들은 계절성(seasonality)를 추출하고 제거하고, Residual block은 둘을 제외한 나머지를 추출하게 된다.


각 Blokc들은 6개의 FC(Fully Connected layer)로 이루어져 있고 FC stack은 Linear layer - activation function의 반복을 4회 반복한다.
θθ를 만드는 FC는 backcast와 forecast 각각 2개 존재하며, θθ는 어떤 함수의 파라미터들이며, 함수에 θθ를 넣어 최종 값을 얻어내게 된다. (이 함수는 stack의 종류에 따라 달라지게 되며 마지막 Backcast 함수, Forecast 함수가 어떤 것이냐에 따라 Generic Basic Block, Seasonal Basic Block, Trend Basic Block으로 나뉘게 된다)

Trend Block & Trend Stack


트렌드(Trend)의 사전적 의미는 어떤 방향으로 쏠리는 현상을 의미한다. 즉 트랜드는 시간이 지남에 따라 서서히 단조증가 또는 단조감소와 같은 현상을 보여야한다. 그래서 trend stack안에 있는 block들은 y=at+by = at + b 함수를 사용한다. tt는 입력 값의 time index이고, yy가 최종 예측값이 된다. 이 때 aabb가 모델이 FC layer를 통해 예측하는 값이 된다.

Seasonal Block & Seasonal Stack

Seasonality stack의 block들은 함수로 Fourier series를 사용한다.

ana_nbnb_n이 FC layer가 예측하는 값이 된다.

Residual Block & Residual Stack


Residual Block들은 함수로 FC layer를 사용하며 FC layer의 예측값이 그대로 y값으로 사용되게 된다.

N-BEATS 과정

  1. Stack 안에 있는 block들을 통과할 때마다 기존에 입력된 데이터에 있던 정보들이 제거 된다.
  2. 이때 추출한 정보들을 모아서 미래 예측 값을 만들어 낸다.
  3. 추출한 정보는 stack의 이름에 맞춰 각각 trend, seasonal, residual의 형태가 되며,
    (함수 형태에 따라 정해진다.)
  4. 최종적으로 추출한 trend, seasonal, residual을 모두 합쳐 예측하게 된다.

참고자료

  1. 이어드림스쿨 RNN & N-BEATS 강의 들은후 강의자료 활용
  2. https://joungheekim.github.io/2020/09/09/paper-review/ ([논문리뷰]N-BEATS)
profile
회사와 “함께” 성장하는 개발자

0개의 댓글