RNN,LSTM

在DNN中,当前输出层的值只和当前输入值有关系。如果当前输出值不仅依赖当前输入值,也依赖于前面时刻的输入值,那么DNN就不适用了。因此也就有了RNN。

一、RNN

1、RNN结构

此RNN结构一共有T个时间序列,每个时间序列的输入为x,输出为y,流向下一个循环神经细胞的隐藏层状态为a。 

2、RNN CELL单元以及前向传播

前向传播公式为上图右所示

3、RNN反向传播

二、 LSTM

1、LSTM的结构

2、LSTM细胞单元

一共三个sigmoid激活函数,门控作用。两个tanh。

遗忘门(遗忘什么信息,因此使用sigmoid函数来控制,sigmoid的范围在0~1):

$$mathbf{Gamma}_f^{langle t angle} = sigma(mathbf{W}_f[mathbf{a}^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_f) $$

更新门(什么信息用来更新细胞状态):

$$mathbf{Gamma}_i^{langle t angle} = sigma(mathbf{W}_i[a^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_i) $$ 

输出门(什么信息用来输出):

$$ mathbf{Gamma}_o^{langle t angle}=  sigma(mathbf{W}_o[mathbf{a}^{langle t-1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_{o})$$ 

候选细胞状态

$$mathbf{ ilde{c}}^{langle t angle} = anhleft( mathbf{W}_{c} [mathbf{a}^{langle t - 1 angle}, mathbf{x}^{langle t angle}] + mathbf{b}_{c} ight) $$

最终细胞状态

$$ mathbf{c}^{langle t angle} = mathbf{Gamma}_f^{langle t angle}* mathbf{c}^{langle t-1 angle} + mathbf{Gamma}_{i}^{langle t angle} *mathbf{ ilde{c}}^{langle t angle} $$ (因此,根据遗忘门和更新门,不需要的信息当门控值为0或者很小时,求和的部分只取很小值,因为是求和操作,因此可以防止梯度消失)

隐藏细胞状态

$$ mathbf{a}^{langle t angle} = mathbf{Gamma}_o^{langle t angle} * anh(mathbf{c}^{langle t angle})$$

输出

$$mathbf{y}^{langle t angle}_{pred} = extrm{softmax}(mathbf{W}_{y} mathbf{a}^{langle t angle} + mathbf{b}_{y})$$

参考 Cousera

谢谢!
原文地址:https://www.cnblogs.com/ylxn/p/10229491.html