Data Science/자연어 처리

RNN(순환 신경망)과 LSTM

Boxya 2025. 4. 11. 21:45

[KT] AIVLE SCHOOL 13일차

 

Sequential Data : (시간) 순서가 있는 데이터

RNN(Recurrent Neural Networks)

  • RNN의 핵심은 '기억' : 이전까지의 정보를 순환(Loop) 하면서 계속 유지

  • RNN은 일반적인 신경망과 달리 출력을 다시 입력으로 넣어주는 구조
  • 한 문장이 들어오는 과정
    • 예를 들어 "나는 밥을 많이 먹었다" 라는 문장을 RNN에 넣는다고 가정
    • "나는" --> 첫 번째 RNN 셀로 입력
    • RNN은 "나는"을 처리하고 출력(hidden state)을 생성
    • 이 출력을 다음 단어 "밥을"과 함께 다음 RNN 셀로 전달
    • 다시 "밥을"을 처리하고 새로운 출력(hidden state) 생성
    • 이런 식으로 마지막 단어까지 반복
  • 핵심 개념
    • Hidden State (숨겨진 상태)
      • 현재까지의 정보를 축적해서 다음 셀로 넘기는 역할
    • Weight Sharing (가중치 공유)
      • 모든 단어를 처리할 때 같은 가중치(W)를 사용해서 계산
  • 과거의 정보를 현재에 반영해 학습하도록 설계
  • RNN 장점
    • 순차 데이터(텍스트, 음성, 영상 등)에 강함
    • 과저 정보를 기억하면서 처리 가능
  • 한계점
    • 긴 문장에서는 기억력이 약함 : 기억 소실(Vnishing Gradient) 문제 발생
    • 단기 기억 문제 -> 멀리 있는 단어 정보를 잘 활용 못함
    • 이 문제를 해결하기 위해 LSTM, GRU 같은 개선된 RNN 모델이 나옴
  • RNN 모델링 절차
    • 모델링을 위한 전처리
      1. 데이터 분할 1 : x, y
      2. 스케일링
        • X 스케일링은 필수, Y 값이 크다면 최적화를 위해 스케일링 필요 --> 단, 모델 평가 시 원래 값으로 복원
      3. 3차원 데이터셋 만들기
        • 2차원 데이터셋(X) --> timesteps 단위로 잘라서(한 칸씩 밀면서, sliding window) 3차원 구조 생성
      4. 데이터 분할 2 : train, val
  • 모델 구조와 데이터 흐름
    • 단일 RNN Layer(num layers = 1), 단일 노드(hidden size = 1)
    • 단일 RNN Layer(num layers = 1), 복수의 노드(hidden size = 2)
    • 멀티 RNN Layer(num layers = 2), 복수의 노드(hidden size = 2)
  • 마지막 Hidden State
    • RNN Layer의 출력 값의 가장 마지막 hidden state만 dense layer로 전달
  • RNN의 활성화함수 : tanh(hyperbolic tangent)
    • 하이퍼볼릭 탄젠트 함수
    • 그래디언트 소실 문제(vanishing gradient problem)
      • 역전파 시에 gradient가 작아져 학습이 어려워지는 현상
      • RNN에서는 긴 시쿼스를 처리할 때 발생
      • tanh 함수 --> gradient 소실 문제 완화
        • 시그모이드에 비해 gradient를 좀 더 크게 유지

LSTM(Long Short-Term Memory)

  • RNN의 장기 의존성(long-term dependencies) 문제
    • 긴 기간 동안의 정보를 유지하고 활용하는 데 어려움 발생
    • LSTM은 RNN보다 더 긴 문맥을 학습 가능
    • LSTM 구조 : time step 간에 두 종류의 상태 값 업데이트 관리
      • Cell State 업데이트 : 긴 시퀀스 동안 정보를 보존하기 위한 상태 값이 추가됨
        • 불필요한 과거는 잊어라 (Forget Gate)
        • 현재 정보 중 중요한 것은 기억하라 (Input Gate)
        • Input Gate와 Forget Gate을 결합해서 장기 기억 메모리에 태워라 (cell state 업데이트)
      • Hidden State 업데이트  
        • [업데이트된 Cell State]와 [input, 이전 셀의 hidden state]으로
        •  새 hidden state 값 생성해서 넘기기

 

Bidirectional RNN

  • 양방향 RNN
    • 순방향(forward) RNN : 기존 RNN처럼, 과거 -> 현재 방향으로 정보 전달
    • 역방향(backward) RNN : 현재 -> 과거 방향으로도 정보를 학습
  • 장점
    • 양방향 정보 활용 : 과거와 미래 정보를 동시에 고려해 성능 향상
    • 텍스트, 음성, 시계열 데이터에서 효과적 (e.g. 번역, 음석 인식, 주가 예측 등)
  • 단점
    • 계산량이 2배 증가 : 순방향 + 역방향 RNN이 필요
    • 실시간 데이터에는 적용하기 어려움 : 미래 정보를 활용해야 하므로 실시간 예측에는 부적합

 

 

 

 

 

'Data Science > 자연어 처리' 카테고리의 다른 글

RNN LM  (0) 2025.04.11
임베딩 벡터  (0) 2025.04.11
토큰화와 형태소 분석  (2) 2025.04.10
자연어 처리  (2) 2025.04.10