일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- classification
- sigmoid
- Vanilla RNN
- version
- Peephole Connection
- Regression
- GCN
- RNN
- Skip Connectioin
- Linear
- python
- ResNet
- cnn
- GoogLeNet
- virtualenv
- Generative
- DCGAN
- Optimizer
- Inception Module
- Inception V1
- vim-plug
- jupyter
- Bottleneck Layer
- AI
- DL
- iTerm2
- Residual Connection
- Manager
- Skip Connection
- Gated Skip Connection
- Today
- Total
IT Repository
(4) GRU 본문
GRU (Gated Recurrent Unit)¶
GRU는 LSTM보다 더 간단한 구조로 Gradient Vanishing 문제를 해결하고 제안되었습니다.
LSTM과 비교했을 때 Cell state를 제거하고 Gate의 수를 1개 줄임으로써 파라미터의 수를 감소시켰습니다.
Work Flow of GRU¶
-
Gate coefficient를 계산한다.
$\begin{eqnarray} r_t &=& \sigma~(W_r \cdot [x_t,~h_{t-1}]) & ~~~~~\text{Reset gate: } \text{이전 상태의 불필요한 정보를 제거} \\ z_t &=& \sigma~(W_z \cdot [x_t,~h_{t-1}]) & ~~~~~\text{Update gate: }h_{t-1} \text{ 와 } \tilde{h}_t \text{ 의 비중 결정} \end{eqnarray}$ -
Reget gate에 이전 스텝의 상태를 흘려보낸 후, $\tilde{h}_t$를 만든다. (= Vanilla RNN 셀의 $h_t$)
$\tilde{h}_t = tanh~(W \cdot [x_t,~r_t \ast h_{t-1}])$ -
$z_t$를 통해 최종 $h_t$를 계산한다.
$h_t = (1 - z_t) \ast h_{t-1} + z_t \ast \tilde{h}_t$
자세히 보면 LSTM에 비교해서 아래의 2가지 변화를 확인할 수 있습니다.
- LSTM의 장기 상태와 단기 상태 벡터를 하나의 $h_t$ 채널이 담당
- Update gate가 LSTM의 Forget gate와 Input gate의 역할을 함
How GRU Solves Gradient Vanishing¶
LSTM이 Cell state에 Non-linear function을 거치지 않음으로써 이전 정보를 전달하는 것과 유사하게
GRU 역시 $h_t$ 채널이 Non-linear function 없이 t+n 시점까지 정보를 전달함으로써 Gradient Vanishing 문제를 해결합니다.
'RNN > Study' 카테고리의 다른 글
(3) LSTM (0) | 2020.01.17 |
---|---|
(2) Basic of RNN - Vanilla RNN (0) | 2020.01.16 |
(1) Basic of RNN - Sequence Data (0) | 2020.01.16 |
(0) Overview of RNN (0) | 2020.01.14 |