본문 바로가기

인공지능/인공지능

LSTM

LSTM이란?

RNN(Recurrent Neural Network)의 단점을 보완하여 장기 의존성 문제를 해결한 딥러닝 모델로 주로 자연어 처리(NLP), 시계열 분석, 제스처 인식 등에 사용된다.

 

RNN이란?

  1. 순차 데이터(시계열 데이터)를 처리하는 신경망
  2. 이전 상태(hidden state)를 다음 단계로 전달하는 방식
  3. 자연어 처리, 음성 인식 등에 활용

RNN의 문제점: 장기 의존성 문제(Vanishing Gradient)

  1. 과거의 정보를 오래 유지하기 어려움 → 긴 문장이나 긴 시계열 데이터를 학습하기 어려움
  2. 역전파 과정에서 기울기(gradient)가 사라지는 문제 발생

이 해결책으로 LSTM이 등장했다


LSTM의 구조

입력 게이트, 망각 게이트, 출력 게이트를 활용하여 정보를 조절한다.

게이트 역할
Input Gate (입력 게이트) 새로운 정보 저장
Cell State (셀 상태) 장기 기억 저장
Output Gate (출력 게이트) 다음 hidden state 생성
Forget Gate (망각 게이트) 불필요한 정보 제거

 

  1. Forget Gate: 과거 정보 중 불필요한 것 삭제
  2. Input Gate: 새로운 정보 저장
  3. Cell State: 중요한 정보 유지
  4. Output Gate: 최종 출력 결정

LSTM 예제 코드(TensorFlow Keras)
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

#모델 생성
model = Sequential([
    LSTM(64, activation='tanh', input_shape=(10, 5)),  # (timesteps, features)
    Dense(32, activation='relu'),
    Dense(1, activation='sigmoid') #이진 분류
])

#모델 컴파일
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

#모델 구조 확인
model.summary()

 

LSTM(64) → 64개의 뉴런을 가진 LSTM 레이어
input_shape=(10, 5) → 10개의 타임스텝, 5개의 특성(feature)
Dense(32) → 완전 연결층 추가
Dense(1, activation='sigmoid') → 이진 분류 문제 해결


LSTM vs 일반 RNN

모델 특징 장점 단점
RNN 단순한 순환 신경망 구현이 간단함 장기 기억 유지 어려움
LSTM 게이트 구조 활용 장기 기억 가능 계산량이 많음

 

LSTM의 하이퍼파라미터 튜닝

LSTM 모델을 최적화하려면 하이퍼파라미터를 잘 조절해야 하는데

하이퍼파라미터의미추천값

 

하이퍼파라미터 의미 추천값
units LSTM 뉴런 개수 32 ~ 128
activation 활성화 함수 (tanh 추천) 'tanh'
dropout 과적합 방지 (0 ~ 1) 0.2 ~ 0.5
batch_size 한 번에 학습할 데이터 개수 32 ~ 64
epochs 학습 반복 횟수 50 ~ 200
optimizer 최적화 알고리즘 'adam' 

LSTM의 활용사례
  1. 자연어 처리(NLP)  : 문장 생성, 번역, 감성 분석
  2. 주가 예측  : 시계열 데이터 분석
  3. 의료 데이터 분석 : 심전도(ECG) 예측
  4. 제스처 인식 : LSTM 기반 손동작 인식