
01
引言
今天我们要讨论的是长短期记忆网络(LSTM),它是我们在上一篇文章中讨论过的普通循环神经网络(RNN)的升级版。
《图解RNN》点击图片即可跳转
我们看到,RNN 用于解决基于序列的问题,但在长距离保留信息方面存在困难,从而导致短期记忆问题。这就是 LSTM模型擅长的地方。LSTM 与 RNN 具有相同的递归特性,但又有所变化。让我们看看它们是如何做到这一点的。
闲话少说,我们直接开始吧!
02
回顾 RNN
让我们先看看之前的RNN发生了什么。我们的神经网络有一个输入 x,一个由一个具有 tanh 激活函数的神经元组成的隐藏层,以及一个具有 sigmoid 激活函数的输出神经元。因此,RNN 的第一步看起来是这样的:

在这里,我们首先将第一个输入x1传递给隐藏神经元,得到h1。公式表达如下所示:
h₁表示第一个隐藏状态输出
接着,我们有以下两个选择:
-
方案一:将此h1传递给输出神经元,从而仅通过这一个输入就能得到预测结果。数学公式如下:
-
方案二:将此 h₁ 值传递给下一个网络的隐藏神经元,从而进入下一个隐藏状态。因此,第二个隐藏状态的表示将是这样的: 

方案一:将其传递给输出神经元,得到的预测结果是第一个神经元x1和第二个神经元x2的结果。
y₂_hat 表示第二隐藏状态预测值
方案二:或者我们直接将其原封不动地传递给下一个网络。

整个过程可以用以下关键方程来概括:
尽管这种方法很简单,但也有其局限性:当我们进行到最后几步时,由于网络无法保留大量信息,最初几步的信息开始逐渐消失。输入序列越大,这个问题就越明显。显然,我们需要一种策略来增强这种记忆。
03
引入LSTM
考虑我们基本RNN 的一个隐藏状态。

RNN中的隐藏状态

这张图看似令人生畏,但其实很直观。接下来,让我们慢慢进行分解。
04
深入LSTM
在 RNN 中,我们有两个参与者,最终目标是产生一个隐藏状态输出。现在我们一开始就有三个参与者输入到LSTM 中,即之前的长期记忆 Ct-1、之前的隐藏状态输出 ht-1 和当前输入xt,如下所示:

最终目标是产生两个输出--新的长期记忆 Ct和新的隐藏状态输出ht:

LSTM 的首要任务是尽可能多地舍弃不必要的信息,它主要通过以下三个部分来实现这一目标 :
【遗忘部分】:
【输入部分】:

【输出部分】:

我们注意到,它们都有一个共同的紫色单元:
上述这些单元被称为门。为了决定哪些信息重要,哪些信息不重要,LSTM 采用了以下这些门,它们本质上是具有 sigmoid 激活函数的神经元。
这些门决定了在各自的部分中保留多大比例的信息,实际上就像看门的守卫一样,只允许一部分信息通过。
在这种情况下使用 sigmoid 函数是很有策略性的,因为它输出的值从 0 到 1 不等,直接对应于我们打算保留的信息比例。例如,1 表示保留所有信息,0.5 表示只保留一半信息,0 表示丢弃所有信息。
05
遗忘部分处理过程


每种方法都会产生介于 0 和 1 之间的值,因为这就是 sigmoid 函数的工作原理,它将决定我们希望在每个部分保留多少比例的特定信息。

这部分的主要目的是找出我们想要遗忘的长期记忆的比例。因此,我们现在要做的就是从遗忘门中获取这个比例(0-1 之间的一个值):
之后再与之前的长期记忆相乘:

这个乘积为我们提供了遗忘门认为重要的先前长期记忆,并遗忘了其他记忆。因此,遗忘门的比例 ft 与 1 越接近,我们就会保留越多的以前的长期记忆。
06
输入部分处理过程
【输入部分】:

-
步骤一:创建一个新的长期记忆候选神经元 C(tilda)t。我们使用带有 tanh 激活函数的神经元来获得新的长期记忆候选:



-
步骤二:现在,为了得到最终的长期记忆,我们将决定保留在 "遗忘 "部分获得的旧长期记忆,公式如下:
并将其添加到我们决定保留在本输入部分的新候选者中:

然后,我们就完成了LSTM需要输出的第一项任务,创建了一个新的长期记忆!接下来,我们需要产生一个新的输出隐藏状态。
07
输出部分处理过程

本节的主要目的是创建一个新的隐藏状态输出。这非常简单。我们现在要做的就是将新的长期记忆 Ct,先通过 tanh 函数如下:
然后与输出门比例相乘,从而得到新的隐藏状态输出:

就这样,我们完成了任务2--产生新的隐藏状态进行输出!
08
循环
现在,我们可以将这些新的输出传递到下一个隐藏状态,再次重复同样的过程。
我们还可以看到,每个隐藏状态都有一个输出神经元:

就像在 RNN 中一样,每个状态都可以产生各自的输出。与 RNN 类似,我们使用隐藏状态的输出 ht来进行预测。因此,可以将 ht传递给输出神经元,如下所示:
如此以来,我们就得到了对这个隐藏状态的预测!
09
总结
到此为止。正如我们所看到的,LSTM 通过更好地处理连续数据中的长期依赖关系,将 RNN 提升到了一个新的水平。我们看到 LSTM 是如何巧妙地保留重要信息并舍弃无关信息的,就像我们的大脑一样。这种在长时间序列中记住重要细节的能力,使 LSTM 在自然语言处理、语音识别和时间序列预测等任务中尤为强大。
您学废了嘛?
点击上方小卡片关注我
添加个人微信,进专属粉丝群!


