故意过拟合神经网络

从技术角度讲,给定一个足够复杂的神经网络和足够多的时间,是否总是有可能将任何数据集过拟合到训练误差为0的程度?


回答:

神经网络是通用逼近器,这意味着只要存在从输入到输出的确定性映射f,就总会存在一组参数(对于足够大的网络)使得误差可以任意接近最小可能误差,但是

  • 如果数据集是无限的(它是一个分布),那么可获得的最小误差(称为贝叶斯风险)可能大于零,而是某个值e(基本上是不同类别/值“重叠”的度量)。
  • 如果映射f是非确定性的,那么贝叶斯风险e同样不为零(这是数学上表达一个给定点可以具有“多个”值,具有给定概率的方式)。
  • 任意接近并不意味着最小。因此,即使最小误差为零,也不意味着你只需要“足够大”的网络就能达到零,你可能总是会得到一个非常小的epsilon(但你可以一直减少它)。例如,一个用于分类任务的网络,具有sigmoid/softmax输出,永远无法获得最小的对数损失(交叉熵损失),因为你总是可以将你的激活值“更接近1”或“更接近0”,但你无法达到这些值中的任何一个。

因此,从数学角度来看,答案是,从实践角度来看——在有限训练集和确定性映射的假设下——答案是

特别是当你询问关于分类准确率的问题,并且你有一个有限的数据集,每个数据点都有唯一标签时,很容易手动构建一个神经网络,使其具有100%的准确率。然而,这并不意味着最小可能的损失(如上所述)。因此,从优化角度来看,你并没有获得“零误差”。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注