当我们有一个高度线性多项式用于拟合线性回归设置中的一组点时,为了防止过度拟合,我们使用正则化,并在成本函数中包含一个lambda参数。然后,此lambda用于更新梯度下降算法中的theta参数。
我的问题是我们如何计算这个lambda正则化参数?
答案 0 :(得分:46)
正则化参数(lambda)是模型的输入,因此您可能想知道的是如何选择 lambda的值。正则化参数可减少过度拟合,从而减少估计回归参数的方差;但是,它是以牺牲增加偏差为代价来实现的。增加λ会导致过度拟合,但偏差也会增大。所以真正的问题是“你估计你愿意容忍多少偏见?”
您可以采取的一种方法是随机对数据进行多次子采样,并查看估算值的变化情况。然后重复该过程以获得略大的lambda值,以查看它如何影响估计值的可变性。请记住,无论您决定哪种lambda值适合您的子采样数据,您都可以使用较小的值来在完整数据集上实现可比较的正则化。
答案 1 :(得分:24)
嗨!对那里直观和顶尖的数学方法的很好的解释。我只想添加一些特性,在没有解决问题的情况下,可以肯定有助于加快并找到一个良好的正则化超参数的过程的一致性。
我假设您正在讨论 L2 (ak"体重衰减")正则化,由 lambda 术语线性加权,并且您正在使用闭合形式Tikhonov等式(强烈推荐用于低维线性回归模型)或使用反向传播的梯度下降的某些变体来优化模型的权重即可。在这种情况下,您希望选择 lambda 的值,以提供最佳的泛化能力。
如果您能够使用Tikhonov方式使用您的模型(Andrew Ng表示在10k维度下,但此建议至少为5年)Wikipedia - determination of the Tikhonov factor提供了一个有趣的封闭形式解决方案,已被证明提供最佳值。但是这个解决方案可能会引发某种实现问题(时间复杂度/数值稳定性),我不知道,因为没有主流算法来执行它。这个2016 paper看起来非常有希望,如果你真的需要优化你的线性模型,可能值得一试。
在这种新的创新方法中,我们已经推导出一种迭代方法来解决一般的Tikhonov正则化问题,该问题收敛于无噪声解决方案,并不强烈依赖于λ的选择,但仍然避免了反演问题。
来自项目的GitHub README:
InverseProblem.invert(A, be, k, l) #this will invert your A matrix, where be is noisy be, k is the no. of iterations, and lambda is your dampening effect (best set to 1)
本部分的所有链接均来自Michael Nielsen的神奇网络书#34;神经网络和深度学习",推荐讲座!
对于这种方法,似乎更不用说:成本函数通常是非凸的,优化是以数字方式执行的,模型的性能是通过某种形式的交叉验证来衡量的(参见Overfitting and Regularization }和why does regularization help reduce overfitting如果你没有足够的那个)。但即使在交叉验证时,尼尔森也提出了一些建议:你可能想看看this detailed explanation关于L2正则化如何提供权重衰减效应,但总结是它与样本数n
,因此在计算具有L2项的梯度下降方程时,
像往常一样使用反向传播,然后将
(λ/n)*w
添加到所有权重项的偏导数中。
他的结论是,当想要使用不同数量的样本进行类似的正则化效应时,必须按比例更改lambda:
我们需要修改正则化参数。原因是因为训练集的大小
n
已从n=1000
更改为n=50000
,这会改变权重衰减因子1−learning_rate*(λ/n)
。如果我们继续使用λ=0.1
意味着减少重量会减少,因此正规化效果会更少。我们通过更改为λ=5.0
进行补偿。
这仅在将相同模型应用于不同数量的相同数据时才有用,但我认为它打开了关于它应该如何工作的一些直觉的大门,更重要的是,通过允许你来加速超参数化过程在较小的子集中微调lambda然后按比例放大。
为了选择准确的值,他在how to choose a neural network's hyperparameters的结论中建议纯粹的经验方法:从1开始,然后逐步乘以&除以10,直到找到正确的数量级,然后做一个局部的在该地区内搜索。在this SE related question的评论中,用户Brian Borchers也提出了一种非常有名的方法,可能对本地搜索有用:
λ=0
开始,并在某个地区内少量增加,对模型进行快速培训和验证并绘制两种损失函数λ=0
,然后随着正则化而增加,因为防止模型最佳拟合训练数据正是正则化所做的。λ=0
开始,然后减小,然后在某个时刻再次开始增加(编辑:这假设设置能够过度拟合λ=0
,即该模型具有足够的功率,并且没有其他正规化手段被大量应用)。λ
的最佳值可能大约在CV损失函数的最小值附近,它也可能稍微取决于训练损失函数的外观。查看图片中可能的(但不是唯一的)表示:而不是"模型复杂性"你应该将x轴解释为λ
在右边为零并向左增加。希望这有帮助!干杯,
安德烈
答案 2 :(得分:7)
上述交叉验证是机器学习中经常使用的方法。然而,选择可靠和安全的正则化参数仍然是数学研究的热门话题。 如果您需要一些想法(并且可以访问体面的大学图书馆),您可以查看本文: http://www.sciencedirect.com/science/article/pii/S0378475411000607