LSTM长短期记忆网络:

它是一种特殊的RNN网络,可以很好的解决长时依赖问题,与常规神经网络有什么不同?

传统的RNN为

Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习


Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习_02


Matalb实现长短期记忆网络 长短期记忆网络原理_神经网络_03


可以看到它的处理层非常简单,通常是一个单tanh层,通过当前输入及上一时刻的输出来得到当前输出。这样就可以利用上一时刻学习到的信息进行当前时刻的学习了。例如处理语音识别,语言模型,机器翻译等LSTM的结构和上面相似:

Matalb实现长短期记忆网络 长短期记忆网络原理_机器翻译_04


Matalb实现长短期记忆网络 长短期记忆网络原理_神经网络_05


LSTM可以通过门控单元可以对细胞添加和删除信息。通过门可以有选择地决定信息是否通过,它有一个sigmoid(自变量为负无穷到正无穷,值域为0到1)神经网络层和一个乘法操作组成,如下:

Matalb实现长短期记忆网络 长短期记忆网络原理_神经网络_06


该层的输出是一个介于0到1的数,表示允许信息通过的多少,0 表示完全不允许通过,1表示允许完全通过。

第一步,遗忘门,是用来决定什么信息可以通过细胞层。这个决定由“forget gate”层通过sigmoid来控制,它会根据上一时刻的输出通过或部分通过。如下:

Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习_07


Matalb实现长短期记忆网络 长短期记忆网络原理_Matalb实现长短期记忆网络_08


第二步,输入门,是产生我们需要更新的新信息。这一步包含两部分,第一个是一个“input gate”层通过sigmoid来决定哪些值用来更新(将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0,1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要),第二个是一个tanh层用来生成新的候选值相加,得到了候选值。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。这两个加起来就是丢掉不需要的信息,添加新信息的过程:

Matalb实现长短期记忆网络 长短期记忆网络原理_Matalb实现长短期记忆网络_09


Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习_10


Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习_11


Matalb实现长短期记忆网络 长短期记忆网络原理_深度学习_12


01遗忘门

Matalb实现长短期记忆网络 长短期记忆网络原理_机器翻译_13


02输入门

Matalb实现长短期记忆网络 长短期记忆网络原理_机器翻译_14


03细胞状态

Matalb实现长短期记忆网络 长短期记忆网络原理_Matalb实现长短期记忆网络_15


04输出门

Matalb实现长短期记忆网络 长短期记忆网络原理_网络层_16