1. LSTM
一个递归神经网络由很多个以下单元组成,一个单元包括一个基于过去的输入,一个新的输入,一个预测,一个连接到未来的值。
在中间的,则是一个典型的神经元,它有一些权重、一些线性函数等构成。
通过使用LSTM,我们将用一个优点奇怪的机制来代替这个模块,它看起来有点复杂,但功能和神经元一样。你可以把它放到你的RNN中,别担心没问题。
你不需要修改其他的东西,但它能够很有效地解决消失梯度问题。

2. Memory Cell
这个架构是如何运作的呢?
请记住我们做这个的目的,是为了使RNN能更好地记忆事物,所以,让我们短暂地忘记一会儿神经网络吧。
假设你正在建立一个具有记忆功能的系统,你需要做如下三件事:首先,你需要能够将数据写入到记忆中;同时,你需要能够读取记忆中的数据;最终,你还需要它能够被擦出,即被忘记。

上面是一个示意图,中间是你的记忆单元,它可以是一个能存值的矩阵,它有来自外界的输入,通过一个指令门,用以判断这个输入是否要被写入”记忆“中。你同时有另一个指令门,它可以判断你能否从记忆中读取相关内容。最后这个指令门则是能够决定是否”忘记“这个数据并擦除。
3. LSTM Cell
你可以按如下方式设定指令门的规则,如果门关闭则对输入乘上0否则乘上1,这些都没问题,不过它和神经网络有什么关系呢?

假设若我们在每个指令门处,有的不是一个二元(0-1)决策,而是一个连续决策。也就是说,在是-否指令门外,你希望新设定一种指令门,它能对输入值乘上一个介于0和1之间的值,当这个数恰为0的时候,没有输入被存储;当它恰为1的时候,则所有数据被全部存储;而当它介于0与1之间的时候,数据被部分地存入到记忆中。那现在这个事情就很有趣了,因为若乘上的这个数是一个连续的函数,那么我们就可以对它求导,进一步也就是说我们能够对它使用逆向传播法。而这就是LSTM的内核。我们从简单的记忆模型出发,然后我们把一些离散的值使用连续函数替换,最终,我们将这个新的构架应用到一个递归神经网络中。

4. LSTM Cell 2

在每个指令门处的阈值,由一个基于输入参数的logistic回归控制,每一个阈值都有一套共享的参数,同时还嵌入了一个反曲函数tanh使得输出值介于-1和1之间。代码五行就能搞定这些看上去很麻烦的数学公式,而且,鉴于这些函数在区间上都是良定义的、连续可导函数,所以说我们可以轻而易举的最优化这些函数。那么LSTM为什么有效呢?在不深入探讨细节的前提下,我们指出这些指令门可以帮助模型在需要“记忆”的情况下记住更久需要忘记的时候立刻忘记,并且他们可以使得优化过程更为简便,最终导数消失的问题也被解决了。
5. LSTM Regularization
你可以一直使用L2它很管用。
Dropout在LSTM上效果也很好,但要把它用在输入或输出层,而不是递归连接层。

浙公网安备 33010602011771号