bonggyulim 님의 블로그
딥러닝 - RNN 본문
RNN 이란
RNN(Recurrent Neural Network)은 순서가 있는 데이터(Sequential Data) 를 처리하기 위해 만든 신경망이다.
일반적인 신경망은 입력 하나하나를 서로 독립적으로 처리하지만, RNN은 이전 입력의 정보까지 함께 반영할 수 있다.
그래서 RNN은 다음과 같은 문제에 자주 사용된다.
- 문장 데이터 처리
- 음성 인식
- 번역
- 주가 예측
- 센서 시계열 분석
- 행동 인식
하지만 RNN은 시퀀스가 길어질수록 오래된 정보를 잘 기억하지 못하는 한계가 있다.
이 한계를 보완한 구조가 LSTM(Long Short-Term Memory) 이다.
LSTM은 RNN처럼 순차 데이터를 처리하면서도,
중요한 정보는 오래 기억하고 불필요한 정보는 버릴 수 있도록 설계된 모델이다.

입력 시퀀스 → 이전 정보와 현재 입력 반영 → hidden state 갱신 → 반복 → 최종 출력
RNN의 동작 과정
1. 입력 시퀀스
RNN은 데이터를 한 번에 처리하지 않고,
시간 순서대로 하나씩 입력받는다.
예를 들어 시계열 데이터가 다음과 같다고 하자.
x1, x2, x3, x4
그러면 RNN은 다음과 같이 처리한다.
- x1 처리
- x2 처리 + 이전 정보 반영
- x3 처리 + 이전 정보 반영
- x4 처리 + 이전 정보 반영
2. Hidden State
RNN의 핵심은 Hidden State(은닉 상태) 다.
Hidden State는 쉽게 말하면 이전까지 입력된 정보의 요약본이다.
현재 시점에서는
- 현재 입력 x_t
- 이전 hidden state h_(t-1)
를 함께 사용해서 새로운 hidden state h_t를 만든다.
RNN 예제
import tensorflow as tf
from tensorflow.keras import models, layers
# 예시 데이터 shape: (batch, time_steps, features)
# 예: 시퀀스 길이 50, 특성 수 3
model = models.Sequential([
layers.SimpleRNN(32, input_shape=(50, 3)),
layers.Dense(3, activation='softmax')
])
# 모델 컴파일
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
model.summary()RNN에서 주의할 점
1) RNN은 보통 3차원의 입력을 받는다
- (batch, time_steps, features)
2) 순서가 중요한 데이터에 사용해야 한다
- 시계열 데이터를 다룰 때는 일반적인 표 데이터처럼 순서를 무작정 섞으면 안 된다.
3) 긴 시퀀스에서는 LSTM이나 GRU를 사용하는 것이 좋다
- LSTM: 중요한 정보를 더 오래 기억할 수 있도록 만든 구조
- GRU: LSTM보다 구조를 단순화한 모델
'AI dev > Deep Learning' 카테고리의 다른 글
| 딥러닝 - CNN (0) | 2026.04.07 |
|---|---|
| 딥러닝의 기본 개념 정리 (0) | 2026.04.06 |