原文地址: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))