LSTM
idea
原始的RNN隐藏层只有一种状态,对于短期短期输入非常敏感。为了使RNN解决长距离依赖问题,LSTM增加了一个状态c来保存长期状态,称为cell state
details
关键问题 - 如何控制长期状态c?
- 使用三个控制开关
- 遗忘门(forget gate):决定上一时刻的cell状态有多少保存到当前cell
- 输入门(input gate):决定当前lSTM的输入有多少保存到当前cell
- 输出门(output gate):控制cell 有多少输出到LSTM的当前状态值
- 用门(gate)实现这三个开关
- 定义:使用全连接层充当门的作用,输入是一个响亮,输出是一个0到1的实数向量(使用sigmoid)。公式为:
- 方法:用门的输出向量(即上述公式sigmoid的输出)乘以需要控制的状态c
- 定义:使用全连接层充当门的作用,输入是一个响亮,输出是一个0到1的实数向量(使用sigmoid)。公式为:
LSTM的前向传播
1. 遗忘门
- 计算公式:
- 遗忘门的输入是当前输入以及上一时刻的隐藏状态,这两个输入经过一个全连接层通过sigmoid**,得到一个概率向量(下边我称为遗忘概率向量)。当遗忘概率向量中的某个元素为0时就完全遗忘了上一时刻的cell状态中相应位置的元素。遗忘门输出一个遗忘概率向量
2. 输入门
- 作用:决定让多少新的信息加入到cell状态中,首先使用输入门来产生一个概率向量,决定备选向量中的各个元素有多少能加入到当前状态
- 公式
- 说明:W是一个权重矩阵,b是一个偏置向量,最终输出的是一个向量,通过遗忘门的遗忘概率向量来选择性地过滤掉一些不需要的信息以后,再通过输入门产生的概率向量来决定有多少信息新的信息需要加到当前cell状态
3. 输出门
- 作用:决定输出什么值,首先运行一个sigmoid层来决定cell状态的哪些部分需要输出出去
- 公式
- 做法:通过输出门产生的概率向量o_t,决定中的各种信息需要怎么样地保留下来