LSTM——long short-term memory
LSTM能够解决梯度弥散的情况。LSTM还解决了记忆长度的问题
以前RNN只能记住比较短的时间序列,LSTM就把短的short-term给你延长了,所以才叫long short-term memory
我们之前学的RNN就是最基本的RNN版本,它也就是short-term memory
我们换一种画法
Wxh也叫Wih
这就是原始的RNN的表达结构
LSTM的原理
LSTM在原始RNN的基础上设计了三道闸门:输入门、输出门、遗忘门
有目的性的,有选择性得过滤输入得信息
每道门由一个sigmoid函数和逐点相乘操作实现的
三道门输入的都是ht-1和xt,ht-1和xt控制所有三道门的开度
LSTM可以抽象成
LSTM的一个核心概念:Cell State
我们以细胞状态向量的形式,来存储神经元对过往序列的宏观理解和记忆——然后把上一个时间步的细胞状态、当前时间步的输入、上一时步的隐藏状态综合起来,构造出神经元的历史长期记忆
说到底还是在仿照神经元/神经细胞结构在构建网络
原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。
再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)LSTM只是在RNN的基础上多了一记忆细胞层,可以把过去的信息和当下的信息隔离开来,过去的信息直接在Cell运行,当下的决策在Hidden State里面运行
LSTM的三道门
①遗忘门 forget gate
其实应该叫remember gate更加合理一点
因为门是控制开闭的,0代表完全抛弃,全部忘记,1代表完全保留,全部记住,0-1代表部分保留,而sigmoid函数的值域为0-1,因此选取sigmoid函数。
ft就是forget门的开度,就是t时刻的forget的量
遗忘门的作用:决定上一时刻中哪些信息从单元状态中抛弃,即将前一个细胞状态中的信息选择性遗忘
根据当前的输入xt和上一时刻输出ht-1计算出一个向量
它在每一维度上的值都在(0,1)范围内,再将上一时刻的ct-1与ft向量按位相乘,那么ft取值接近于0的维度上信息就会被忘记,而ft取值接近于1的维度上的信息会被保留。
例如:我喜欢篮球,他喜欢足球,当第二个主语出现,选择性的抛弃我这个主语。
②输入门
作用是决定有多少新的信息将要存储到当前细胞中,将新的信息选择性的记录到当前细胞状态中
it是输入门的开度,it与~Ct相乘就会控制有多少~Ct信息能流进去
~Ct就是新进来的信息,注意新的信息不是只有xt的
tanh()中是短期记忆的原始数据
遗忘门与输入门的综合
最后的memory就是Ct
③输出门
在LSTM中,我们把Ct看作原始RNN的ht,即传给下一个cell的,用于循环更新的值
把ht看作是输出值
作用:决定输出什么。
ot是输出门的开度,决定有多少Ct要被输出
ht代表输出
再换一种画图方式表示LSTM
此时我们来看
输入门为0,遗忘门为1:Ct=Ct-1, 没有新的输入了,Ct会直接得到Ct-1,将全部用过去的信息,把新的信息全部忽略掉
输入门为1,遗忘门为1:Ct=Ct-1+~C, 将新的信息添加到过去的信息上面去共同组成现在的memory
输入门为0,遗忘门为0:Ct=0,清楚掉当前的memory,有点像寄存器置零
输入门为1,遗忘门为0:Ct=~Ct,没有过去的记忆了,新的信息将“统治”当前memoey,或者说叫overwrite或叫覆盖
公式表示
ft表示遗忘门
it表示输入门
ot表示输出门
ct是memory
ht是输出