简单理解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}^t\otimes tanh(c^t) \]

最终使用激活函数输出:

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

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

posted @ 2020-05-31 18:41  狄昵称  阅读(383)  评论(0编辑  收藏  举报