原文地址:https://www.jianshu.com/p/b8653f8b5b2b
一、Recurrent Neural Network
二、Naive RNN
Naive RNN更新參數時易出現梯度消失/爆炸的問題。
三、LSTM
- peephole
- Naive RNN vs LSTM
記憶更新部分的操作,Naive RNN為乘法,LSTM為加法。因此LSTM能記得更久些。
記\(\delta_c^t=\frac{\partial L}{\partial c^t}=\frac{\partial L}{\partial c^{t+1}}\frac{\partial c^{t+1}}{\partial c^t}=\delta_c^{t+1}(z^f+\cdots)\)。當\(z^f=1\)時,即使其他項很小,梯度也能夠很好地傳達到上一個時刻;當\(z^f=0\)時,上一個時刻的記憶不會影響當前時刻,梯度也不會回傳回去。因此,\(z^f\)控制了梯度回傳的衰減程度。
能有效地緩解梯度消失/爆炸問題。
- LSTM設計原因
標准形式的LSTM能工作得很好;輸入門與遺忘門聯動(類似GRU)以及沒有peephole也能工作得很好。
輸出激活函數、遺忘門對於LSTM的表現很重要。
四、GRU
與LSTM相比,GRU可以看做是輸入門和遺忘門聯動。由4個矩陣乘法變為了3個,參數量更少,降低了過擬合的可能性。
五、attention基礎
- dot
\(S_{ab}=h_a^Th_b\) - general
\(S_{ab}=h_a^T W h_b\) - concat
\(S_{ab}=v^T tanh(W_a h_a+W_b h_b)\)