长短期记忆(Long-Short Term Memory, LSTM)是一种时间递归神经网络(RNN),论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。
LSTM的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好,比如用在不分段连续手写识别上。2009年,用LSTM构建的人工神经网络模型赢得过ICDAR手写识别比赛冠军。LSTM还普遍用于自主语音识别,2013年运用TIMI自然演讲数据库达成17.7%错误率的纪录。作为非线性模型,LSTM可作为复杂的非线性单元用于构造更大型深度神经网络。(wikipedia)
根据谷歌的测试表明,LSTM中最重要的是Forget gate,其次是Input gate,最次是Output gate。
循环神经网络展开成一个全神经网络:
下面是其中一个隐藏层的分析:
黄色矩形表示有学习能力的神经网络层
粉色圆圈表示运算符号,”x” 表示乘号(例如向量乘法),“+”表示加号
黑色箭头表示 向量传递
两条线融合表示进行运算
线分叉表示内容被复制成两个,不同方向传递
forget gate layer:
数据信息由上一层hidden state信息与现在的输入数据信息的加权之和,
而激活函数sigmoid,决定什么信息是需要从cell state中丢弃的,forget gate layer 输出是[0,1]之间的数,1表示完全变成保留信息,0表示完全丢弃
input gate layer:
同样有一个激活函数sigmoid,意义解释为决定哪些值需要更新,其实和forget gate layer的意思类似,
但作用不同。
A tanh layer :
a tanh layer creates a vector of new candidate values:
tanh layer是创建现隐藏层cell state的候选值,之前说候选值,只因为它只是一个中间值。
Final memory cell:
这里是获取现隐藏层
cell state
,它是基于上一个隐藏层
cell state(
称为
old cell state)
与现隐藏层的候选值。
这两个值通过与forget gate 、input gate相乘,决定我们从之前的cell state忘记多少信息和更新多少信息。
Output gate :
这里也有一个激活函数sigmoid,习惯把它叫Output gate。
它决定我们应该输出哪一部分的 cell state。
Final hidden state:
计算现隐藏层
Final state
的时候,先要让现隐藏层cell state经过一个激活函数tanh,让它的值控制在[-1,1]之内,
这样做可能是防止梯度爆炸(exploding gradient )。然后再与
Output gate相乘决定输出那部分信息。