这似乎是一个愚蠢的问题,但我就是想不出一个合理的答案。
据说正则化可以帮助我们获得简单模型而不是复杂模型,以避免过度拟合。但是对于线性分类问题:
f(x) = Wx
模型的复杂性在某种程度上是明确的:它是线性的,不是二次的或更复杂的。那么为什么我们还需要对参数进行正则化呢?为什么在这种情况下我们更喜欢较小的权重?
这似乎是一个愚蠢的问题,但我就是想不出一个合理的答案。
据说正则化可以帮助我们获得简单模型而不是复杂模型,以避免过度拟合。但是对于线性分类问题:
f(x) = Wx
模型的复杂性在某种程度上是明确的:它是线性的,不是二次的或更复杂的。那么为什么我们还需要对参数进行正则化呢?为什么在这种情况下我们更喜欢较小的权重?
随着您增加要训练模型的样本数量或降低模型的复杂性,对模型进行正则化的需求将越来越少。但是,在没有(或具有非常小的正则化效果)的情况下训练模型所需的示例数量会随着参数的数量以及可能在模型中继承的一些其他因素而呈指数级增加。
由于在大多数机器学习问题中,我们没有所需数量的训练样本或模型复杂度很大,我们必须使用正则化来避免或减少过度拟合的可能性。直观地说,正则化的工作方式是将惩罚项引入到损失函数的argmin∑L(desired,predictionFunction(Wx))
位置L
,该损失函数计算模型的预测与期望目标的偏差程度。所以新的损失函数变成了argmin∑L(desired,predictionFunction(Wx)) + lambda*reg(w)
wherereg
是一种正则化(例如squared L2
),lambda
是一个控制正则化效果的系数。然后,自然地,在最小化成本函数的同时,权重向量被限制为具有较小的平方长度(例如squared L2 norm
) 并缩小到零。这是因为权重向量的平方长度越大,损失越大。因此,权重向量还需要补偿在优化运行时降低模型的损失。
现在想象一下,如果你去掉正则化项(lambda = 0)。然后模型参数可以自由具有任何值,因此无论您使用线性模型还是非线性模型,权重向量的平方长度都可以增长。这为模型的复杂性增加了另一个维度(除了参数的数量),优化过程可能会找到可以与训练数据点完全匹配的权重向量。但是,当暴露于看不见的(验证或测试)数据集时,模型将无法很好地泛化,因为它已经过度拟合到训练数据。
使用正则化的主要原因是为了克服过度拟合的问题。当您的模型很好地拟合数据(即也捕获所有噪声)时,正则化会惩罚权重。您可以阅读更多内容并通过参考中的实现细节获得数学直觉