N-BEATS는 RNN과 달리 값 자체가 아닌 수식의 Parameter를 예측하도록 만들어진, 시계열 데이터 예측에 사용하기 위해 새로 제안된 모델이다.
시계열 데이터는 추세 (trend), 계절성 (seasonality), 잔차 (residual)로 구분할 수 있고, 이러한 형태로 분리하는 것을 시계열 분해라고 한다.
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)의 사전적 의미는 어떤 방향으로 쏠리는 현상을 의미한다. 즉 트랜드는 시간이 지남에 따라 서서히 단조증가 또는 단조감소와 같은 현상을 보여야한다. 그래서 trend stack안에 있는 block들은 함수를 사용한다. 는 입력 값의 time index이고, 가 최종 예측값이 된다. 이 때 와 가 모델이 FC layer를 통해 예측하는 값이 된다.
Seasonality stack의 block들은 함수로 Fourier series를 사용한다.
과 이 FC layer가 예측하는 값이 된다.
Residual Block들은 함수로 FC layer를 사용하며 FC layer의 예측값이 그대로 y값으로 사용되게 된다.