1. LSTM cell
- 如文章 LSTM网络与参数学习笔记 中介绍, LSTM cell指的是一个包含隐藏层所有神经元的结构.
- 但是LSTM门控单元的公式如何理解、门和LSTM cell神经元如何对应、门函数的参数维度、不同时间步不同隐藏层之间数据如何传递等, 这些问题将在本文厘清
2. 门结构
-
RNN存在长期记忆逐渐消失以及梯度消失/爆炸的问题
-
LSTM通过引入cell state保存长期记忆, 通过设置精妙的门控机制很大程度缓解梯度消失/爆炸问题.
-
LSTM中有三个门, 分别是遗忘门, 输入门和输出门
-
遗忘门: f门
- 决定我们会从细胞状态中丢弃什么信息
- 它接收 h t − 1 h_{t-1} ht−1和 x t x_{t} xt作为输入参数,通过 s i g m o i d sigmoid sigmoid层得到对应的遗忘门的参数
- 弄清楚今天发生的事情(输入 x x x)和最近发生的事情(隐藏状态 h h h),二者会影响你对情况的长期判断(细胞状态 C C C)
-
输入门: i门
- 确定什么样的新信息被存放在细胞状态中
- s i g m o i d sigmoid sigmoid层得到输入门参数 i t i_t it, 确定要更新的信息, t a n h tanh tanh层产生新的候选值 C ~ t \widetilde{C}_t C t. 最后将 i t i_t it和 C ~ t \widetilde{C}_t C t相乘得到更新的信息;同时将上面得到的遗忘门 f t f_t ft和旧元胞状态 C t − 1 C_{t-1} Ct−1相乘,以忘掉其中的一些信息。二者相结合,便得到更新后的状态 C t C_t Ct
- 最近发生的事情(隐藏状态 h h h)和今天发生的事情(输入 x x x)中的哪些信息需要记录到你对所处情况的长远判断中(细胞状态 C C C)
-
输出门:o门
- 计算最后的输出信息
- 通过 t a n h tanh tanh层将细胞状态的值规范到 − 1 ∼ 1 -1\sim 1 −1∼1之间, 然后由 s i g m o i d sigmoid sigmoid层得到输出门参数 o t o_t ot, 最后将 o t o_t ot与规范化后的细胞状态点乘, 得到最终过滤后的结果 h t h_t ht
- 得到所处情况的短期判断, 比如近期跟老板提加薪会不会答应
-
3. 门的公式
-
首先回顾输入和输出的维度
-
batch_first = true
input(batch_size, seq_len, input_size) output(batch_size, seq_len, hidden_size * num_directions)
-
batch_first = false
input(seq_len, batch_size, input_size) output(seq_len, batch_size, hidden_size * num_directions)
-
-
遗忘门
-
公式:
-
输入: h t − 1 h_{t-1} ht−1, x t x_{t} xt的联合,即 [ h t − 1 , x t ] [h_{t-1}, x_{t}] [ht−1,xt]
-
输出:由于使用了 s i g m o i d sigmoid sigmoid函数,输出值在 0 ∼ 1 0\sim 1
-