在这里,看看: 您可以确切地看到训练数据的结束位置。训练数据从变为。1
我使用Keras和具有tanh激活功能的1-100-100-2密集网络。我根据p和q这两个值计算出的结果为p / q。这样,我仅使用小于1的值就可以实现任何大小的数字。
请注意,我仍然是该领域的初学者,所以请放轻松。
在这里,看看: 您可以确切地看到训练数据的结束位置。训练数据从变为。1
我使用Keras和具有tanh激活功能的1-100-100-2密集网络。我根据p和q这两个值计算出的结果为p / q。这样,我仅使用小于1的值就可以实现任何大小的数字。
请注意,我仍然是该领域的初学者,所以请放轻松。
Answers:
您正在使用前馈网络;其他答案是正确的,即FFNN在训练数据范围之外的推算方面并不出色。
但是,由于数据具有周期性的质量,因此该问题可能适合使用LSTM建模。LSTM是在序列上运行的各种神经网络单元,它们对之前“看到”的内容具有“记忆”。本书章节的摘要表明,LSTM方法在周期性问题上取得了成功。
在这种情况下,训练数据将是一个元组序列,并且需要为某些n和i索引一些新输入x i + 1 … x i + n做出准确的预测增加顺序。每个输入序列的长度,它们覆盖的间隔的宽度以及它们的间距取决于您。凭直觉,我希望一个覆盖1个周期的规则网格是一个不错的起点,训练序列应覆盖广泛的值范围,而不是局限于一定的间隔。
(Jimenez-Guarneros,Magdiel和Gomez-Gil,Pilar和Fonseca-Delgado,Rigoberto和Ramirez-Cortes,Manuel和Alarcon-Aquino,Vicente,“使用LSTM神经网络对正弦函数进行的长期预测”,《自然》-混合智能系统的设计灵感)
如果您想做的是学习像这样的简单周期函数,那么您可以考虑使用高斯过程。GP允许您通过指定适当的协方差函数来在一定程度上增强您的领域知识;在这个例子中,由于您知道数据是周期性的,因此可以选择一个周期性的核,然后模型将推断出该结构。在这里,我试图拟合潮汐高度数据,所以我知道它具有周期性的结构。因为我使用的是周期性结构,所以模型可以正确地(或多或少)推断该周期性。如果您想了解神经网络,那么OFC并不是很重要,但是与手工设计功能相比,这可能是一种更好的方法。顺便说一句,神经网络和gp在理论上是紧密相关的,
GP并不总是有用的,因为与神经网络不同,它们很难扩展到大型数据集和深度网络,但是如果您对这样的低维问题感兴趣,它们可能会更快,更可靠。
(在图片中,黑点是训练数据,红色是目标;您可以看到,即使它不能完全正确地显示,模型也会大致学习周期性。彩色带是模型的置信区间预测)
机器学习算法-包括神经网络-可以学习近似任意函数,但只能在训练数据密度足够大的区间内进行。
基于统计的机器学习算法在执行插值时最有效,它们预测的值接近或介于训练示例之间。
在训练数据之外,您希望进行推断。但是,没有简单的方法可以实现这一目标。神经网络永远不会通过分析来学习函数,只能通过统计信息来学习-几乎所有监督学习的ML技术都是如此。给定足够的示例(以及模型中的自由参数),更高级的算法可以任意接近所选函数,但仍只会在提供的训练数据范围内实现。
网络(或其他ML)在训练数据范围之外的行为方式将取决于其体系结构,包括所使用的激活功能。
您采用了错误的方法,使用此方法无法解决问题。
有几种解决问题的方法。我将通过功能工程建议最明显的一种。不用将时间作为线性特征,而是将其作为模数T = 1的余数。例如,t = 0.2、1.2和2.2都将成为特征t1 = 0.1等。只要T大于波的周期,这将起作用。将此东西插入网中,看看它是如何工作的。
功能工程被低估了。AI / ML中存在这种趋势,销售人员声称您将所有输入都丢弃到了网络中,并且以某种方式可以弄清楚如何处理它们。当然可以,正如您在示例中看到的那样,但是它很容易分解。这是一个很好的例子,表明即使在最简单的情况下,构建良好的功能也很重要。
另外,我希望您意识到这是要素工程的最原始的例子。只是为了让您了解您可以使用它做什么。