LSTM

长短期记忆(Long short-term memory, LSTM)是一种特殊的 RNN

下图中,左边是原始的 RNN,右边是 LSTM

Pasted image 20231006230331.png
其中,ci 变化的很缓慢,hi 变化的很快

具体实现

首先,LSTM 内部会计算下面四个变量

Pasted image 20231006230616.png
其中,zfzizo 是门控向量,所以用 sigmoid 作为激活函数.
接下来,按顺序进行下面的计算,主要分为 3 个阶段

  1. 忘记阶段:对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。具体实现是把 zf 作为门控,控制上个阶段的 ct1 有哪些被遗忘。
  2. 选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。门控为 zi
    上面两个阶段合起来得到了新的 ct=zfct1+ziz
  3. 输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 zo 来进行控制的。并且还对上一阶段得到的 ct 进行了放缩(通过一个tanh激活函数进行变化)
    与普通RNN类似,输出 yt 往往最终也是通过 ht 变化得到 Pasted image 20231006230954.png

参考:人人都能看懂的LSTM - 知乎 (zhihu.com) (台大李宏毅教授的深度学习课的笔记)