时间序列领域中最流行的模型之一是 LSTM——长短期记忆模型。它是一种循环神经网络,大量用于序列预测。在这篇博客中,我们将介绍为什么首选 LSTM 以及它是如何工作的。在进入 LSTM 之前,让我们更深入地了解这些术语的含义。

时间序列分析——在这种情况下,数据点在特定的时间间隔内进行分析。它用于了解一段时间内的模式,可以是每月、每年甚至每天。这种分析可以在股票价格预测或企业中看到。

神经网络——神经网络由多种算法组成,主要用于分析各种数据点之间的潜在关系。它的灵感来自生物神经网络。

[神经网络](https://res.cloudinary.com/practicaldev/image/fetch/s--pcqpaybG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/pjezap0rgnfr3oztqfzv.png)

循环神经网络(RNN)——如果我们有相关的数据点,那么我们使用 RNN。 RNN 使用内存的概念,在其中存储某些数据点。传统 RNN 的问题在于,随着数据点数量的增加,它们无法记住数据。比如说,我们要处理一段文本来做预测,RNN 可能从一开始就遗漏了重要信息。

[循环神经网络](https://res.cloudinary.com/practicaldev/image/fetch/s--GW60WeFy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/0d0yuq9ekf6v50cbcbog.png)

LSTM 是一种特殊类型的 RNN,它可以长期存储数据。它克服了梯度消失和梯度爆炸两个技术问题。 LSTM 模块由一个单元状态和 3 个门组成。细胞状态就像传送带,它允许信息以微小的变化线性流动。该模型确实具有删除或添加信息的能力,这是使用 3 个门完成的。大门有助于调节信息。但由于信息流是线性的,它使流动更容易。

[LSTM中的单元格](https://res.cloudinary.com/practicaldev/image/fetch/s--jkKCHgr9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/5jaadk4x4nyd54bauhr4.png)

LSTM 架构:

在 LSTM 中,有三个主要步骤。我们要么忘记,要么输入,要么输出。一个类比是新闻频道的工作方式。比方说,他们正在播出一桩命案,最初怀疑死因是中毒,但验尸报告出来后,死因竟然是头部受伤,有关信息中毒被“遗忘”了。

同样,如果有 3 个嫌疑人,然后是另一个嫌疑人。这个人被添加或“输入”。

最后,经过警方的调查,有一个主要嫌疑人,这个信息就会被“输出”。

为了执行这三个步骤,我们有 3 个门。让我们详细看看它们中的每一个:

1\。忘记门:

遗忘门负责删除信息。它删除不再需要分析的信息,并为下一个信息腾出空间。这有助于模型变得更有效率。

[输出门](https://res.cloudinary.com/practicaldev/image/fetch/s--nhIw-U9h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/93tt3wo4dm4dd6hm3epy.png)

这个门有 2 个输入,

  • ht_1:前一个单元格的隐藏状态

  • x_t:在特定步骤输入

这些输入乘以权重矩阵,然后添加一个偏差。在此之后,将 sigmoid 函数应用于计算值。 sigmoid 函数给出 0 到 1 之间的输出。这有助于模型决定要“忘记”哪些信息。如果输出为 0,则该单元格的信息被完全遗忘。类似地,如果输出为 1,则要记住整个单元格的信息。来自 sigmoid 函数的向量输出与细胞状态相乘。

2\。输入门:

顾名思义,此门用于向单元状态添加信息。这是它的结构,

[输入门](https://res.cloudinary.com/practicaldev/image/fetch/s--ZLnn-5gT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/57hsemr00h79zbmi32ua.png)

首先,需要添加的值使用 sigmoid 函数进行调节。输入仍然是 h_t-1 和 x_t。接下来,创建一个向量,其中包含要添加到单元状态的所有可能值。这是使用 tan h 函数完成的。 Tan 输出一个介于 -1 到 +1 之间的值。调节函数(sigmoid 函数)的值与创建的向量相乘。然后使用加法操作将有用信息添加到单元状态。

这使我们能够确保我们只有过滤和重要的信息。

3\。输出门:

此门用于使用当前可用的信息并显示最相关的输出。它看起来像这样:

[输出门](https://res.cloudinary.com/practicaldev/image/fetch/s--_KJhupzS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/0f3ix63mcvyc501sodzj.png)

将 tan h 函数应用于单元状态后,将创建一个向量。输出范围在 -1 和 +1 之间。 sigmoid 函数再次用于调节需要使用 h_t-1 和 x_t 从向量中输出的值。调节函数的值与向量相乘并作为输出发送。它也被发送到下一个单元格的隐藏状态。

LSTM 已被证明可以在序列预测中提供最先进的结果。它用于复杂的问题领域,如机器翻译、语音识别、文本生成等。我希望这能让你对 LSTM 模型的工作原理有一个基本的了解。

参考:

深度学习要点:长短期记忆简介

了解 LSTM 网络

LSTM 和 GRU 图解指南:逐步说明

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