Sequence Modeling(RNN, LSTM, GRU)

2024. 11. 10. 14:31· 카테고리 없음
목차
  1. RNN(recurrent neural network)
  2. RNN의 문제점
  3. RNN의 기울기 소실 문제의 해결
  4. LSTM(Long Short-Term Memory model)
  5. Cell State
  6. Forget gate
  7. Input gate
  8. Output gate
  9. GRU
  10. Reset gate
  11. Update gate
  12. 후보 은닉 상태 및 최종 은닉상태
  13. LSTM VS GRU
  14. 참고 

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

 

저작자표시 비영리 (새창열림)
  1. RNN(recurrent neural network)
  2. RNN의 문제점
  3. RNN의 기울기 소실 문제의 해결
  4. LSTM(Long Short-Term Memory model)
  5. Cell State
  6. Forget gate
  7. Input gate
  8. Output gate
  9. GRU
  10. Reset gate
  11. Update gate
  12. 후보 은닉 상태 및 최종 은닉상태
  13. LSTM VS GRU
  14. 참고 
hu-nie
hu-nie
잡다한거 정리해서 포스팅하는 블로그
hu-nie
내일을 위해
hu-nie
전체
오늘
어제
  • Contents (38)
    • CS (1)
      • Data Structure (0)
      • OS (1)
    • Language (8)
      • Python (5)
      • Coding Test (3)
    • Framework (1)
      • FastAPI (1)
    • Infra (2)
      • Docker (2)
      • k8s (0)
    • Project (1)
      • 짠내나는 쿠버네티스 서비스 구축기 (1)
    • Statistics (6)
      • ISLR 2nd Edition (4)
    • Review (5)
      • Seminar (2)
      • Paper (3)
    • 도메인 지식 (3)
      • DICOM (3)
    • 글또 (5)
    • etc (1)
    • TIL (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 통계적 학습
  • 글또8기
  • Brain MRA
  • 메디컬딥러닝
  • cudnn
  • 이상치 탐지
  • cuda toolkit
  • AnoGAN
  • Paper Review
  • greedy algorithm
  • DEVIEW 2019
  • ISLR
  • anomaly detection
  • Deep learning
  • coding test
  • Statistical Learning
  • Contanier
  • 완또하자
  • 코딩테스트
  • 다짐글
  • 글또 #글또7기 #
  • Algorithm
  • pydicom
  • 글또
  • Anatomicla Plane
  • 글또 7기
  • 통계학
  • Threshold segmentation algorithm
  • 딥러닝
  • codingtest

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
hu-nie
Sequence Modeling(RNN, LSTM, GRU)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.