长短期记忆网络(LSTM)

长短期记忆网络(LSTM)

1.LSTM介绍

LSTM 表示 长短期记忆网络 ,当我们的神经网络需要在记忆最近的事物和很久以前的事情之间 切换 时,LSTM 是非常有用的。

2.RNN vs LSTM

RNN存储的都是短期记忆,并不擅长长期记忆,LSTM增加了长期记忆的输入和输出。

3.LSTM基础

引入 长期记忆块 ,它作为每一次预测的输入,并且在每次预测后都根据 短期记忆 长期记忆 当前事件 进行更新 长期记忆 短期记忆 。共三个输入和两个输出(短期记忆就是当前结点预测结果)。

引入四个门:
在这里插入图片描述

1、长期记忆进入遗忘门,忘记它认为没有用处的一切。

2、短期记忆和当前事件进入学习门合并在一起,囊括了我们刚刚学习的东西,并移除掉一切不必要的信息。

3、还没遗忘的长期记忆和刚学到的新信息会在记忆门中合并在一起,然后记忆门输出更新后的长期记忆。

4、最后,使用门决定从还没遗忘的长期记忆和刚学到的信息中挑选什么来使用,从而做出预测。

级联的结构如下:

在这里插入图片描述

4.LSTM的架构

RNN架构回顾:

时间 EtE_t E t 和记忆 Mt−1M_{t-1} M t 1 作为输入,首先将两者放在一起,然后再乘以矩阵 WW W ,再加一个偏差 bb b ,然后把整个公式套在 tanhtanh t a n h 中,从而得到输出 MtM_t M t , MtM_t M t 作为该结点的预测,也是下个结点的记忆。
在这里插入图片描述
LSTM架构:

在这里插入图片描述

5.学习门

学习门要做的是:取 短期记忆 事件 ,将两者合并,然后忽略其中的一部分,只保留重要的部分。

合并操作公式如下, NtN_t N t 是刚学到的新信息。

在这里插入图片描述

然后进行忽略一部分,即引入遗忘因子 iti_t i t
output=Nt∗it output = N_t * i_t o u t p u t = N t i t
如何计算 iti_t i t 呢?还是用 短期记忆 事件 作为输入,构建小型网络进行计算。总过程如下图所示:
在这里插入图片描述

6.遗忘门

遗忘门的输入是 长期记忆 ,输出是 遗忘后的长期记忆

这里也引入一个遗忘因子 ftf_t f t ,和 iti_t i t 一样,它也是由 短期记忆 事件 作为输入,构建小型网络进行计算得到的。

在这里插入图片描述

7.记忆门

记忆门的输入是 遗忘后的长期记忆 (LTMt−1∗ft)(LTM_{t-1}*f_t) ( L T M t 1 f t ) 刚学到的新信息 (St∗it)(S_t*i_t) ( S t i t ) ,输出是更新后的长期记忆 LTMtLTM_t L T M t

这个门非常简单,只做简单的加法运算。

在这里插入图片描述

8.应用门

应用门的输入是 遗忘后的长期记忆 (LTMt−1∗ft)(LTM_{t-1}*f_t) ( L T M t 1 f t ) 刚学到的新信息 (St∗it)(S_t*i_t) ( S t i t ) ,输出是新的短期记忆也是该结点的输出结果。

在这里插入图片描述

上图中Vt修改为使用sigmoid激活函数;

9.组合在一起

在这里插入图片描述

10.其他架构

门限回归单元(GRU)

它把 遗忘门 学习门 合并为 更新门 ,然后把 更新门 的结果交给 合并门 处理。它只会返回输出一个 工作记忆 ,而不是一对 长期记忆 短期记忆

在这里插入图片描述

窥视孔连接

长期记忆 也作用于 ft,itf_t,i_t f t , i t 等遗忘因子。
在这里插入图片描述