如果你只能预测线性测试数据,那么神经网络有什么意义呢?

数据挖掘 机器学习 深度学习
2021-10-14 14:48:48

所以,我已经尝试了https://keras.io/api/layers/activations/上列出的所有不同的激活函数我确实可以很好地逼近训练范围内的任何非线性函数 - 但对于训练范围之外的任何数据,我有一个仅限于线性函数的模型。例如,我尝试逼近 sinus 函数并在训练范围内取得了很好的结果,但在此范围之外留下了线性函数。我使用了一个具有 3 个隐藏 ReLU 层(每层 16 个单元)和一个仿射输出层的网络。这是训练范围内的良好近似值: 在此处输入图像描述

以及训练范围之外的预测:

在此处输入图像描述

当试图逼近任何其他非线性函数时,同样会附加。这是不幸的,因为您宁愿希望您的模型能够很好地泛化而不是仅在训练数据上表现良好:(我当然可以明确使用正弦作为激活函数,但这似乎很可笑(也许是一个强词,但你明白了) 神经网络的“自学习”。

这似乎让神经网络在我看来非常有限——我错过了什么吗?

我真的很感谢你的时间!

2个回答

神经网络可以在其训练数据之外进行泛化并成功预测。这种能力受到过度拟合的阻碍,网络会记住训练数据并且在未见过的数据上表现不佳。

与神经网络面临的任何其他问题一样,网络具有适合问题数据的归纳偏差是关键。这个 SO 答案

每个机器学习算法都具有在它所看到的训练数据之外进行泛化的能力,它具有某种类型的归纳偏差,这是模型为学习目标函数和泛化到训练数据之外所做的假设。

例如,卷积网络由于其空间局部性归纳偏差而在图像数据中表现良好。

您的示例中的主要问题是您正在建模的函数是周期性的,而您使用的激活函数缺乏周期性归纳偏差。在 NeurIPS 2020 上发表的文章Neural Networks Fail to Learn Periodic Functions and How to Fix It中研究了这个问题。摘自:

[...] 我们通过实验证明和证明标准激活函数,例如 ReLU、tanh、sigmoid 及其变体,都无法学会推断简单的周期函数。我们假设这是由于它们缺乏“周期性”归纳偏差。为了解决这个问题,我们提出了一个新的激活,即,x+sin2(x),它实现了学习周期函数所需的周期性归纳偏差,同时保持了基于 ReLU 的激活的有利优化特性。

免责声明:我对神经网络的了解非常有限,所以我的回答仅基于一般的 ML 原则。希望有人会提供更明智的答案。

在监督学习中,假设训练集是数据的代表性样本,即整个样本空间的随机子集。从这个角度来看,很容易解释为什么你的模型没有将函数泛化到训练范围之外:模型只需要与训练集相同范围内的点。你我都知道这个函数是周期性的R,但模型无法知道这一点。例如,具有相同训练数据的函数可以完美地是“如果 x<20 则 sin(x) else 0”。所以你的结论被夸大了:不是你只能预测线性数据,而是你至少需要提供一个有代表性的训练样本。

关于神经网络的泛化能力,我至少知道另外两个有趣的问题:

恕我直言,根据答案,这两个问题似乎颇具争议。还可能值得注意的是,在这两个问题中都有一个答案(这里那里)指出了目标函数需要在一个紧凑的子集上定义的理论限制Rn.

另一个模糊相关的评论:一种与一些 [many? 最多?我不知道] 预测问题是明确地训练模型根据过去的数据预测下一个点(或未来的某个点)。以此类推,如果任务的目标是预测特定范围之外的点,那么训练数据应该由表示一系列值的实例组成,以便模型可以学习预测序列中的下一个点。这种设计在提供具有代表性的样本作为训练集方面更有意义。我的猜测是周期函数更可能以这种方式正确近似,但我没有测试这个想法。