Tensorflow2.0学习笔记(六)LSTM
目录
1 短时记忆
在处理较长的句子时,循环神经网络往往只能理解有限长度内的信息,而对于较长范围内的有用信息往往不能很好的利用起来。那么,能不能延长短时记忆,提高记忆力呢?——LSTM
2 LSTM与基础的RNN对比
与基础的RNN对比,除了有一个状态向量ht,LSTM新增加了一个状态向量Ct,同时引入了门控(Gate)机制,通过门控单元来控制信息的遗忘和刷新。
基础的RNN:
LSTM:
在LSTM中,有两个状态向量c和h,其中c作为LSTM的内部状态向量,可以理解为内存状态向量Memory,而h表示LSTM的输出向量。同时,利用输入门、遗忘门和输出门来控制内部信息的流动。
3 门控
- 遗忘门
(1)遗忘门作用于LSTM状态向量c上面,用于控制上一个时间戳的记忆对当前时间戳的影响。
(2)遗忘门的控制变量:
(3)为遗忘门的参数张量,可以通过反向传播算法自动优化。
为**函数,一般为Sigmoid函数。
(4)当门控的时侯,门打开,LSTM接受上一个状态
的所有信息;
当门控的时侯,门关闭,LSTM忽略状态
的所有信息,输出为0的向量。
(5)经过遗忘门后,LSTM的状态向量变为
- 输入门
(1)通过对当前时间戳的输入和上一个时间戳的输出
做非线性变换得到新的输入向量:
其中,
为输入门的参数,可以通过反向传播算法自动优化。tanh为**函数,将输入标准化到 [-1,1]。
并不会全部刷新进LSTM的Memory,而是通过输入门控制接受输入的程度。
(2)输入门控制变量:
(3)为输入门的参数张量,可以通过反向传播算法自动优化。
为**函数,一般为Sigmoid函数。
(4)当门控的时侯,门打开,LSTM全部接受
的所有信息;当门控
的时侯,门关闭,LSTM不接受
。
(5)经过输入门后,待写入Memory向量变为。
- 刷新Memory
在遗忘门和输入门的控制下,LSTM有选择地读取上一个时间戳的记忆和当前时间戳的新输入
,状态向量
的刷新方式为:
- 输出门
(1)LSTM的内部状态向量并不会直接用于输出。而是在输出门的控制下有选择地输出。
(2)输出门控制变量:
(3)为输出门的参数张量,可以通过反向传播算法自动优化。
为**函数,一般为Sigmoid函数。
(4)当门控的时侯,门打开,LSTM的状态向量
全部输出;当门控
的时侯,门关闭,此时输出为0的向量。
(5)LSTM的输出:
由于,因此LSTM的输出
。
4 输入门和遗忘门的典型行为
输入门控 |
遗忘门控 |
LSTM行为 |
0 |
1 |
只使用记忆 |
1 |
1 |
输入和记忆 |
0 |
0 |
清零记忆 |
1 |
0 |
输入覆盖记忆 |
5 LSTM层的使用
(1)LSTMCell
LSTM的状态变量List有两个,需要分别初始化。调用Cell完成前向运算时,返回两个元素,第一个元素为cell的输出,也就是
,第二个元素为cell的更新后的状态List:
。
(2)layers.LSTM层
layers = layers.LSTM(64)# 创建一层LSTM层,内存向量长度为64
layers = layers.LSTM(64, return_sequences=True)
参考资料:Tensorflow 深度学习 龙龙老师