카테고리 없음

Sequence Modeling(RNN, LSTM, GRU)

hu-nie 2024. 11. 10. 14:31

RNN(recurrent neural network)

  • RNN(Recurrent Neural Network)은 시계열 데이터를 처리하기 위해 고안된 모델로 아래 그림에서와 같이 이전 시각(계층)의 출력 값(은닉 값)이 다음 시각(계층)으로 전파되어 즉, 과거 정보를 계승하여 시계열 데이터에 대응하는 신경망입니다.

RNN의 문제점

  • 장기 의존성 문제
    • RNN의 은닉층에서 과거의 정보와 현재의 input이 합쳐지면서 진행되는데 이때 과거의 정보가 마지막까지 전달 되지 않는 문제를 장기 의존성 문제라고 합니다.
    • 아래의 수식처럼 현재의 입력과 과거의 정보를 더해 활성화 함수 탄젠트를 취해주는데, 함수는 값이 -1에서 1사이에 위치하게 됩니다.
    • 문제는 역전파를 통한 가중치 업데이트 과정에서 반복적으로 기울기에 곱해지 보면 점점 작아지는 기울기 소실, 점점 커지는 기울기 폭발 문제가 발생합니다.
      • 탄젠트 함수의 도함수는 값이 주로 1보다 작기 때문

RNN의 기울기 소실 문제의 해결

  • 기존의 RNN에서 발생하는 기울기 소실 문제를 해결하기 위해 등장한 것이 '게이트가 추가된 RNN'이며 대표적으로 LSTM(Long Short-Term Memory model)과 GRU(Gated Recurrent Unit)이 있으며, 해당 모델에 관한 포스팅은 다음에 마저 진행하도록 하겠습니다.

LSTM(Long Short-Term Memory model)

  • 장기 의존성 문제를 해결하기 위해 이전 정보를 오랫동안 기억할 수 있는 메모리셀을 보유하고 있으며, 이를 통해 긴 시퀀스 데이터 처리가 가능하다.
  • LSTM은 기본적으로 셀과 게이트로 구성됩니다.
    • 셀은 시퀀스데이터를 저장하고, 게이트는 셀의 상태를 조작합니다.
    • 게이트는 입력게이트, 망각 게이트, 출력게이트로 이루어진다.

Cell State

  • 이전 상태에서 현재 상태까지 유지되는 정보의 흐름을 나타내며, 이를 통해 LSTM은 오래된 정보를 기억하고 새로운 정보를 갱신이 가능합니다.

Forget gate

  • 이전 셀 상태의 정보에 대해서 유지할지 삭제할지에 대해 관장하는 게이트입니다.

  • 위의 수식과 같이 이전 은닉 값과 현재 입력이 합해지고 시그모이드의 결과에 따라 나온 값인 f_t 는 0~1 사이의 값으로 이를 통해 셀에 곱해져서 정보의 삭제 여부를 결정합니다.

Input gate

 

 

  • 새로운 정보에 대한 반영 여부에 대해 관장 게이트입니다.
  • 해당 게이트에는 시그모이드 함수와 탄젠트 함수가 존재하며, 시그모이드 함수는 새로운 정보를 얼마나 셀상태에 반영할지를 결정하며, 탄젠트 함수는 RNN과 동일한 출력 계산 원리이며 새로운 정보의 상태를 결정합니다.
  • 최종적으로 두값을 곱해서 셀 상태에 더하면 최종적으로 다음 단계에 보내는 셀이 됩니다.

Output gate

  • 셀 상태에서 어떤 정보를 은닉 상태(hidden state)로 내보낼지 결정하는 역할
  • 현재 입력과 이전 은닉 상태를 결합하여 시그모이드를 통해 출력을 결정
  • 이는 얼마나 많은 정보를 은직 상태로 출력할지 결정합니다.
  • 마지막으로 tanh 함수는 셀 상태에서 출력될 값을 압축하고, 출력게이트에서 결정된 현재+ 이전 은닉의 정보와 곱해 최종 은닉상태를 만듭니다.

GRU

  • LSTM 보단 단순하지만 RNN의 장기 의존성 문제를 해결한 모델
  • LSTM과 다르게 두개의 게이트를 가지며, 셀 상태를 사용하지 않고 은닉 상태만 사용

Reset gate

  • 현재 상태에서 얼마나 이전 상태의 정보를 유지할지 결정
  • 현재 입력값과 이전 은닉상태를 더해 시그모이드 함수를 취해 정보를 얼마나 반영할지 결정

Update gate

  • 현재 상태를 얼마나 이전 상태에 반영할지를 결정
  • 리셋 게이트와 수식 동일 (가중치만 다름)

후보 은닉 상태 및 최종 은닉상태

  • 후보 은닉 상태는 이전 은닉 상태와 현재 입력을 통해 계산
  • 리셋 게이트에서 이전 은닉 상태의 정보를 어느정도 사용할지 계산한 값이 곱해짐
  • 최종적으로 tanh 함수를 통해 새로운 정보로써 최종 은닉에 반영될 준비가 됨

  • 최종 은닉 상태는 업데이트 게이트z_t에 의해 결정
  • 1-z_t는 새로운 정보를 얼마나 반영할지 결정하고 후보 은닉 상태와 곱해짐
  • 또한, 이전 은닉상태와 업데이트 게이트 출력 값z_t과 곱해져 이전 상태를 결정
  • 두 값이 더해져 최종 은닉 상태가 생성

후보 은닉은 새로 생성된 정보이며, 업데이트 게이트는 이전 은닉 상태와 새로운 후보 은닉상태를 어떻게 조합할지 결정합니다.

LSTM VS GRU

  • LSTM을 사용하는 경우: 데이터의 장기 의존성이 중요한 문제, 예를 들어 긴 문맥을 처리해야 하는 NLP 작업, 장기 기억이 중요한 시계열 분석 등에서 사용됩니다.
  • GRU를 사용하는 경우: 모델이 더 간단한 구조빠른 학습 속도가 필요할 때 적합합니다. 상대적으로 짧은 시퀀스나 실시간 처리가 중요한 문제에서는 GRU가 더 나은 선택일 수 있습니다.

참고 

1. 촌촌's 기록

 

[순환신경망] RNN의 문제점 (기울기 소실, 기울기 폭주 = Gradient Vanishing & Exploding)

본 포스팅은 "밑바닥부터 시작하는 딥러닝2" 도서로 공부한 내용을 요약하기 위한 포스팅입니다. RNN이란 ? RNN(Recurrent Neural Network)은 시계열 데이터를 처리하기 위해 고안된 모델로 아래 그림에서

chonchony.tistory.com

2. DEVELOPER

 

LSTM(Long short time memory) : 기초 이해

LSTM(Long Short-Term Memory)은 시계열 데이터의 예측, 자연어 처리, 음성 인식, 이미지 분류 등에서 중요한 역할을 하는 모델 중 하나입니다. 이 글에서는 LSTM의 개념, 동작 원리 등에 대해 상세히 알아

ctkim.tistory.com

3. DEVELOPER

 

GRU(Gated Recurrent Unit) : 기초 이해

1. GRU란? GRU(Gated Recurrent Unit)는 순차 데이터를 처리하는 데 사용되는 모델입니다. GRU는 Reset Gate, Update Gate라는 두 개의 게이트를 사용하여 작동합니다. ResetGate(리셋 게이트)는 이전 상태를 얼마나

ctkim.tistory.com