算法模型Lstm(循环神经网络):

简介

LSTM和RNN相似,它们都是在前向传播的过程中处理流经细胞的数据,不同之处在于 LSTM 中细胞的结构和运算有所变化。

LSTM结构:

遗忘门:

遗忘门的功能是决定应丢弃或保留哪些信息。来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于0和1之间,越接近0意味着越应该丢弃,越接近 1 意味着越应该保留。如图遗忘门:

python lstm神经网络 lstm神经网络算法_线性变换

遗忘门图

python lstm神经网络 lstm神经网络算法_线性变换_02

遗忘门的输入信息,分别是ht-1,xt,从公式上我们可以看到是这两个值与权重矩阵Wf相乘,我们可以理解为ht-1与xt的拼接,拼接以后再与Wf相乘,然后加上一个偏置bf,最后经过一个激活函数sigmoid,使得线性变换变成非线性变换,此时ft的取值为(1,0),这个值决定了Ct-1的值是否被记忆或者遗忘,或者说记住多少,这就是这个遗忘门的作用。

输入门:

输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。

其次还要将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。

如图输入门:

python lstm神经网络 lstm神经网络算法_深度学习_03


输入门图

python lstm神经网络 lstm神经网络算法_线性变换_04

it和ft公式是一样的,这就说明,it也具有遗忘的功能,比如,Ct-1在遇到ft的时候,ft决定保留Ct-1的记忆,则此时,it则决定着对Ct的遗忘能力,Ct是LSTM需要记忆的新的值

记忆单元:

如图 记忆单元:

python lstm神经网络 lstm神经网络算法_线性变换_05


记忆单元图

python lstm神经网络 lstm神经网络算法_lstm_06

Ct-1遗忘剩余的部分,与新的要记忆的部分C~t相加,就是要输出的Ct

输出门:

输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到sigmoid函数中,然后将新得到的细胞状态传递给tanh函数。

最后将tanh的输出与sigmoid的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。

图 输出门:

python lstm神经网络 lstm神经网络算法_深度学习_07

输出门图

python lstm神经网络 lstm神经网络算法_python lstm神经网络_08

最后来到了输出门,本次输出的结果就从这个地方输出,我们可以看到ht是由Ot与tanh(Ct) 相乘得来,也就是说本次需要多少为我所用的含义。

如图6LSTM结构图:

python lstm神经网络 lstm神经网络算法_线性变换_09

LSTM结构图