LSTM이란?
RNN(Recurrent Neural Network)의 단점을 보완하여 장기 의존성 문제를 해결한 딥러닝 모델로 주로 자연어 처리(NLP), 시계열 분석, 제스처 인식 등에 사용된다.
RNN이란?
- 순차 데이터(시계열 데이터)를 처리하는 신경망
- 이전 상태(hidden state)를 다음 단계로 전달하는 방식
- 자연어 처리, 음성 인식 등에 활용
RNN의 문제점: 장기 의존성 문제(Vanishing Gradient)
- 과거의 정보를 오래 유지하기 어려움 → 긴 문장이나 긴 시계열 데이터를 학습하기 어려움
- 역전파 과정에서 기울기(gradient)가 사라지는 문제 발생
이 해결책으로 LSTM이 등장했다
LSTM의 구조
입력 게이트, 망각 게이트, 출력 게이트를 활용하여 정보를 조절한다.
게이트 | 역할 |
Input Gate (입력 게이트) | 새로운 정보 저장 |
Cell State (셀 상태) | 장기 기억 저장 |
Output Gate (출력 게이트) | 다음 hidden state 생성 |
Forget Gate (망각 게이트) | 불필요한 정보 제거 |
- Forget Gate: 과거 정보 중 불필요한 것 삭제
- Input Gate: 새로운 정보 저장
- Cell State: 중요한 정보 유지
- 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의 활용사례
- 자연어 처리(NLP) : 문장 생성, 번역, 감성 분석
- 주가 예측 : 시계열 데이터 분석
- 의료 데이터 분석 : 심전도(ECG) 예측
- 제스처 인식 : LSTM 기반 손동작 인식
'인공지능 > 인공지능' 카테고리의 다른 글
AI 프로젝트 (0) | 2025.03.24 |
---|---|
배열과 행렬의 원소 선택하기 (0) | 2024.08.19 |
희소 행렬(Sparse Matrix) 생성 및 변환 (0) | 2024.08.18 |
다양한 행렬 생성 및 초기화 방법 (0) | 2024.08.18 |