LSTM, GRU 간단 정리

2024. 10. 8. 21:10·DL/NLP

Simple RNN vs LSTM vs GRU

Vanilla RNN의 한계 : 장기 의존성 문제(The Problem of Long-term Dependency)

은닉층의 과거의 정보가 마지막까지 전달하지 못하는 현상을 의미한다.

"과학 선생님이 오늘 쪽지시험을 보았다. 쪽지시험에서 점수를 잘 받은 학생은 ?? 선생님이 칭찬해 주었다."
라는 문장이 있고, ??라는 단어를 예측하고자 한다. 문장 앞에서 과학 선생님이 쪽지시험을 냈다는 이야기가 있으니, ??는 '과학'이라고 알 수 있다. 하지만, 예측하고자 하는 단어와 근거가 되는 단어의 거리가 멀어진다면, RNN은 올바르게 문맥을 연결할 수 없다.
이유는, 멀리 있는 단어일수록 정보가 전달되지 않고 소실될 가능성이 있는 장기 의존성 문제 때문이다.

 

LSTM(Long Short-Term Memory)


LSTM은 장기 의존성 문제를 극복하기 위해 Cell state vector 와 Gate라는 구조를 추가하였다. 
(Vanilla RNN은 input vector, hidden state vector 총 2개의 벡터를 활용)

  • LSTM 구조 : time step 간에 두 종류의 상태 값(Hidden State, Cell State) 업데이트 관리
    LSTM 구조
  • Hidden State 업데이트
    • 업데이트된 Cell State 와 input, 이전 셀의 Hidden State로 새 Hidden State 값 생성해서 넘기기
  • Cell State 업데이트 : 긴시퀀스 동안 정보를 보존하기 위한 상태 값이 추가됨.
    • Forget Gate : 이전 시점 Cell State의 정보를 얼마나 기억할지 정한다. (Cell State의 정보를 통제한다.)
    • Input Gate : 입력으로 들어오는 정보의 양을 통제해 현재 시점에서 정보를 얼마나 기억할지 정한다.
    • Ouput Gate : 현재 시점에서 생산된 Cell State의 정보를 얼마나 출력으로 내보낼지 정한다.
    • Input Gate와 Forget Gate를 결합해서 Cell State에 업데이트
- Forget Gate: $f=σ(Wf​⋅[xt​,ht−1​]+bf​)$
- Input Gate: $i=σ(Wi​⋅[xt​,ht−1​]+bi​)$
- Output Gate: $o=σ(Wo​⋅[xt​,ht−1​]+bo​)$
- $σ()$는 sigmoid 함수로 0 ~ 1 사이의 값을 출력으로 내보낸다. 선형변환을 통해 만들어진 벡터의 각 원소를 0 ~ 1 사이로 바꿔 gate의 출력값이 곱해지는 벡터의 차원마다 정보를 얼마나 기억할지 통제한다고 보면된다.

GRU(Gated Recurrent Unit)


LSTM이 장기 의존성 문제(Long-Term Dependency)를 보완하고 좋은 성능을 내었지만 모델 파라미터가 많기 때문에 계산이 오래 걸린다는 단점이 존재한다.

GRU는 계산 시간을 줄이기 위해 성능은 거의 유지하면서 LSTM의 구조를 단순화한 모델이라고 볼 수 있다.

GRU 구조

  • LSTM 구조에서의 Cell State와 Hidden State가 하나의 Hidden State로 합쳐진 구조이다.
  • 하나의 gate controller인 $z_t$가 Forget Gate와 Input Gate를 모두 제어한다. (이전 $(t-1)$의 기억이 저장 될때 마다 t의 입력은 삭제된다)
    • $z_t$가 1을 출력하면 forget gate가 열리고, input gate가 닫힘
    • $z_t$가 0을 출력하면 forget gate가 닫히고, input gate가 열림
    • Update Gate : 이전 정보의 양을 얼마나 반영(전달)할지 결정하는 역할
    • Reset Gate : 이전 정보의 양을 얼마나 버릴지 결정하는 역할 (즉, 이전 셀 상태가 중요한지 여부를 결정)
$r_{t}=σ(W_{xr}x_{t}+W_{hr}h_{t-1}+b_{r})$
$z_{t}=σ(W_{xz}x_{t}+W_{hz}h_{t-1}+b_{z})$
$g_{t}=tanh(W_{hg}(r_{t}∘h_{t-1})+W_{xg}x_{t}+b_{g})$
$h_{t}=(1-z_{t})∘g_{t}+z_{t}∘h_{t-1}$

 

LSTM vs GRU 차이점

  • LSTM은 3개의 게이트(Input Gate, Forget Gate, Output Gate), GRU는 2개의 게이트(Reset Gate, Update Gate)
  • LSTM은 Cell State와 Hidden State를 GRU는 하나의 Hidden State를 가진다.
  • LSTM은 출력값을 계산할 때, 비선형 함수($tanh$)를 적용하지만, GRU는 추가적인 비선형 함수를 적용하지 않는다.
  • 경험으로, LSTM은 복잡한 모델 고도화를 위해 파라미터가 중요하지만, GRU는 비교적 간단한 파라미터로도 유사한 성능을 낼 수 있다.

 

참조 :

https://wikidocs.net/22889

 

08-03 게이트 순환 유닛(Gated Recurrent Unit, GRU)

GRU(Gated Recurrent Unit)는 2014년 뉴욕대학교 조경현 교수님이 집필한 논문에서 제안되었습니다. GRU는 LSTM의 장기 의존성 문제에 대한 해결책을 유지하…

wikidocs.net

https://excelsior-cjh.tistory.com/185

 

07-3. 순환 신경망 LSTM, GRU - (3)

이번 포스팅은 핸즈온 머신러닝 교재, cs231n 강의를 가지고 공부한 것을 정리한 포스팅입니다. RNN에 대해 좀더 간략하게 알고 싶으신 분들은 아래의 링크를 참고하면 됩니다. 텐서플로 실습 위주

excelsior-cjh.tistory.com

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

 

Illustrated Guide to LSTM’s and GRU’s: A step by step explanation

Hi and welcome to an Illustrated Guide to Long Short-Term Memory (LSTM) and Gated Recurrent Units (GRU). I’m Michael, and I’m a Machine…

towardsdatascience.com

 

'DL > NLP' 카테고리의 다른 글

Attention Mechanism  (0) 2024.11.18
Seq2Seq를 활용한 논리연산(AND, OR, XOR)  (0) 2024.11.08
Seq2Seq : Sequence to Sequence  (0) 2024.10.14
RNN  (0) 2024.10.08
'DL/NLP' 카테고리의 다른 글
  • Attention Mechanism
  • Seq2Seq를 활용한 논리연산(AND, OR, XOR)
  • Seq2Seq : Sequence to Sequence
  • RNN
YAHO_STUDY
YAHO_STUDY
DATA&AI_study.zip
  • YAHO_STUDY
    YAHO_CODE
    YAHO_STUDY
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • Paper Review (0)
      • SQL (16)
      • CODING_TEST (21)
      • Time Series (0)
      • DL (20)
        • NLP (5)
        • LLM&RAG (15)
        • Recommender System (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MySQL
    prompt-tuning
    quantization
    pagedattention
    SQL
    양자화
    PEFT
    RNN
    한 권으로 끝내는 실전 llm 파인튜닝
    fine-tuning
    coding_test
    boj
    DP
    Lora
    hash
    graph
    Programmers
    qlora
    runpod
    Gemma
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
YAHO_STUDY
LSTM, GRU 간단 정리
상단으로

티스토리툴바