LSTM算法

前置知识:RNN循环神经网络

LSTM(Long Short Term Memory长短期记忆网络)——目前使用最多的时间序列算法。

LSTM是对RNN循环神经网络的一种优化,能够有效的延缓梯度爆炸以及梯度消失的问题。

LSTM算法_第1张图片

普通的RNN在隐藏层中只传递一个状态值 h,而LSTM不仅传递 h,还新增了一个状态值 C,每一层隐藏层中的每一个神经元都接收上一时刻传递的 h{t-1} 和 c{t-1} ,经过计算得到 h{t} 和 c{t} 再传入下一时刻。

LSTM算法_第2张图片

LSTM通过“”结构来去除或增加“细胞状态”的信息,实现对重要内容的保留和对不重要内容的去除. 通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过。

用于遗忘的门叫做"忘记门"(红色框), 用于信息增加的叫做"输入门"(绿色框),最后是用于输出的"输出门"(紫色框)。这三个门中一共包含3个sigmoid函数和2个tanh函数。

忘记门

LSTM算法_第3张图片

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

通过ft对Ct-1进行有选择的忘记,从而得到忘记门的输出。

C_{t-1}*f_t

输入门

LSTM算法_第4张图片

输入门的作用是把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}
LSTM算法_第5张图片

输出门的作用是计算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”层,让门层也接受细胞状态的输入。

LSTM算法_第6张图片

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

LSTM算法_第7张图片

你可能感兴趣的:(机器学习,lstm,算法,人工智能)