当前位置:   article > 正文

LSTM算法

lstm算法

前置知识: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进行有选择的忘记,从而得到忘记门的输出。

C_{t-1}*f_t

输入门

输入门的作用是把ht-1与 xt拼接,通过权值矩阵Wf转换后,加上偏置值bi,再由sigmoid函数映射到[0,1]空间中。

输入数据是把ht-1与 xt拼接,通过权值矩阵Wf转换后,加上偏置值bc再由激活函数tanh映射到[-1,1],得到输入数据Ct~。

输入门的输出是

i_t*\tilde {C_t}

输出门

将忘记门与输入门的输出值相加就得到了此刻的Ct

C_t=C_{t-1}*f_t+i_t*\tilde {C_t}

输出门的作用是计算ht,计算出ht后即可计算t时刻的输出yt

y_t=g(V*h_t)

对于RNN算法优化的原因

事实上,我们得到的Ct是这样的一个值:

C_t=\sigma(W_f[h_{t-1},x_t]+b_f)C_{t-1}+ \sigma(W_i[h_{t-1},x_t]+b_i)tanh(W_c[h_{t-1},x_t]+b_c)

由此可知,

\frac{\partial C_t}{\partial C_{t-1}}=\sigma(W_f[h_{t-1},x_t]+b_f)

该值的范围在0~1之间,但是在实际参数更新的过程中,可以通过控制bf较大,使得该值接近于1。这样即使在多次连乘的情况下,梯度也不会消失。

变种

变种1:增加“peephole connections”层,让门层也接受细胞状态的输入。

变种2:通过耦合忘记门和更新输入门(第一个和第二个门);也就是不再单独的考虑忘记什么、增加什么信息,而是一起进行考虑。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/567116
推荐阅读
相关标签
  

闽ICP备14008679号