【深度學習】RNN、GRU、LSTM

作者:LogM

本文原載於 https://segmentfault.com/u/logm/articles ,不允許轉載~

文章中的數學公式若無法正確顯示,請參見:正確顯示數學公式的小技巧

1. RNN

$$H_t = \phi(W_{xh}X_t + W_{hh}H_{t-1} + b_h)$$

$$O_t = W_{hq}H_t + b_q$$

其中,$\phi$ 爲激活函數。

RNN 容易出現"梯度爆炸"和"梯度衰減",應對梯度衰減的方式是使用 GRU 或 LSTM,應對梯度爆炸的方式是"裁剪梯度":
$$min(\frac{\theta}{||g||})g$$
其中,$g$ 爲求得的梯度,限制梯度的 $L_2$ 範數的值不超過 $\theta$。

RNN

2. GRU

  • 重置門:

$$R_t = \sigma(W_{xr}X_t + W_{hr}H_{t-1} + b_r)$$

  • 更新門:

$$Z_t = \sigma(W_{xz}X_t + W_{hz}H_{t-1} + b_z)$$

  • 候選隱狀態:

$$\tilde{H_t} = tanh[W_{xh}X_t + W_{hh}(R_t \odot H_{t-1}) + b_h]$$

  • 隱狀態:

$$H_t = Z_t \odot H_{t-1} + (1-Z_t) \odot \tilde{H_t}$$

其中,$\sigma$ 爲 sigmoid 函數,$\odot$ 表示 element-wise 乘法。

GRU

3. LSTM

  • 輸入門:

$$I_t = \sigma(W_{xi}X_t + W_{hi}H_{t-1} + b_i)$$

  • 遺忘門:

$$F_t = \sigma(W_{xf}X_t + W_{hf}H_{t-1} + b_f)$$

  • 輸出門:

$$O_t = \sigma(W_{xo}X_t + W_{ho}H_{t-1} + b_o)$$

  • 候選記憶細胞:

$$\tilde{C_t} = tanh(W_{xc}X_t + W_{hc}H_{t-1} + b_c)$$

  • 記憶細胞:

$$C_t = F_t \odot C_{t-1} + I_t \odot \tilde{C_t}$$

  • 隱狀態:

$$H_t = O_t \odot tanh(C_t)$$

LSTM

4. 參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章