如何让我的神经网络更好地预测正弦波?
您正在使用前馈网络;其他答案是正确的,即 FFNN 在超出训练数据范围的推断方面并不出色。
但是,由于数据具有周期性质量,因此该问题可能适合使用 LSTM 建模。LSTM 是对序列进行操作的各种神经网络单元,并且对他们之前“看到”的内容有“记忆”。本书章节的摘要表明,LSTM 方法在周期性问题上取得了一定的成功。
在这种情况下,训练数据将是一个元组序列,任务是对一些索引了一些增加的序列。每个输入序列的长度、它们覆盖的间隔宽度以及它们的间距都由您决定。直观地说,我希望一个覆盖 1 个周期的常规网格是一个很好的起点,训练序列覆盖范围广泛的值,而不是限制在某个区间。
(Jimenez-Guarneros、Magdiel 和 Gomez-Gil、Pilar 和 Fonseca-Delgado、Rigoberto 和 Ramirez-Cortes、Manuel 和 Alarcon-Aquino、Vicente,“使用 LSTM 神经网络对正弦函数进行长期预测”,在Nature-混合智能系统的灵感设计)
如果您想做的是学习像这样的简单周期函数,那么您可以考虑使用高斯过程。GP 允许您通过指定适当的协方差函数在一定程度上强化您的领域知识;在这个例子中,由于你知道数据是周期性的,你可以选择一个周期性的内核,那么模型会外推这个结构。你可以在图中看到一个例子;在这里,我试图拟合潮汐高度数据,所以我知道它具有周期性结构。因为我使用的是周期性结构,所以模型正确地推断了这种周期性(或多或少)。OFC 如果你想学习神经网络,这并不重要,但这可能是比手工工程特征更好的方法。顺便说一句,神经网络和 gp 在理论上是密切相关的,
GP 并不总是有用,因为与神经网络不同,它们很难扩展到大型数据集和深度网络,但如果您对此类低维问题感兴趣,它们可能会更快、更可靠。
(在图片中,黑点是训练数据,红色是目标;你可以看到,即使它没有完全正确,模型也大致学习了周期性。彩色带是模型的置信区间预言)
机器学习算法——包括神经网络——可以学习逼近任意函数,但仅限于训练数据密度足够的区间。
基于统计的机器学习算法在执行插值时效果最佳 - 预测接近或介于训练示例之间的值。
在您的训练数据之外,您希望进行外推。但是没有简单的方法可以实现这一目标。神经网络永远不会通过分析来学习函数,只能通过统计近似地学习 - 这对于几乎所有监督学习 ML 技术都是如此。给定足够多的示例(以及模型中的自由参数),更高级的算法可以任意接近所选函数,但仍只会在提供的训练数据范围内这样做。
网络(或其他 ML)在训练数据范围之外的行为方式将取决于其架构,包括使用的激活函数。
让机器学习算法分析预测函数的唯一方法是在模型的假设中构建一些东西。例如(也许是微不足道的),您可以创建与输入的各种函数相等的特征,例如。网络 - 或者更简单的线性回归 - 将学习关联最接近的函数的预测值。