为什么需要在机器学习问题中使用正则化?

Why there is the need of using regularization in machine learning problems?

这似乎是一个愚蠢的问题,但我就是想不出一个合理的答案。

据说正则化可以帮助我们在复杂模型上获得简单模型,避免过拟合。但是对于线性分类问题:

f(x) = Wx

模型的复杂性在某种程度上是特定的:它是线性的,而不是二次的或更复杂的东西。那么为什么我们还需要对参数进行正则化呢?为什么在这种情况下我们更喜欢较小的权重?

当您增加要用于训练模型的样本数量或降低模型的复杂性时,对模型进行正则化的需求将越来越少。然而,在没有(或具有非常小的正则化效果)的情况下训练模型所需的示例数量随着参数数量和模型中可能继承的一些其他因素的增加而呈 [超] 指数增长。

由于在大多数机器学习问题中,我们没有所需数量的训练样本模型复杂度很大我们必须使用正则化来避免或减少over-fitting 的可能性。直观地说,正则化的工作方式是它向 argmin∑L(desired,predictionFunction(Wx)) 引入了一个惩罚项,其中 L 是一个损失函数,用于计算模型的预测偏离预期目标的程度。所以新的损失函数变为argmin∑L(desired,predictionFunction(Wx)) + lambda*reg(w),其中reg是一种正则化(例如squared L2),lambda是控制正则化效果的系数。然后,自然地,在最小化成本函数的同时,权重向量被限制为具有较小的平方长度(例如 squared L2 norm)并向零收缩。这是因为权重向量的平方长度越大,损失就越大。因此,权重向量还需要在优化 运行.

时补偿降低模型的损失

现在想象一下,如果您删除正则化项 (lambda = 0)。然后模型参数可以自由具有任何值,因此无论您使用线性模型还是 non-linear 模型,权重向量的平方长度都可以增长。这为模型的复杂性增加了另一个维度(除了参数数量之外),并且优化过程可能会找到可以与训练数据点完全匹配的权重向量。然而,当暴露于看不见的(验证或测试)数据集时,模型将无法很好地泛化,因为它对训练数据有 over-fitted。

正则化用于机器学习模型以应对过度拟合的问题,即当训练误差和测试误差之间的差异过大时。对于像逻辑回归这样的线性模型,该模型可能在您的训练数据上表现非常好,并且它试图以如此高的精度预测每个数据点。这种情况会导致数据过度拟合,因为您的模型可能也在拟合异常值,这会给您的模型带来巨大麻烦。

这个link显示了带有l2正则化器的逻辑回归方程,它有一个lambda参数,有助于减少损失部分的影响,但lambda的值不应该太高,因为那样会导致欠拟合,最终你的模型会变得愚蠢。

使用正则化的主要原因是为了克服过度拟合的问题。当您的模型很好地拟合数据时,即也捕获所有噪声时,正则化会惩罚权重。您可以阅读更多内容并通过 Reference

中的实施细节获得数学直觉