본문 바로가기
데이터 사이언스/딥러닝

RNN에는 들어가는 Data Input Shape

by 끙정 2021. 5. 24.
728x90

안녕하세요, 끙정입니다.

 

딥러닝은 Shape과의 싸움이라고 해도 과언이 아닙니다. 오늘은 RNN에는 Data Shape가 어떻게 들어가는지를 살펴보도록 하겠습니다. 어렵지 않습니다.

 

가정.

아래와 같이 날짜를 축으로 변수인 강수량, 일조량 그리고 타겟 값인 발전량이 있는 2차원 테이블이 있습니다. 일반적인 머신러닝 알고리즘을 사용한다면, 이 테이블 그대로 학습 시킵니다. 그러나 RNN은 여기서 시퀀스 축이 추가 됩니다.

 

RNN의 Input Shape.

시계열 예측을 위해서는 시퀀스 축(윈도우 사이즈 라고도 합니다.)을 만들어야 합니다. 시퀀스 축은 분석가가 결정하는 것으로, 얼마 동안의 기간을 학습해서 타겟 값을 예측할 것이냐를 물어보는 겁니다. 예를 들어 5일의 데이터를 통해서 6일째의 타겟 값을 예측한다면, 시퀀스는 5입니다. 즉 [t-5, t-4, t-3, t-2, t-1] 의 데이터를 통해  t 시점의 타겟 값을 예측하는 것입니다. 다음 시퀀스는 어떨까요? 다음 시퀀스는 하루씩 밀려나서 [t-4, t-3, t-2, t-1, t] 의 데이터를 통해  (t+1) 시점의 타겟 값을 예측하게 됩니다. 그렇게 한개의 시퀀스를 학습할 때마다 한 타임스탬프씩 밀려나는 것입니다. 그러한 각각의 시퀀스는 3차원으로 Concat됩니다.

 

즉, 아래와 같은 그림으로 나타낼 수 있습니다.

시퀀스의 길이가 3이기 때문에 높이는 3, 변수의 개수가 총 2개이기 때문에 너비는 2, 그리고 뒤로 시퀀스들이 이어집니다. 맨 앞에 있는 시퀀스는 [[0, 450], [0, 790], [75, 100]] 이라는 (3, 2) 크기의 데이터가 들어가 있습니다. 총 3개의 타임스탬프 [t - 3, t - 2, t - 1] 에 대한 X1, X2 의 값을 담고 있습니다. 그리고 타겟 값은 [t] 시점의 y 값인 30을 담고 있습니다. 

 

시퀀스의 총 개수는 쉽게 계산할 수 있습니다. 전체 데이터 수에서 시퀀스의 길이를 빼주면 됩니다. 그래서 아래와 같은 shape을 얻을 수 있습니다.

 

 

 

즉, 시간 순으로 정렬된 2차원 데이터 테이블을 RNN에 시간축을 기준으로 넣기 위해서는,

학습 기준인 시퀀스 길이를 정하고,

전체 데이터에서 시퀀스를 빼서 시퀀스 개수를 정하고,

(시퀀스 개수, 시퀀스 길이, 변수 개수) 의 3차원으로 넣어주면 됩니다.

 

 

728x90

'데이터 사이언스 > 딥러닝' 카테고리의 다른 글

GRU 구조 쉽게 이해하기  (0) 2021.05.28
LSTM 구조 쉽게 이해하기  (0) 2021.05.26
RNN 구조 쉽게 이해하기  (0) 2021.04.28

댓글