大数跨境
0
0

图解长短期记忆网络LSTM

图解长短期记忆网络LSTM AI算法之道
2024-06-27
1
导读:图解长短期记忆网络LSTM
点击蓝字
 
关注我们










01


引言



今天我们要讨论的是长短期记忆网络(LSTM),它是我们在上一篇文章中讨论过的普通循环神经网络(RNN)的升级版。


《图解RNN》点击图片即可跳转


我们看到,RNN 用于解决基于序列的问题,但在长距离保留信息方面存在困难,从而导致短期记忆问题。这就是 LSTM模型擅长的地方。LSTM 与 RNN 具有相同的递归特性,但又有所变化。让我们看看它们是如何做到这一点的。


闲话少说,我们直接开始吧!






02


回顾 RNN


让我们先看看之前的RNN发生了什么。我们的神经网络有一个输入 x,一个由一个具有 tanh 激活函数的神经元组成的隐藏层,以及一个具有 sigmoid 激活函数的输出神经元。因此,RNN 的第一步看起来是这样的:

在这里,我们首先将第一个输入x1传递给隐藏神经元,得到h1。公式表达如下所示:

h₁表示第一个隐藏状态输出

接着,我们有以下两个选择:

  • 方案一:将此h1传递给输出神经元,从而仅通过这一个输入就能得到预测结果。数学公式如下:
y₁ _hat 表示第一个隐藏状态的预测值
  • 方案二:将此 h₁ 值传递给下一个网络的隐藏神经元,从而进入下一个隐藏状态。因此,第二个隐藏状态的表示将是这样的:

第一和第二隐藏状态
在这里,我们将第一个网络中隐藏神经元的输出与第二个输入 x₂ 一起传递给当前网络中的隐藏神经元。这样,我们就得到了第二个隐藏层的输出 h₂。

h₂ 表示第二隐藏状态输出
同样,从这里我们可以对 h₂ 做两件事:
  • 方案一:将其传递给输出神经元,得到的预测结果是第一个神经元x1和第二个神经元x2的结果。

    y₂_hat 表示第二隐藏状态预测值

  • 方案二:或者我们直接将其原封不动地传递给下一个网络。

这个过程会一直持续下去,每个状态都会从上一个网络的隐藏神经元中获取输出(以及新输入),并将其输入到当前状态的隐藏神经元中,从而产生当前隐藏层的输出。然后,我们可以将该输出传递给下一个网络或输出神经元,从而得出预测结果。


整个过程可以用以下关键方程来概括:

尽管这种方法很简单,但也有其局限性:当我们进行到最后几步时,由于网络无法保留大量信息,最初几步的信息开始逐渐消失。输入序列越大,这个问题就越明显。显然,我们需要一种策略来增强这种记忆。




03


 引入LSTM


考虑我们基本RNN 的一个隐藏状态。

RNN中的隐藏状态


我们知道,每个状态开始时都有两个参与者:上一个隐藏状态值 ht-1,以及当前输入xt最终目标是产生一个隐藏状态输出,即 ht,它既可以传递到下一个隐藏状态,也可以传递到输出神经元以产生预测结果。LSTM 具有类似的结构,但复杂程度略有提高:

LSTM的隐藏状态

这张图看似令人生畏,但其实很直观。接下来,让我们慢慢进行分解。




04


  深入LSTM


在 RNN 中,我们有两个参与者,最终目标是产生一个隐藏状态输出。现在我们一开始就有三个参与者输入到LSTM 中,即之前的长期记忆 Ct-1、之前的隐藏状态输出 ht-1 和当前输入xt,如下所示:

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

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

  • 【遗忘部分】:

  • 【输入部分】:

  • 【输出部分】:

我们注意到,它们都有一个共同的紫色单元:

上述这些单元被称为门。为了决定哪些信息重要,哪些信息不重要,LSTM 采用了以下这些门,它们本质上是具有 sigmoid 激活函数的神经元。

这些门决定了在各自的部分中保留多大比例的信息,实际上就像看门的守卫一样,只允许一部分信息通过。

在这种情况下使用 sigmoid 函数是很有策略性的,因为它输出的值从 0 到 1 不等,直接对应于我们打算保留的信息比例。例如,1 表示保留所有信息,0.5 表示只保留一半信息,0 表示丢弃所有信息。





05


 遗忘部分处理过程


现在我们来看看这三种门的计算公式。如果仔细观察隐藏状态图,我们会发现它们都有相同的输入xt和 ht-1,但权值和偏置项不同。

它们都有相同的数学公式,但我们需要适当调换权重和偏置项。

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

【遗忘部分】:

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

之后再与之前的长期记忆相乘:

这个乘积为我们提供了遗忘门认为重要的先前长期记忆,并遗忘了其他记忆。因此,遗忘门的比例 f与 1 越接近,我们就会保留越多的以前的长期记忆。





06


 输入部分处理过程


【输入部分】:

本节的主要目的是创建新的长期记忆,分两个步骤完成。
  • 步骤一:创建一个新的长期记忆候选神经元 C(tilda)t。我们使用带有 tanh 激活函数的神经元来获得新的长期记忆候选:

我们可以看到这个神经元的输入是xt和 ht-1,与门电路类似。因此,通过神经元后的输出为:

我们得到的输出结果就是新的长期记忆的候选对象。现在,我们只想保留候选者的必要信息。这就是输入门发挥作用的地方。我们使用从输入门得到需要保留的比例:

通过与候选者的输入门比例相乘,只保留候选者所需的数据:


  • 步骤二:现在,为了得到最终的长期记忆,我们将决定保留在 "遗忘 "部分获得的旧长期记忆,公式如下:

并将其添加到我们决定保留在本输入部分的新候选者中:

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






07


输出部分处理过程

【输出部分】:

本节的主要目的是创建一个新的隐藏状态输出。这非常简单。我们现在要做的就是将新的长期记忆 Ct,先通过 tanh 函数如下:

然后与输出门比例相乘,从而得到新的隐藏状态输出:


就这样,我们完成了任务2--产生新的隐藏状态进行输出!





08


循环


现在,我们可以将这些新的输出传递到下一个隐藏状态,再次重复同样的过程。

我们还可以看到,每个隐藏状态都有一个输出神经元:

就像在 RNN 中一样,每个状态都可以产生各自的输出。与 RNN 类似,我们使用隐藏状态的输出 ht来进行预测。因此,可以将 ht传递给输出神经元,如下所示:

如此以来,我们就得到了对这个隐藏状态的预测!







09


总结


到此为止。正如我们所看到的,LSTM 通过更好地处理连续数据中的长期依赖关系,将 RNN 提升到了一个新的水平。我们看到 LSTM 是如何巧妙地保留重要信息并舍弃无关信息的,就像我们的大脑一样。这种在长时间序列中记住重要细节的能力,使 LSTM 在自然语言处理、语音识别和时间序列预测等任务中尤为强大。


您学废了嘛?









点击上方小卡片关注我




添加个人微信,进专属粉丝群!


【声明】内容源于网络
0
0
AI算法之道
一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
内容 573
粉丝 0
AI算法之道 一个专注于深度学习、计算机视觉和自动驾驶感知算法的公众号,涵盖视觉CV、神经网络、模式识别等方面,包括相应的硬件和软件配置,以及开源项目等。
总阅读23
粉丝0
内容573