这个网络很难用有限状态自动机表示,但是我们可以用激活空间中两个固定的点(fix point)来表示,一个是吸引点,一个是排斥点,这是一个震荡的解法,也就是每一个输入都是围绕着一个 fix point 来回震荡,虚线就是我们的分割线,如下图所示:
然而这个神经网络再训练的时候,有时候会有非单调的情况,这种情况下就不会再围着 fix point 震荡了,而是随着输入一直趋向于一个 fix point,如下图所示:
如果我们利用旋转来计算的话,如果输入是 a 就向内圈旋转,如果输入是 b 就向外圈旋转,下方的直线是输出线:
如果我们要处理的任务是根据 \(a^nb^nc^n\) 来预测,那么 solution 就可以表示为下图所示的情况,最终预测的输出线从一条线变成了一个面,下图中没有画出来,大家知道这件事就可以了:
在这个图中,a b c 是向不同的方向计数来实现预测的,会产生几个星形的形状。
如果是部分单调的话,就会变成下面的样子:
LSTM 简介长短期记忆网络(Long Short Term Memory networks,LSTM)是一种特殊的 RNN,主要用于处理长期的依赖。是由 Horchreiter 和 Schmidhuber 发明的。
LSTM 产生的原因LSTM 被设计出来主要是为了解决长期依赖(long-term dependency)问题。也就是长时间的记住某些东西。
SRN 可以学习到中等范围的东西,但是在学习长期依赖方面有困难。
LSTM 和 GRU(后面会提到)在学习长期依赖方面要优于SRN。
LSTM的结构在看 LSTM 的结构之前,我们再来讨论一下 RNN 的结构。
所有的循环神经网络都由重复的链式神经网络结构构成的。在标准的 RNN 中重复的神经网络通常会采用一个十分简单的结构,例如一个单独的 tanh 层。如下图所示:
在明确了上面的传统的 RNN 的结构图之后呢,我们来仔细研究一下 LSTM 的结构图。
LSTM 同样有类似链式结构,但是它的重复的神经网络结构的部分,不再是一个简单的 tanh 层,而是一个十分复杂的结构。具体来讲有四层神经网络和三个门控构成!如下图所示:
我们可以对上面的结构进行如下的一个基本划分,明确一下接收了哪些输入,后面再具体将每一处的细节,可以先暂时不管右边的公式:
下面我们将一步步的学习 LSTM 的结构,在学习之前我们先明确一下相关的符号:
黄色方框:一个神经网络层
粉色圆圈:一个点态操作
一条线:携带一个完整的向量从一个节点的输出到另一个节点的输入
合并的线:连接
分叉的线:把一个内容赋值到两个不同的位置
LSTM 的核心