RNN(循环神经网络)
-
RNN示意图
是一个向量,它表示输入层的值; 是一个向量,它表示隐藏层的值; 是输入层到隐藏层的权重矩阵; 也是一个向量,它表示输出层的值; 是隐藏层到输出层的权重矩阵。循环神经网络的隐藏层的值 不仅仅取决于当前这次的输入 ,还取决于上一次隐藏层的值 。权重矩阵 就是隐藏层上一次的值作为这一次的输入的权重。输出值 ,是受前面历次输入值 、…影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。
-
计算公式:
-
双向循环神经网络
- 示意图
- 计算公式:
- 示意图
LSTM(长短时记忆网络)
- 单元状态(cell state)
新增加的状态c,称为单元状态(cell state)。我们把上图按照时间维度展开:
在t时刻,LSTM的输入有三个:当前时刻网络的输入值 、上一时刻LSTM的输出值 、以及上一时刻的单元状态 ;
LSTM的输出有两个:当前时刻LSTM输出值 、和当前时刻的单元状态 。
用到了门(gate)的概念。门实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量。
LSTM用两个门来控制单元状态c的内容,一个是遗忘门(forget gate),它决定了上一时刻的单元状态 有多少保留到当前时刻 ;另一个是输入门(input gate),它决定了当前时刻网络的输入 有多少保存到单元状态 。LSTM用输出门(output gate)来控制单元状态 有多少输出到LSTM的当前输出值 。
LSTM需要学习的参数共有8组,分别是:遗忘门的权重矩阵 和偏置项 、输入门的权重矩阵 和偏置项 、输出门的权重矩阵 和偏置项 ,以及计算单元状态的权重矩阵 和偏置项 。
- LSTM单元结构:
-
遗忘门:
-
输入门:
-
用于描述当前输入的单元状态,它是根据上一次的输出和本次输入来计算的:
-
当前时刻的单元状态
-
输出门
-
LSTM最终的输出
-
GRU
GRU 是LSTM 的一个变体,GRU 保持了 LSTM 的效果同时又使结构更加简单。
GRU 只剩下两个门,即更新门和重置门。
-
更新门
用于控制前一时刻的状态信息被代入到当前状态的程度,更新门的值越大说明前一时刻的状态信息带入越多。 -
重置门
用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。 -
GUR单元结构