过拟合参数大小与模型复杂度的关系

人工智能 过拟合
2021-11-17 07:47:14

我正在阅读 Bishop 的《模式识别和机器学习》一书,特别是他介绍多项式回归模型的介绍。简而言之,假设我们生成10使用函数的数据点sin(2πx)并为每个观察添加一些高斯随机噪声。现在我们假装不知道生成函数并尝试将多项式模型拟合到这些点。

随着我们增加多项式的次数,它从欠拟合(d=1,2) 到过拟合 (d=10)。作者注意到的一件事是多项式的次数越高,系数(参数)的值就越高。这是我的第一个疑问:为什么系数的大小会随着多项式次数的增加而增加?为什么参数的大小与过拟合有关?

其次,他指出,即使是学位10,如果我们得到足够多的数据点(比如100),则高次多项式将不再过度拟合数据,应该具有相对较好的泛化性能。第二个疑问:为什么会这样?

2个回答

关于您的第一个问题,这是特定于域/任务的,并非总是如此。我对你的情况发生这种情况的猜测(你没有指定你的域,所以我假设它有时在外面(1,1)) 是高阶多项式比低阶多项式增长得快得多,因此它可能落入系数必须很大才能处理它的陷阱。(例如,如果x=2.0然后25x2=x732x2=x7)

现在回答为什么更多的点会导致更少的过度拟合,这完全是因为你有更多的方程。您的损失通常是某种形式的跨点和预测的平均距离。给定N点我总能找到N1完全适合它的阶多项式。我将提供一种形式,而不是正式的证明,您可以在其中轻松地从N (xi,yi)

f(x)=i=1Nyij=1j !=iN(xxj)(xixj)

如您所见,对于每个xi它会将总和中的所有项归零,除了乘积变为 1 的项f(xi)=yi通过施工。因此,添加更多点将阻止您正在学习的任何优化过程直接精确地解决每个点,而是尝试找到一种最能概括每个点的算法。

系数的大小可能只会增加到一定程度的多项式。这是由于您正在使用sin(2πx), 如果你使用sin(4πx)那么系数的大小将增加到更多的多项式次数。sin(x)表示为系列:

sin(x)=x1!x33!+x55!....

在你的情况下x2πx所以为了近似它,高阶项必须具有非常高的系数,分母阶乘项不能抵消(尽管只能达到某个点),因此对于像这样的小订单N=10(假设我们在系列中有偶数项,因为我们不处理数学确定性,所以偶数项会以某种方式抵消或被抵消),10!=3628800然而(2π)10=95410558大约 26 倍。所以你看到直到某一点,系数值必须增加sin(2πx). 我认为这回答了你的两个问题。

谈到你的第二个问题,一般来说,我们可以松散地说,你使用的 ML 算法执行多项式回归,这意味着通过调整参数来拟合曲线,使得模型生成的点之间的距离对于给定的输入, 尽可能接近真实数据

所以问题是为什么增加数据点可以提供更好的泛化?大多数人没有提到的是,现在你对函数本身有了更好的概括,我的意思是,如果我给你 2 分(根据奈奎斯特采样定理,定义一个sin一定频率的波)从sin曲线,除非您事先知道,否则您无法判断它是否是从sin,但如果我在同一时间段内(正弦波)给你 100 分,你可以很容易地猜出数据必须是从sin. 同样,当数据点的数量较少时,ML 算法无法猜测数据是从哪里生成的,并尝试根据其最佳猜测(最小损失)来拟合模型,但如果你给出更多的点,它会做出更好的猜测,从而更好地概括。

像这样想,你想用橡皮筋绕着别针做一个圆圈。你能用4-5个针做吗?您至少需要一定数量的针脚才能使它看起来像一个圆圈。这里的橡皮筋是你的模型。