RNN에서 신경망의 깊이가 깊어질수록 Gradient가 사라지거나 폭발할 수 있음을 발견했습니다.
따라서 이를 해결하기 위해 여러가지 방법이 제안 되었습니다.
가장 초기의 방법 중 하나는 LSTM[Hochreiter & Schmidhuber, 1997]으로 9.2에서 논의 할 예정이며,
GRU[Cho et al., 2014a]는 종종 비슷한 성능을 제공하고 계산 속도가 빠르며, LSTM의 복잡한 구조를 간단화 시켰습니다.
GRU가 LSTM을 개선한 방향으로 차후에 나온 모델이지만 단순성 때문에 GRU부터 언급을 하겠습니다.
9.1.1. Gated Hidden State
바닐라 RNN과 GRU의 주요 차이점은 GRU가 Hidden State의 Gating을 지원한다는 것입니다.
즉, 숨겨진 상태를 업데이트 해야하는 시기와 재설정을 해야하는 시기에 대한 전용 매커니즘이 적용된 것입니다.
이러한 매커니즘은 기울기 문제를 해결할 수 있습니다.
예를 들어 첫 번째 토큰이 매우 중요하다면 첫 번째 토큰을 관찰 후 숨겨진 상태를 업데이트 하지 않는 방법을 배웁니다.
마찬가지로 관련 없는 일시적인 관찰을 건너 뛰는 방법과 필요할 때마다 Hidden State를 재설정하는 방법을 배웁니다.
9.1.1.1. Reset Gate and Update Gate
우리는 Reset Gate와 Update Gate를 (0,1) 범위의 조합을 통해 수행할 수 있다.
예를 들어 Reset Gate를 사용하면 이전 상태를 얼마나 기억하고 싶은지 제어 할 수 있습니다.
마찬가지로 Update Gate를 사용하면 새 상태에 이전 상태의 복사정도를 제어 할 수 있습니다.
0과 가까울수록 기억하지 않거나 복사하지 않고, 1과 가까울수록 기억하거나 복사하는 개념으로 조합을 하는 것입니다.
W는 가중치, B는 편향이며, 입력 값을 0과 1 사이의 범위로 변환하기 위해 시그모이드 함수를 사용합니다.
9.1.1.2. Candidate Hidden State
Reset Gate를 통해 재설정 후 입력 값과 통합을 하게 됩니다.
재설정은 곱연산을 통해 할 수 있습니다.
Reset Gate의 결과가 1과 가까워질수록 기존 바닐라 RNN과 가까워지고, 0에 가까워질수록 MLP와 가까워집니다.
9.1.1.3. Hidden State
마지막으로 Update의 결과와 통합을 해야합니다.
새로운 은닉 상태의 Ht를 지정하기 위해서 이전의 Ht-1과 임시 Ht 그리고 Zt를 이용하여 최종Ht를 정하게 됩니다.
Zt가 1에 가까울수록 이전의 상태를 유지할려고 하며 0에 가까울 수록 새로운 Ht에 더 접근하게 됩니다.
이러한 설계를 통해 Gradient 문제를 일정부분 해결하고 거리가 큰 시퀀스의 종속성을 잘 캡처할 수 있게 도와줍니다.
따라서 GRU는 다음과 같은 두 가지 구별되는 기능이 있습니다.
- 리셋 게이트는 시퀀스의 단기 종속성을 캡처하는데 도움이 됩니다.
- 업데이트 게이트는 시퀀스에서 장기적인 종속성을 캡처하는데 도움이 됩니다.
ref. Dive into Deep Learning, Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, 2020
'인공지능 > DeepLearning' 카테고리의 다른 글
모델 성능 평가지표 (0) | 2020.12.29 |
---|---|
모델 성능 평가 지표 - 분류(Classification) - 미완성 (0) | 2020.12.28 |
[CNN] Alex Net - 구현 및 MNIST_Fashion 학습 (0) | 2020.12.11 |
[PyTorch] File I/O, GPUs (0) | 2020.11.12 |
[PyTorch] Parameter Management (0) | 2020.11.11 |