안녕하세요. 하이퍼(Hyper)입니다. 오늘은 기존 RNN의 문제를 보완한 LSTM(Long Short-Term Memoty),GRU(Gated Recurrent Unit))에 대해 간략히 알아보겠습니다.
기본적인 RNN의 경우 시계열 데이터에서 시간적으로 멀리 떨어져 있는 즉 장기(Long Term)의 의존관계를 잘 학습할 수가 없었습니다. 기울기가 소실 되거나 폭발되기 때문이죠.
이런 문제는 Gate라는 구조가 추가 된 LSTM, GRU로 장기 의존 관계를 학습하여 해결할 수 있습니다.
그렇다면 왜 기울기 소실이 되는 걸까요?
RNN은 순전파 시 tanh함수를 사용하는데, 여기서 문제가 발생하는 것입니다.
tanh의 미분 값은 1이하이며 x가 0으로 부터 멀어질수록 값이 점점 작아지며 0에 근사하게 됩니다.
다시 말하면 역전파 시 tanh노드를 지날 때마다 기울기가 작아진다는 것입니다.
역전파 시 기울기는 MatMul 노드를 지날 때마다 다음과 같이 변하게 됩니다.
- 기울기의 크기가 지수적으로 증가하거나 감소, 행렬 wh를 T번 반복해서 곱했기 때문이다.
- 만약 wh가 1보다 크면 지수적으로 증가(기울기 폭발)
- 만약 wh가 1보다 작으면 지수적으로 감소(기울기 소실)
그렇다면 어떻게 하면 이것들을 방지할 수 있을까요?
[기울기 폭발 대책]
- 기울기 클리핑 (Gradients Clipping)
Threshold 값을 설정하여 그 값을 초과하면 두번째 줄의 식과 같이 기울기를 수정하는 방법이다.
[기울기 소실 대책]
- LSTM(Long Short-Term Memory)
- GRU(Gated Recurrent Unit)
LSTM(Long Short-Term Memory)
RNN과 다르게 LSTM에는 기억 셀(memory cell)로 불리는 c라는 경로가 있습니다.
기억 셀은 다른 계층으로 출력하지 않고 LSTM 계층 내에서만 주고 받는 특징이 있습니다.
그럼 다음 포스팅에서 LSTM에 대해서 심도 있게 알아보겠습니다.
'RNN' 카테고리의 다른 글
RNNLM의 언어모델 개선 방법 (0) | 2023.06.13 |
---|---|
RNN 용어 정리 (0) | 2023.06.12 |