Keywords: RNN
或
$[x1,x2]$ 表示向量拼接; RNN 为递推结构, 其中$h_0$ 一般初始化为 0;
前者来自 Elman, 后者来自 Jordan; 两个过程的区别仅在于当前步的输入不同, 一般所说的 RNN 指的是前者;
$[x1,x2]$ 表示向量拼接;$*$ 表示按位相乘;$f_i$ : 长期记忆的遗忘比重;$i_i$ : 短期记忆的保留比重; $\tilde{C}t$: 当前时间步的 Cell 隐状态, 即短期记忆; 也就是普通 RNN 中的 $h_t$
$C{t-1}$: 历史时间步的 Cell 隐状态, 即长期记忆;$C_t$ : 当前时间步的 Cell 隐状态;$o_t$ : 当前 Cell 隐状态的输出比重;$h_t$ : 当前时间步的隐状态 (输出);
相关问题: Cell 状态的作用、**LSTM 是如何实现长短期记忆的? **
- LSTM 相比 RNN 多了一组 Cell 隐状态, 记
$C$ (Hidden 隐状态两者都有);-
$C$ 保存的是当前时间步的隐状态, 具体包括来自之前 (所有) 时间步的隐状态$C_{t-1}$ 和当前时间步的临时隐状态$\tilde{C}_t$ .
-
- 由于 Cell 的加入, 使 LSTM 具备了控制长期/短期记忆比重的能力, 具体来说:
- 如果长期记忆 (之前时间步) 的信息不太重要, 就减小
$C_{t-1}$ 的比重, 反映在遗忘门的输出$f_t$ 较小; - 如果短期记忆 (当前时间步) 的信息比较重要, 就增大
$\tilde{C}_t$ 的比重, 反映在记忆门的输出$i_t$ 较大;
- 如果长期记忆 (之前时间步) 的信息不太重要, 就减小
- 参考:
Cell state 和 Hidden state 的关系
- 从前向过程可以看到 Cell 存储了全部时间步的信息, 而 Hidden 由 Cell 经过输出门后得到, 可以把 Hidden 看做是网络在 Cell 基础上进行特征选择的结果;
- 一种说法是 Cell 偏向长期记忆, Hidden 偏向短期记忆;
- "遗忘门" 控制前一步记忆状态 (
$C_{t-1}$ ) 中的信息有多大程度被遗忘; - "输入门 (记忆门) " 控制当前的新状态 (
$\tilde{C}_t$ ) 以多大的程度更新到记忆状态中; - "输出门" 控制当前输出 (
$h_t$ ) 多大程度取决于当前的记忆状态 ($C_t$ );
- 遗忘门 -> 输入门 -> 输出门
$[x1,x2]$ 表示向量拼接;$*$ 表示按位相乘;
- "更新门" 用于控制前一时刻的状态信息被融合到当前状态中的程度;
- "重置门" 用于控制忽略前一时刻的状态信息的程度
- 合并 "遗忘门" 和 "记忆门" 为 "更新门";
- 其实更像是移除了 "输出门";
- 移除 Cell 隐状态, 直接使用 Hidden 代替;