Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

bonggyulim 님의 블로그

딥러닝 - RNN 본문

AI dev/Deep Learning

딥러닝 - RNN

bonggyulim 2026. 4. 7. 15:46

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