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

标签 machine-learning statistics classification mathematical-optimization regularized

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

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

f(x) = Wx

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

最佳答案

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

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

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

关于machine-learning - 为什么在机器学习问题中需要使用正则化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791340/

相关文章:

python - 使用 Pandas 叠加多个直方图

java - Weka java spreadsubsample 过滤器

performance - Fisher 判别计算时间

machine-learning - 在 Tensorflow 中将数据分成批处理进行分类

python - 神经网络中的 SciPy 优化警告

performance - 在 R 中交叉制表两个大量逻辑向量的最快方法

python - 图像噪声与图像文本匹配

statistics - "smooth out"数据值的可视化算法

python - 使用 dill 库保存和加载 neupy 算法可以在同一时间段返回不同的预测吗?

machine-learning - 网络上是否有任何有用的数据集可用于数据挖掘?