在您的序列预测问题中充分利用 LSTM

长短期记忆(LSTM)循环神经网络是一种强大的深度学习类型,非常适合序列预测问题。

使用 LSTM 时可能存在的一个担忧是,模型的复杂性是否正在提高模型的技能,或者实际上是否导致比更简单的模型更低的技能。

在本文中,您将发现一些简单的实验,您可以在序列预测问题上运行这些实验,以确保充分利用 LSTM。

阅读本文后,你将了解:

  • 如何测试您的模型是否利用了输入数据的顺序依赖性。
  • 如何测试您的模型是否利用了 LSTM 模型中的记忆。
  • 如何测试您的模型在拟合模型时是否利用了 BPTT。

开始您的项目,阅读我的新书《Python 长短期记忆网络》,其中包含分步教程和所有示例的Python源代码文件。

让我们开始吧。

Get the Most out of LSTMs on Your Sequence Prediction Problem

在您的序列预测问题中充分利用 LSTM
照片由 DoD News 提供,保留部分权利。

LSTM 的 3 种能力

LSTM 循环神经网络具有一些关键能力,这些能力赋予了该方法在各种序列预测问题上的强大功能。

在不深入研究 LSTM 理论的情况下,我们可以总结 LSTM 的一些离散行为,这些行为可以在我们的模型中进行配置。

  • 顺序依赖性。序列预测问题需要观测值之间的排序,而更简单的监督学习问题则不需要,并且可以在训练和预测之前随机化这种顺序。通过随机化观测值的顺序,可以将序列预测问题转化为更简单的形式。
  • 记忆。LSTM 在输入序列的观测值之间具有内部记忆,而像多层感知机这样的简单神经网络则没有。LSTM 可以通过在每个输入观测值后重置内部状态来丢失这种记忆。
  • BPTT。循环神经网络使用一种训练算法,该算法可以估计输入序列所有时间步上的权重更新方向,而其他类型的网络则限于单个样本(在两种情况下都不包括对输入批次的平均)。通过使用长度为一的序列,LSTM 可以在梯度估计中忽略来自先前时间步的误差贡献。

这三种能力以及它们可以配置为更简单形式的能力,为您可以进行的 3 个实验提供了基础,以准确了解您在序列预测问题上能够并且正在利用 LSTM 的哪些属性。

需要 LSTM 帮助进行序列预测吗?

参加我的免费7天电子邮件课程,了解6种不同的LSTM架构(附代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

1.您是否利用了顺序依赖性?

序列预测问题的一个关键特征是观测值之间存在顺序依赖性。

也就是说,观测值的顺序很重要。

假设:在序列预测问题上进行预测时,观测值的顺序预计很重要。

您可以通过开发一个性能基线来检查此假设是否成立,该基线使用仅以先前观测值为输入的模型,并随机打乱训练和测试数据集。

这可以通过多种方式实现。两个示例实现包括:

  • 一个带有随机打乱的训练和测试集的多层感知机(MLP)。
  • 一个带有随机打乱的训练和测试集,并在每个样本后更新和重置状态的 LSTM(批大小为 1)。

测试:如果顺序依赖性对预测问题很重要,那么利用输入序列中观测值之间顺序以及跨输入序列顺序的模型,其性能应优于不利用顺序的模型。

2.您是否利用了 LSTM 记忆?

LSTM 的一个关键能力是它们可以在长输入序列中进行记忆。

也就是说,每个记忆单元都维护一个内部状态,可以将其视为用于进行预测的局部变量。

假设:模型的内部状态预计对模型技能很重要。

您可以通过开发一个性能基线来检查此假设是否成立,该基线模型从一个样本到下一个样本没有任何记忆。

这可以通过在每个观测值后重置 LSTM 的内部状态来实现。

测试:如果内部记忆对预测问题很重要,那么具有输入序列中观测值之间记忆的模型,其性能应优于没有记忆的模型。

3.您是否利用了反向传播算法(BPTT)?

循环神经网络训练方式的关键是反向传播算法(BPTT)。

该算法允许根据序列中的所有观测值(或截断 BPTT 的情况下的一个子集)来估计权重更新的梯度。

假设:在序列预测问题上,BPTT 权重更新算法预计对模型技能很重要。

您可以通过开发一个性能基线来检查此假设是否成立,在该基线中,梯度估计基于单个时间步。

这可以通过分割输入序列来实现,使得每个观测值代表一个单独的输入序列。这与何时安排权重更新以及何时重置内部状态无关。

测试:如果 BPTT 对预测问题很重要,那么估计多个时间步权重更新梯度的模型,其性能应优于使用单个时间步的模型。

总结

在本文中,您了解了 LSTM 的三个关键能力,这些能力赋予了该技术强大的功能,以及如何测试这些属性在您自己的序列预测问题上的表现。

具体来说:

  • 如何测试您的模型是否利用了输入数据的顺序依赖性。
  • 如何测试您的模型是否利用了 LSTM 模型中的记忆。
  • 如何测试您的模型在拟合模型时是否利用了 BPTT。

你有什么问题吗?
请在下面的评论中发布您的问题,我将尽力回答。

立即开发用于序列预测的 LSTM!

Long Short-Term Memory Networks with Python

在几分钟内开发您自己的 LSTM 模型。

...只需几行python代码

在我的新电子书中探索如何实现
使用 Python 构建长短期记忆网络

它提供关于以下主题的自学教程
CNN LSTM、编码器-解码器 LSTM、生成模型、数据准备、进行预测等等...

最终将 LSTM 循环神经网络引入。
您的序列预测项目。

跳过学术理论。只看结果。

查看内容

“充分利用 LSTM 解决序列预测问题”的 4 条回复

  1. sourabh bose 2017年8月12日 上午1:43 #

    嘿,这是一篇很棒的文章。我想知道,第 1 点和第 3 点有什么区别?它们似乎都需要使用单个输入训练神经网络。谢谢。

    • Jason Brownlee 2017年8月12日 上午6:51 #

      很好的问题。

      1. 您可以拥有所有时间步并随机打乱它们,看看顺序是否重要。
      2. 您可以去掉时间步,看看随时间学习是否重要。

  2. Shival Gupta 2017年8月13日 上午1:30 #

    非常有趣的文章。我一直在关注这个博客并学到了很多东西。我合作的一些学生也提出了一些很好的问题,我试图回答它们(http://shivalgupta.com/how-college-students-are-starting-up-with-ai/)。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。