📜  理解 LSTM 网络

📅  最后修改于: 2022-05-13 01:58:08.917000             🧑  作者: Mango

理解 LSTM 网络

本文讨论了传统 RNN 的问题,即梯度消失和爆炸,并以长短期记忆 (LSTM) 的形式提供了对这些问题的便捷解决方案。 Long Short-Term Memory 是循环神经网络 (RNN) 架构的高级版本,旨在比传统 RNN 更精确地对时间序列及其远程依赖项进行建模。主要亮点包括基本 LSTM 单元的内部设计、引入 LSTM 架构的变化,以及极少需求的 LSTM 应用。它还对 LSTM 和 GRU 进行了比较。文章最后列出了 LSTM 网络的缺点,并简要介绍了即将在现实世界中迅速取代 LSTM 的基于注意力的模型。

介绍:

LSTM 网络是循环神经网络 (RNN) 的扩展,主要用于处理 RNN 失败的情况。谈到 RNN,它是一个网络,它通过考虑先前的输出(反馈)并在其内存中存储一小段时间(短期记忆)来处理当前输入。在其各种应用中,最受欢迎的是语音处理、非马尔可夫控制和音乐创作领域。然而,RNN 也有缺点。首先,它无法长时间存储信息。有时,需要参考很久以前存储的某些信息来预测当前输出。但是 RNN 绝对无法处理这种“长期依赖”。其次,没有更好的控制上下文的哪一部分需要继续推进,以及有多少过去需要“忘记”。 RNN 的其他问题是梯度爆炸和消失(稍后解释),这些问题在网络训练过程中通过回溯发生。因此,长短期记忆(LSTM)被带入了画面。它的设计使得梯度消失问题几乎完全消除,而训练模型保持不变。使用 LSTM 桥接某些问题中的长时间滞后,其中它们还处理噪声、分布式表示和连续值。使用 LSTM,无需像隐马尔可夫模型 (HMM) 中要求的那样预先保留有限数量的状态。 LSTM 为我们提供了大量参数,例如学习率、输入和输出偏差。因此,无需精细调整。使用 LSTM 将更新每个权重的复杂度降低到 O(1),类似于时间反向传播 (BPTT),这是一个优势。

爆炸和消失梯度:

在网络的训练过程中,主要目标是将训练数据通过它发送时在输出中观察到的损失(在错误或成本方面)最小化。我们计算梯度,即相对于一组特定权重的损失,相应地调整权重并重复此过程,直到我们获得损失最小的最佳权重集。这就是回溯的概念。有时,梯度几乎可以忽略不计。必须注意,层的梯度取决于连续层中的某些组件。如果其中一些分量很小(小于 1),则得到的结果,即梯度,将更小。这被称为缩放效应。当这个梯度与学习率相乘时,学习率本身就是一个介于 0.1-0.001 之间的小值,它会得到一个更小的值。因此,权重的变化非常小,产生与以前几乎相同的输出。类似地,如果由于分量值较大而导致梯度值非常大,则权重会更新为超出最佳值的值。这被称为梯度爆炸问题。为了避免这种缩放效应,神经网络单元以缩放因子固定为 1 的方式重新构建。然后通过几个门控单元对细胞进行富集,称为 LSTM。



建筑学:

RNN 和 LSTM 的架构之间的基本区别在于 LSTM 的隐藏层是门控单元或门控单元。它由四层组成,它们以某种方式相互交互,以产生该单元格的输出以及单元格状态。然后将这两件事传递到下一个隐藏层。与只有 tanh 单个神经网络层的 RNN 不同,LSTM 由三个逻辑 sigmoid 门和一个 tanh 层组成。引入门是为了限制通过细胞的信息。它们确定下一个单元将需要哪一部分信息,哪一部分将被丢弃。输出通常在 0-1 的范围内,其中“0”表示“全部拒绝”,“1”表示“包括全部”。

LSTM 的隐藏层:

每个 LSTM 单元有三个输入h_{t-1}  , C_{t-1}  x_t  和两个输出h_t  C_t  .对于给定的时间 t, h_t  是隐藏状态, C_t  是细胞状态或记忆, x_t  是当前数据点或输入。第一个 sigmoid 层有两个输入—— h_{t-1}  x_t  在哪里h_{t-1}  是前一个单元格的隐藏状态。它被称为遗忘门,因为它的输出选择要包含的前一个单元的信息量。输出是 [0,1] 中的一个数字,它与之前的细胞状态相乘(逐点) C_{t-1}  .

传统的 LSTM:



第二个 sigmoid 层是输入门,它决定将哪些新信息添加到单元格中。它需要两个输入h_{t-1}  x_t  . tanh 层创建一个向量C_t  新的候选值。这两层共同决定了要存储在细胞状态中的信息。他们的逐点乘法( i_t ? C_t )  告诉我们要添加到细胞状态的信息量。然后将结果与遗忘门的结果乘以先前的单元格状态相加( f_t* C_{t-1} )  产生当前的细胞状态C_t  .接下来,使用 sigmoid 和 tanh 层计算单元格的输出。 sigmoid 层决定单元状态的哪一部分将出现在输出中,而 tanh 层在 [-1,1] 的范围内移动输出。两层的结果进行逐点乘法以产生单元格的输出 ht。

变化:

