前置知识:RNN循环神经网络
LSTM(Long Short Term Memory长短期记忆网络)——目前使用最多的时间序列算法。
LSTM是对RNN循环神经网络的一种优化,能够有效的延缓梯度爆炸以及梯度消失的问题。
普通的RNN在隐藏层中只传递一个状态值 h,而LSTM不仅传递 h,还新增了一个状态值 C,每一层隐藏层中的每一个神经元都接收上一时刻传递的 h{t-1} 和 c{t-1} ,经过计算得到 h{t} 和 c{t} 再传入下一时刻。
LSTM通过“门”结构来去除或增加“细胞状态”的信息,实现对重要内容的保留和对不重要内容的去除. 通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过。
用于遗忘的门叫做"忘记门"(红色框), 用于信息增加的叫做"输入门"(绿色框),最后是用于输出的"输出门"(紫色框)。这三个门中一共包含3个sigmoid函数和2个tanh函数。
忘记门
忘记门的作用是把ht-1与 xt拼接,通过权值矩阵Wf转换后,加上偏置值bf,再由sigmoid函数映射到[0,1]空间中。
通过ft对Ct-1进行有选择的忘记,从而得到忘记门的输出。
输入门
输入门的作用是把ht-1与 xt拼接,通过权值矩阵Wf转换后,加上偏置值bi,再由sigmoid函数映射到[0,1]空间中。
输入数据是把ht-1与 xt拼接,通过权值矩阵Wf转换后,加上偏置值bc再由激活函数tanh映射到[-1,1],得到输入数据Ct~。
输入门的输出是
输出门
将忘记门与输入门的输出值相加就得到了此刻的Ct
输出门的作用是计算ht,计算出ht后即可计算t时刻的输出yt
对于RNN算法优化的原因
事实上,我们得到的Ct是这样的一个值:
由此可知,
该值的范围在0~1之间,但是在实际参数更新的过程中,可以通过控制bf较大,使得该值接近于1。这样即使在多次连乘的情况下,梯度也不会消失。
变种
变种1:增加“peephole connections”层,让门层也接受细胞状态的输入。
变种2:通过耦合忘记门和更新输入门(第一个和第二个门);也就是不再单独的考虑忘记什么、增加什么信息,而是一起进行考虑。