上一篇把序号写错了,这篇应该是三十五的。

上一篇我们说了simpleRNN,其缺点就是,间隔一个以上的状态,将被强烈的衰减,很难被传递信息,这个实际就是短期记忆了,只能记住上一次的处理结果。其实在真正的语法词法分析过程中,仅仅知道上一次处理状态是不够的,这就要“长期记忆”了。

LSTM,长短期记忆,就是解决这个问题的。

长短期记忆LSTM结构,实际上就是将一个LSTM单元替代掉simple RNN中的一个S单元。LSTM是怎么样的呢,看下图:

相比simple RNN的状态,每一次计算,都会从上一次计算中,获取上期记忆信息,还有短期记忆信息。然后,参与本次计算,而计算的结果,又会输出长期记忆和短期记忆给一下轮分析。

具体而言,在LSNM内部,其结构如下:

他有四个门:

遗忘门,记忆门,学习门,使用门

遗忘门,是接收来自长期上一轮的长期记忆,用于“忘记”一些不必要的信息。

学习门,是接收整合来自上一次处理的短期记忆信息,还有本次的输入信息,两者进行混合,然后再“忘记”一些不需要的信息。

记忆门,则是将忘记门以及处理掉的信息,以及学习门整理过的信息两者重新整合,变成新的长期记忆。

使用门,顾名思义,就是用于本次计算的,他混合了上遗忘门过滤后的信息,还有学习门混合后的信息,决定本次的计算,同时再输出一份作为下一次计算的短期记忆。

四个门都介绍完了,我们总结一下,他的总体数学架构如下:

有点难懂,我们分别具体看看每一个门的数学表示:

我们先来看看学习门,学习门有两个作用,分别是混合上一次的短期记忆还有本次的实际输入,然后忘记一些东西。我们分别看看这两步怎么做的:

首先混合:

这个应该很容易看懂,说白了,就是矩阵上两者混合一下,然后进行f(xW+b)的操作。其实就是普通单一神经网络的计算公式,没有那么神秘。

好了,这是其中一个作用就是混合信息,那么怎么遗忘呢?

遗忘其实也很简单,就是让同样的式子再计算一遍,变成另外一个矩阵,然后,这个矩阵就是遗忘因子,这个遗忘因子,再合上面的混合参数相乘。这样就可以让上面的混合信息有所“损失”了。结构如下:

好,这个就是学习门。

遗忘门:

遗忘门就是要损失些信息的,怎么损失?还记的学习门怎么损失的吗?是的一样,由上一次的短期记忆,和本次输入进行混合变成遗忘因子,然后和和被遗忘内容进行矩阵乘法就是:

这个比较简单,不进一步说明了。

记忆门:

这个也爆简单,把上一次的遗忘门和学习门的结果混合就是了,怎么混合?矩阵相加!

不多解释了。

最后是使用门:

稍稍有点复杂,刚刚记忆门是简单粗暴的混合了两遗忘们的长期记忆以及学习门的结果。

而使用门,是要对两者信息进行处理的,自然不能简单相加混合,那就是相乘咯。

还没那么简单,要在相乘之前,再进行一次激活函数的处理!结构如下:

最后总结一下,整体结构:

好,最后,在从整个网络的角度,看看LSTM的RNN网络架构,结束本篇文章。

后面,我们会具体讲一下,在tensorflow中如何使用LSTM架构进行RNN的分析。

相关文章