"Understanding LSTM Networks" notes

361 阅读4分钟

LSTM相较传统RNN的优势

As the gap between the relevant information grows, RNNs become unable to learn to connect the information. But LSTM are capable of handling such “long-term dependencies.”.

LSTM Networks

LSTM被明确地设计为避免长期依赖问题。长时间记住信息实际上是他们的默认行为,而不是他们努力学习的东西。

在上图中,每条线都承载着整个矢量,从一个节点的输出到另一个节点的输入。粉色圆圈表示逐点操作,例如矢量加法,而黄色框表示学习的神经网络层。合并的行表示串联,而分叉的行表示要复制的内容,并且副本到达不同的位置。

The Core Idea Behind LSTMs

LSTM的关键是单元状态,水平线贯穿图的顶部。

单元状态有点像传送带。它沿整个链条一直沿直线延伸,只有一些较小的线性相互作用。信息不加改变地流动非常容易。 LSTM确实具有删除或向单元状态添加信息的能力,这些功能被称为门的结构精心调节。

闸门是一种选择性地让信息通过的方式。它们由S形神经网络层和逐点乘法运算组成。

Sigmoid Layer输出介于零和一之间的数字,描述每个组件中的多少应该被允许通过。值为零表示“不让任何内容通过”,而值为1表示“让所有内容通过!”

LSTM具有这些门中的三个,以保护和控制单元状态。

Step-by-Step LSTM Walk Through

“forget gate layer” decides what information we’re going to throw away from the cell state.

LSTM的第一步是决定要从单元状态中丢弃哪些信息。该决定由称为“忘记门层”的S形层决定。它查看ht-1和xt,并在单元状态Ct-1中为每个数字输出介于0和1之间的数字。 1代表“完全保留此条件”,而0代表“完全保留此条件”。

让我们回到语言模型的示例,该模型试图根据所有先前的单词来预测下一个单词。在这样的问题中,细胞状态可能包括当前受试者的性别,从而可以使用正确的代词。看到新主题时,我们想忘记旧主题的性别。 下一步是确定要在单元状态下存储哪些新信息。这包括两个部分。首先,称为“输入门层”的S形层决定了我们将更新哪些值。接下来,tanh层创建一个新候选值向量C̃t,该向量可以添加到状态中。在下一步中,我们将两者结合起来以创建该状态的更新。

在我们的语言模型示例中,我们希望将新主题的性别添加到单元格状态,以替换我们忘记的旧主题。

sigmod函数的数学公式为:

tanh(x)函数的数学公式为:

现在是时候将旧单元状态Ct-1更新为新单元状态Ct。前面的步骤已经确定了要做什么,我们只需要实际进行即可。

我们将旧状态乘以ft,忘记了我们早先决定忘记的事情。然后我们将它加* C̃t。这是新的候选值,根据我们决定更新每个状态值的大小来缩放。

就语言模型而言,这是我们实际删除旧主题的性别的信息并添加新信息的地方,正如我们在前面的步骤中所确定的那样。

最后,我们需要决定要输出什么。此输出将基于我们的单元状态,但将是过滤后的版本。首先,我们运行一个S型层,确定要输出的单元状态的哪些部分。然后,我们通过tanh放置单元状态(将值推到-1和1之间),然后将其乘以S型门的输出,以便仅输出确定的部分。

对于语言模型示例,由于它只是看到一个主语,因此可能要输出与动词相关的信息,以防万一。例如,它可能输出主语是单数还是复数,以便我们知道如果接下来要动词,则应将动词以哪种形式共轭。

原文:colah.github.io/posts/2015-…