RNN: Problem
- RNN이 갖고 있는 한계점:
- exploding gradient
- vanishing gradient
- RNN 구조에서 state xt에는 Wxx가 계속 곱해지게 된다.
- 곱해지는 값이 1보다 크다면? 발산
- 곱해지는 값이 1보다 작다면? 수렴
RNN: Exploding Gradient
- 학습 도중 loss가 inf이 뜰 경우
- 학습이 더이상 진행이 불가능 하다.
- 해결책?
- Gradient clipping
RNN: Vanishing Gradient
- 학습 도중 파악이 어렵다.
- 초기화를 간결하게 해주는 방법이 존재하지만...
- 다른 네트워크 구조를 제안하는 것이 훨씬 편하다.
- Gated RNNs: LSTM / GRU
LSTM: Long short-term memory
- Gradient flow를 제어할 수 있는 "밸브" 역할을 한다고 생각하면 쉽다.
- State space의 입력, 상태, 출력 구조는 동일
- Gate 구조의 추가
- 4개의 MLP 구조
LSTM: Four Regulations
- Step 1: 새로운 입력과 이전 상태를 참조해서
- 이 정보를 얼마의 비율로 사용할 것인지를 결정
- (또는) 얼마나 잊어버릴 것인가?
- Step 2: 새로운 입력과 이전 상태를 참조해서
- 이 정보들을 얼마나 활용할 것인가를 결정
- (+) 어떤 정보를 활용할 것인가도 결정
- Step 3
- Step 1에서는 얼마나 잊어버릴까?
- Step 2에서는 어람나 이용할까?
- 이 둘을 적절히 섞는다.
- Step 4: 일련의 정보들을 모두 종합해서 다음 상태를 결정
GRU: Simplification of LSTM
- 방금까지 본 LSTM 모델: 너무 복잡함
- GRU는 LSTM의 간소화 버전
- Cell state가 없음
- LSTM보다 파라미터 수가 적으므로 training time이 절약된다.
- LSTM보다 성능이 좋은가? Task에 따라 천차만별
- But LSTM과 GRU가 RNN보다는 확실한 성능을 보장한다.