在RNN计算中,介绍到对于长期依赖的问题,没法进行解决,可能产生梯度消失和梯度爆炸的问题;LSTM
特别适合解决这类需要长时间依赖的问题
LSTM的记忆细胞是改造过的
该记录的信息会一直传递,不该记录的信息会被截断掉。
LSTM关键:“细胞状态”
细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互,信息在上面流传保持不变很容易。
LSTM怎么控制“细胞状态”
LSTM可以通过gates("门")结构来去除或者增加“细胞状态”的信息
包含一个sigmoid神经网络层次和一个pointwist乘法操作
sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”
LSTM中主要有三个“门”结构来控制“细胞状态”
第一个“门”==>"忘记门":
决定从“细胞状态”中丢弃什么信息;比如在语言模型中,细胞状态可能包括了性别信息,当我们看到
新的代名词的时候,可以考虑忘记旧的数据。
第二个“门” ==>“信息增加门”:
决定了放什么新信息,到“细胞状态”中;
sigmoid层决定什么值需要更新
Tanh层创建一个新的候选向量
主要是为了状态更新做准备
经过第一个和第二个“门”后,可以确定传递信息的删除和增加,即可以进行“细胞状态”的更新
更新Ct-1为Ct
将旧状态与ft相乘,丢失确定不要的信息
加上新的候选值it*ct得到最终更新后的“细胞状态”
第三个“门”==>基于“细胞状态”得到输出;
首先运行一个sigmoid层来确定细胞状态的那个部分将输出
使用tanh处理细胞状态得到一个-1到1之间的值,再将他和sigmoid门的输出相乘,输出程序,确定
输出部分。