Company
교육 철학

RNN으로 시간 데이터 학습

핵심 용어 설명

1. RNN (Recurrent Neural Network, 순환 신경망)

RNN'기억력'을 가진 신경망으로, 시계열 데이터를 다루는 데 특화된 모델입니다.
시계열 데이터 (Time-series Data): 주식 가격, 날씨 변화, 문장처럼 시간 순서에 따라 의미가 달라지는 데이터를 말합니다. 어제의 주가가 오늘의 주가에 영향을 주는 것처럼 순서가 매우 중요하죠.
가중치 반복 사용 (Recurrent): RNN은 이 순서를 어떻게 기억할까요? 바로 이전 단계의 정보를 현재 단계의 입력으로 다시 사용하는 방식을 씁니다. 마치 우리가 책을 읽을 때 앞 단어들을 기억하며 다음 단어의 의미를 파악하는 것과 같아요. 이 '기억' 역할을 하는 가중치를 계속해서 반복 사용하기 때문에 '순환' 신경망이라고 부릅니다.

2. 최대-최소 정규화 (Min-Max Normalization)

최대-최소 정규화는 흩어져 있는 데이터의 단위를 통일시켜주는 '데이터 스케일링' 기법 중 하나입니다.
작동 방식: 데이터셋에서 가장 작은 값(최솟값)은 0으로, 가장 큰 값(최댓값)은 1로 만들고, 나머지 값들은 그 사이의 값으로 비례하게 변환합니다.
왜 필요한가요?: 만약 주가 데이터와 거래량 데이터를 함께 사용한다고 상상해보세요. 주가는 수만 원 단위인데 거래량은 수억 단위라면, 단위가 큰 거래량 데이터가 학습에 훨씬 큰 영향을 미치게 됩니다. 최대-최소 정규화는 이런 데이터들을 모두 0과 1 사이의 동일한 범위로 맞춰주어, 모델이 각 데이터의 중요도를 공평하게 학습하도록 돕습니다. 학습이 훨씬 안정적이고 빨라지는 효과가 있죠.

RNN

지금까지 우리는 순서가 없는 데이터를 다뤘습니다. 모델에 행렬 하나만 입력하면 충분했죠. 하지만 데이터에 순서가 있다면 어떨까요? 순서를 무시하고 데이터 전체를 한 번에 넣으면 제대로 학습될까요? 정답은 '아니오'입니다. 이미지를 MLP로 학습했을 때 특징 위치가 변하면 성능이 급락했던 것처럼, 시계열 데이터도 마찬가지입니다. 순서가 조금만 바뀌어도 모델 성능에 악영향을 미칩니다. 그렇다면 데이터 순서로부터 특징을 추출하려면 어떻게 해야 할까요? 시계열 데이터를 다루는 방법은 의외로 간단합니다. 데이터를 순서대로 입력하면 됩니다. 문제는 모델 구조입니다.
모델이 과거 정보와 현재 정보를 모두 가지려면, 이전 출력을 다시 입력으로 넣어야 합니다. 이렇게 출력을 다시 입력으로 넣는 것을 순환한다(되풀이된다)recurrent라고 부르며, 이러한 구조를 가진 신경망을 RNN(recurrent neural network)이라고 합니다. RNN 구조를 그림으로 살펴보겠습니다.
RNN의 가장 중요한 특징은 은닉 상태(hidden state) 입니다.
RNN은 입력층에서 들어온 데이터와 이전 시점의 은닉 상태를 함께 사용해 새로운 출력을 만들어냅니다.
즉, 현재의 출력은 단순히 현재 입력뿐 아니라 과거의 정보에도 영향을 받습니다.
RNN 에서 신경망 각 층은 한 시점(cell)을 가리킥 있습니다. 모든 시점에서의 가중치는 전부 공유 되고 있습니다. 모든 시점에서의 출력은 다음 시점의 입력값과 합쳐져 가중치가 적용 되고, 최종 출력값을 출력으로 하며, 출력층 이전의 출력을 은닉(hidden state)상태 라고 부릅니다. 단, 입력층은 모델 시작이므로 이전의 은닉상태가 존재하지 않습니다. 이때는 우리가 임의로 랜덤하게 값을 생성해주면 됩니다. 이렇게 설계된 모델은 과거의 계산 정보와 현재의 입력을 모두 고려한 모델이 되므로 순서가 있는 시계열 데이터를 처리하는데 적합합니다.
이 구조는 다음과 같은 수식으로 표현됩니다. ht=f(Wxt+Uht1+b)hₜ = f(Wxₜ + Uhₜ₋₁ + b) 여기서
xtxₜ : 현재 시점의 입력
ht1hₜ₋₁ : 이전 시점의 은닉 상태
hthₜ : 현재 시점의 새로운 은닉 상태
은닉 상태는 RNN의 기억(memory) 역할을 하며, 문장·음성·시계열 데이터처럼 ‘순서가 중요한 데이터’를 이해하는 데 핵심적인 역할을 합니다.
가중치의 반복 — 시간에 따른 학습
RNN은 각 시점에서 동일한 가중치(Weight) 를 반복적으로 사용합니다. 이는 “시간에 따라 같은 연산을 수행한다”는 의미로, RNN이 시간적으로 일관된 패턴을 학습하도록 돕습니다. 예를 들어 문장 “나는 오늘 학교에 갔다”에서 “나는”을 처리할 때 얻은 은닉 상태가 “오늘”이라는 단어를 이해하는 데 영향을 줍니다. 이러한 반복 구조 덕분에 RNN은 문맥과 시간의 흐름을 이해할 수 있습니다.
▼ RNN 장단점 및 활용 분야
구분
내용
장점
• 이전 정보를 현재 시점에서 이용하기 때문에 시간에 대한 정보를 추출할 수 있습니다. • 같은 가중치를 반복 사용하기 때문에 가중치 수가 비교적 적습니다.
단점
• 같은 가중치를 여러 번 반복 사용하기 때문에 계산에 시간이 오래 걸립니다. 시계열이 길어질수록 앞의 정보가 점점 흐려집니다.
유용한 곳
주가, 날씨, 텍스트 등 순서가 있는 데이터를 다룰 때 용이합니다. • 동영상의 각 프레임 특징을 추출할 때, 합성곱 연산과 함께 반복 호출할 수 있습니다.