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의 구조를 단순화한 모델이라고 볼 수 있다.
- 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는 비교적 간단한 파라미터로도 유사한 성능을 낼 수 있다.
참조 :
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
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 |