循环神经网络(RNN)

简单示例

RNN 展开状态如下:

Unfolding RNN (1)

其中水平方向(紫色线)表示 时间序列 上的传播;竖直方向(蓝色线)表示 空间序列 上的传播。

$x$、$y$ 分别表示输入与 Ground truth,$p$ 表示预测结果,$h$ 表示隐藏状态(State),$t$ 表示某一时间(Time Step),$c$ 表示 RNN 单元(Cell)。

(此图仅作示意,所用符号与以下公式无关。)

RNN 公式

RNN 展开状态:

Unfolding RNN (2)

(此图仅作示意,所用符号与以下公式无关。)

$$ \begin{cases} s^{(t)} = f(W_1x^{(t)} + W_2s^{(t - 1)}) &\text{(state)} \\ h^{(t)} = g(W_3s^{(t)}) &\text{(hypothesis)} \\ \end{cases} $$

RNN 反向传播推导

TODO

RNN 存在的问题

  • 梯度消失、梯度爆炸

长短期记忆网络(LSTM)

出自 Long Short-Term Memory (Neural Computation 1997)

普通 RNN 如下:

RNN unit

而 LSTM 如下:

LSTM unit

一个 LSTM Cell 包括以下内容:

  • 2 条信息流
    • Cell State,表示该 Cell 的「记忆」(memory);
    • Cell Output,取决于该 Cell 的记忆与当前 time step 的输入。
  • 3 个门控(gate,控制多少信息能够流通,值域为 [0, 1])
    • 遗忘门(forget gate),控制多少记忆应该被遗忘;
    • 输入门(input gate),控制多少输入应该被记住;
    • 输出门(output gate),控制多少记忆应该被输出(预测)。
  • 5 个激活层
    • 3 个 Sigmoid 层,分别用于 3 个门控;
    • 2 个 Tanh 层,分别用于产生新记忆、基于当前记忆产生输出(预测)。

LSTM Cell 内部流动的过程如下:

$$ \begin{cases} G_{forget}^{(t)} &= \operatorname{Sigmoid}(W_1x^{(t)}+V_1h^{(t-1)}) &\text{(forget gate)} \\ G_{input}^{(t)} &= \operatorname{Sigmoid}(W_2x^{(t)}+V_2h^{(t-1)}) &\text{(input gate)} \\ G_{output}^{(t)} &= \operatorname{Sigmoid}(W_3x^{(t)}+V_3h^{(t-1)}) &\text{(output gate)} \\ \hat{c}^{(t)} &= \operatorname{Tanh}(W_4x^{(t)}+V_4h^{(t-1)}) &\text{(candidate cell state)} \\ c^{(t)} &= G_{forget}^{(t)}\cdot c^{(t-1)}+G_{input}^{(t)}\cdot\hat{c}^{(t)} &\text{(cell state)} \\ h^{(t)} &= G_{output}^{(t)}\cdot\operatorname{Tanh}(c^{(t)}) &\text{(hypothesis/hidden state)} \end{cases} $$

如果我们进一步定义 $\sigma(x_1,x_2) = \operatorname{Sigmoid}(W_1\cdot x_1 + W_2\cdot x_2 + b)$、$\operatorname{Tanh}(x_1,x_2) = \operatorname{Tanh}(W_1\cdot x_1 + W_2\cdot x_2 + b)$,那么上面的式子可以简化为:

$$ \begin{equation} \begin{cases} c_t &= \sigma_1(h_{t-1},x_t)\cdot c_{t-1} + \sigma_2(h_{t-1},x_t)\cdot tanh(h_{t-1},x_t) \\ h_t &= \sigma_3(h_{t-1},x_t)\cdot tanh(c_t) \end{cases} \end{equation} $$

门控循环单元(GRU)

出自 Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation (EMNLP 2014).

相当于 LSTM 的一个简化版:

$$ \begin{cases} G_{reset}^{(t)} &= \sigma(W_1x^{(t)}+V_1h^{(t-1)}) &\text{(reset gate)} \\ G_{update}^{(t)} &= \sigma(W_2x^{(t)}+V_2h^{(t-1)}) &\text{(update gate)} \\ \hat{h}^{(t)} &= \operatorname{Tanh}(W_3x^{(t)}+V_3(G_{reset}^{(t)}\cdot h^{(t-1)})) &\text{(candidate hypothesis)} \\ h^{(t)} &= G_{update}^{(t)}\cdot h^{(t-1)}+(1-G_{update}^{(t)})\cdot\hat{h}^{(t)} &\text{(hypothesis)} \end{cases} $$

Bidirectional recurrent neural networks

TODO

参考