随着 LSTM 的日益普及,人们对传统的 LSTM 架构进行了各种更改,以简化单元的内部设计,使其以更有效的方式工作并降低计算复杂度。 Gers 和 Schmidhuber 引入了窥视孔连接,这使得门层能够随时了解细胞状态。一些 LSTM 还使用耦合输入和遗忘门,而不是两个单独的门,这有助于同时做出两个决定。另一个变化是使用门控循环单元 (GRU),它通过减少门的数量来提高设计的复杂性。它使用单元状态和隐藏状态的组合,以及一个已经遗忘的更新门,输入门合并到其中。

LSTM(图-A)、DLSTM(图-B)、LSTMP(图-C)和DLSTMP(图-D)

  1. 图 A 表示基本 LSTM 网络的样子。这里只显示了输入层和输出层之间的一层 LSTM。
  2. 图-B 表示深度 LSTM,它在输入和输出之间包括许多 LSTM 层。优点是输入到网络的输入值不仅要经过几个 LSTM 层,而且还会在一个 LSTM 单元内随时间传播。因此,参数在多个层中分布良好。这导致在每个时间步骤中进行彻底的输入过程。
  3. 图 C 表示带有循环投影层的 LSTM,其中循环连接从投影层到 LSTM 层输入。该架构旨在降低标准 LSTM RNN 的高学习计算复杂度 (O(N))。
  4. 图-D 表示具有循环投影层的深度 LSTM,该层由多个 LSTM 层组成,其中每一层都有自己的投影层。增加的深度在内存过大的情况下非常有用。增加深度可以防止模型过度拟合,因为网络的输入需要经过许多非线性函数。

GRU 与 LSTM

尽管与 LSTM 非常相似,但 GRU 从未如此流行。但什么是 GRU? GRU 代表门控循环单元。顾名思义,这些由 Cho 提出的循环单元还提供了门控机制,以有效和自适应地捕获不同时间尺度的依赖关系。他们有一个更新门和一个重置门。前者负责选择要继承的知识,而后者位于两个连续的循环单元之间,并决定需要忘记多少信息。

在时间t激活
h_t^j = (1 - z_t^j)h_{t-1}^j + z_t^j*\~h_t^j

更新门:

z_t^j = \sigma(W_zx_t + U_zh_{t-1})^j



候选人激活:

\~h_t^j = tanh(Wx_t + U(r_t \otimes h_{t-1}))^j

重置门:

r_t^j = \sigma(W_rx_t + U_rh_{t-1})^j

GRU 的另一个显着方面是它们不以任何方式存储单元状态,因此,它们无法调节下一个单元暴露的内存内容量。相反,LSTM 调节包含在单元中的新信息的数量。另一方面,当计算新的候选激活时,GRU 控制来自前一个激活的信息流,但不独立控制添加的候选激活的数量(控制通过更新门绑定)。

应用:

LSTM 模型在实际应用之前需要使用训练数据集进行训练。下面讨论了一些最苛刻的应用程序:

  1. 语言建模或文本生成,涉及在输入单词序列时计算单词。语言模型可以在字符级别、n-gram 级别、句子级别甚至段落级别进行操作。
  2. 图像处理,涉及对图片进行分析并将其结果总结为一个句子。为此,需要有一个包含大量图片及其相应描述性标题的数据集。已经训练过的模型用于预测数据集中存在的图像特征。这是照片数据。然后以这样一种方式处理数据集,即只有最具暗示性的词才会出现在其中。这是文本数据。使用这两种类型的数据,我们尝试拟合模型。该模型的工作是通过获取模型先前预测的输入词以及图像,一次一个词地为图片生成一个描述性句子。
  3. 语音和手写识别
  4. 音乐生成与文本生成非常相似,其中 LSTM 通过分析作为输入的给定音符的组合来预测音符而不是文本。
  5. 语言翻译涉及将一种语言的序列映射到另一种语言的序列。与图像处理类似,首先清理包含短语及其翻译的数据集,然后仅使用其中的一部分来训练模型。使用编码器-解码器 LSTM 模型,该模型首先将输入序列转换为其向量表示(编码),然后将其输出为其翻译版本。

缺点:

俗话说,这个世界上的一切都有其优点和缺点,LSTMs也有一些缺点,讨论如下:

  1. LSTM 之所以流行,是因为它们可以解决梯度消失的问题。但事实证明,他们未能完全删除它。问题在于数据仍然必须从一个单元格移动到另一个单元格以进行评估。此外,随着附加功能(例如忘记门)被带入图片,单元现在变得非常复杂。
  2. 他们需要大量资源和时间来接受培训并为实际应用做好准备。从技术角度来说,它们需要高内存带宽,因为系统通常无法提供每个单元中存在的线性层。因此,在硬件方面,LSTM 变得非常低效。
  3. 随着数据挖掘的兴起,开发人员正在寻找一种可以比 LSTM 更长时间地记住过去信息的模型。这种模型的灵感来源是人类习惯将给定的信息分成小部分以便于记忆。
  4. LSTM 受到不同随机权重初始化的影响,因此其行为与前馈神经网络非常相似。他们更喜欢小权重初始化。
  5. LSTM 容易出现过拟合,并且很难应用 dropout 算法来遏制这个问题。 Dropout 是一种正则化方法,在训练网络时,LSTM 单元的输入和循环连接被概率性地排除在激活和权重更新之外。