딥러닝 모델/LSTM for Traffic Prediction

RNN: 시간의 흐름을 기억하며 미래를 예측하는 모델

gksyb4235 2025. 9. 30. 16:18

RNN 모델


RNN은 연속된 시계열(sequence) 데이터를 처리하기 위한 신경망이다.

 

사람은 문장을 이해할 때 앞에 나온 단어들을 기억하고, 그 맥락을 바탕으로 다음 단어를 해석한다.

 

기존의 MLP(Feed Forward Neural Network)는 입력 간 순서를 고려하지 않지만, RNN은 시퀀스 데이터의 시간적 흐름을 다루며,
내부에 정보를 지속하는(과거의 정보를 기억하는) loop로 구성된 신경망이다.

 

 

 

방금 RNN의 그림을 가로로 세우면 다음과 같다.

 

 
RNN은 x1부터 xt까지, 매 시점(time step)마다 새로운 입력을 받으며 동작한다.

 

RNN은 입력의 길이만큼 신경망이 펼쳐지며(unrolled), 입력받는 각 순간을 시점(time step)이라고 한다.
(이때 t시점의 입력을 xt라고 한다)
이런 상황에서 RNN의 입력과 출력을 모두 벡터 단위로 가정해보자.
FFNN을 통해 RNN을 표현하면 다음과 같다.
 

 

 

 

즉 x1에 해당하는 input 노드와 y1에 해당하는 output 노드가 사실은 벡터의 형태였던 것이다.

 


 

RNN은 설계하기 나름이지만 아래와 같은 유형이 있다.

 

 

자연어 처리에서 각 time step의 입력은 주로 단어 벡터가 된다.

아래 그림의 회색 네모를 단어 하나(Token 하나)라고 보면 된다.

자연어 처리에서는 일반적으로 many-to-one이나 many-to-many를 사용한다.
(one-to-many
image까지 들어갈 수 있음)

 


 

RNN의 가장 기본적인 아키텍처는 다음과 같다.

 

자료 - 딥러닝·인공지능 Signature 초격차 패키지 Online.


FFNN와 같은 MLP와 RNN의 차이는 오직 빨간색 부분의 신경망에 있다.
RNN의 ht-1 부분을 날리면 사실상 기존의 MLP와 동일하다.

 

은닉층에 있는 RNN의 처리 단위를 cell이라 부르며, 셀의 출력을 은닉 상태 (hidden state)라고 한다.

 

자료 - 딥러닝·인공지능 Signature 초격차 패키지 Online.

 

은닉층의 단위를 ‘노드(node)’가 아닌 ‘셀(cell)’이라 부르는 이유는, 한 셀 안에 여러 연산 노드가 포함되어 있기 때문이다.
RNN은 time step에 따라서 입력을 받는데, 현재 시점의 hidden state인 ht 연산을 위해,
직전 시점의 hidden state인 ht-1을 입력받는다.


이것이 RNN이 과거의 정보를 기억하는 비결이다.

 


 

이때 사용하는 하이퍼볼릭 탄젠트 함수는 시그모이드(0~1)과 달리 (-1~1)의 범위로 값을 반환하는 함수다.
반환값의 범위가 시그모이드보다 크므로 일반적으로 은닉층에서는 sigmoid 함수보다 더 잘 동작한다.
아래의 2개 그림이 인터넷에서 자주 사용되는 RNN 그림인데 둘을 혼동할 수 있다.
 
 
하나는 입력층과 은닉층만을 그린 그림이고, 다른 하나는 출력층까지 포함한 그림이다.
 

그런데 RNN은 time step이 길어지면서 앞의 정보가 소실되는 장기 의존성 문제를 가진다.
 
기존 RNN(Vanilla RNN)의 장기 의존성 문제를 개선하여 기억력을 높인 RNN의 변형이 바로 LSTMGRU이다.