简单理解LSTM

一、RNN

循环神经网络是一种用来处理序列数据的神经网络。相比于一般的神经网络来说,它能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容而有不同的含义,RNN就能很好的解决这类问题。

(x^{(t)})(t)状态下数据的输入,(y^{(t)})(t)状态下的输出,(h^{(t-1)})为接收到(t-1)的输入,(h^{(t)})为传递到(t+1)状态的输出,则有:

[h^{(t)} = 激活函数(W_1h^{(t-1)}+W_2x^{t} + b_1) ]

[y^{(t)}=激活函数(W_0h^{t}+b_0) ]

二、LSTM

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

设设(x^{(t)})(t)状态下数据的输入,,(y^{(t)})(t)状态下的输出,(c^{t-1})(h^{(t-1)})为接收到(t-1)的状态输入,(c^t)(h^{(t)})为传递到(t+1)状态的输出,则有:

忘记门门控信号:

[f_{forget}^t = sigmoid(W_{forget}[h^{t-1},x^t]+b_{forget}) ]

输入门门控信号:

[f_{input-contral}^t = sigmoid(W_{input-contral}[h^{t-1},x^t]+b_{input-contral}) ]

输入数据:

[f_{input-data}^t = tanh(W_{input-data}[h^{t-1},x^t]+b_{input-data}) ]

忘记门控制(c^{t-1})输入的数据加上输入门控制的输入数据构成新的(c^t)

[c^t = f_{fortget}otimes c^{t-1} +f_{input-contral}otimes f_{input-data} ]

输出门门控信号

[f_{output}^t=sigmoid(W_{output}[h^{t-1},x^{t}]+b_{output}) ]

输出门控制(c^t)后的输出

[h^t=f_{output}^totimes tanh(c^t) ]

最终使用激活函数输出:

[y^t=sigmoid(Wh^t) ]

注意:此处(otimes)为哈达玛积。

原文地址:https://www.cnblogs.com/DslBlogs/p/13020488.html