44

当我们有一个高阶线性多项式用于拟合线性回归设置中的一组点时,为了防止过度拟合,我们使用正则化,并在成本函数中包含一个 lambda 参数。然后使用这个 lambda 更新梯度下降算法中的 theta 参数。

我的问题是我们如何计算这个 lambda 正则化参数?

4

3 回答 3

51

正则化参数 (lambda) 是模型的输入,因此您可能想知道如何选择lambda 的值。正则化参数减少了过度拟合,从而减少了估计回归参数的方差;但是,这样做的代价是增加了您的估计的偏差。增加 lambda 会减少过度拟合,但也会产生更大的偏差。所以真正的问题是“你愿意在你的估计中容忍多少偏差?”

您可以采取的一种方法是对数据进行多次随机二次抽样,然后查看估计值的变化。然后重复该过程以获得稍大的 lambda 值,以查看它如何影响估计的可变性。请记住,无论您决定适合您的子采样数据的任何 lambda 值,您都可以使用较小的值来在整个数据集上实现可比较的正则化。

于 2012-08-29T16:24:35.987 回答
31

封闭形式(TIKHONOV)与梯度下降

你好!对那里的直观和一流的数学方法进行了很好的解释。我只是想添加一些不“解决问题”的特殊性,它们肯定有助于加快并为寻找良好正则化超参数的过程提供一些一致性。

我假设您正在谈论L2(又称“权重衰减”)正则化,由lambda项线性加权,并且您正在使用封闭形式的Tikhonov方程优化模型的权重(强烈推荐用于低维线性回归模型),或带有反向传播的梯度下降的一些变体。在这种情况下,您希望为lambda选择提供最佳泛化能力的值。


封闭式 (TIKHONOV)

如果您能够使用您的模型采用 Tikhonov 方式(Andrew Ng说在 10k 维度以下,但这个建议至少有 5 年的历史)维基百科 - 确定 Tikhonov 因子提供了一个有趣的封闭形式解决方案,已被证明提供最优值。但是这个解决方案可能会引发一些我不知道的实现问题(时间复杂度/数值稳定性),因为没有主流算法来执行它。不过,这篇2016 年的论文看起来很有前途,如果您真的必须将线性模型优化到最佳状态,可能值得一试。

  • 为了更快的原型实现,这个2015 Python 包似乎迭代地处理它,你可以让它优化然后提取 lambda 的最终值:

在这种新的创新方法中,我们推导出了一种迭代方法来解决一般的 Tikhonov 正则化问题,该方法收敛到无噪声解决方案,不强烈依赖于 lambda 的选择,但仍然避免了反演问题。

并且来自项目的GitHub READMEInverseProblem.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 的惊人在线书籍《神经网络与深度学习》,推荐阅读!

对于这种方法,似乎更不用说:成本函数通常是非凸的,优化是在数值上执行的,模型的性能是通过某种形式的交叉验证来衡量的(参见过度拟合和正则化以及为什么正则化如果你还没有足够的,帮助减少过度拟合)。但即使在交叉验证时,尼尔森也提出了一些建议:你可能想看看这个关于 L2 正则化如何提供权重衰减效果的详细解释 ,但总结是它与样本数量成反比n,所以在计算带有 L2 项的梯度下降方程时,

像往常一样使用反向传播,然后添加(λ/n)*w到所有权重项的偏导数。

他的结论是,当想要具有不同样本数量的类似正则化效果时,必须按比例改变 lambda:

我们需要修改正则化参数。原因是因为n训练集的大小从n=1000变为n=50000,这改变了权重衰减因子1−learning_rate*(λ/n)。如果我们继续使用λ=0.1这将意味着更少的权重衰减,因此更少的正则化效果。我们通过更改为 来补偿λ=5.0

这仅在将相同模型应用于不同数量的相同数据时才有用,但我认为它打开了一些关于它应该如何工作的直觉的大门,更重要的是,通过允许您微调 lambda 来加速超参数化过程在较小的子集中,然后扩大规模。

为了选择准确的值,他在关于如何选择神经网络的超参数的结论中建议纯经验方法:从 1 开始,然后逐步乘以和除以 10,直到找到合适的数量级,然后在该数量级内进行局部搜索地区。在这个 SE 相关问题的评论中,用户 Brian Borchers 还提出了一种非常知名的方法,该方法可能对本地搜索有用:

  1. 选取训练和验证集的一小部分(以便能够在合理的时间内完成其中的许多)
  2. 在某个区域内开始λ=0并少量增加,对模型执行快速训练和验证并绘制两个损失函数
  3. 你会观察到三件事:
  4. CV 损失函数将始终高于训练损失函数,因为您的模型专门针对训练数据进行了优化(编辑:一段时间后,我看到了一个 MNIST 案例,其中添加 L2 有助于 CV 损失比训练损失下降得更快,直到收敛。可能是由于数据的荒谬一致性和次优的超参数化)。
  5. 训练损失函数将具有最小值λ=0,然后随着正则化而增加,因为阻止模型最佳拟合训练数据正是正则化所做的。
  6. CV 损失函数将从 开始高λ=0,然后减小,然后在某个点再次开始增加(编辑:这假设设置能够过度拟合λ=0,即模型具有足够的功率并且没有大量应用其他正则化方法)。
  7. 的最佳值λ可能在 CV 损失函数的最小值附近,它也可能在一定程度上取决于训练损失函数的样子。请参阅图片以获取可能的(但不是唯一的)表示:而不是“模型复杂性”,您应该将 x 轴解释λ右侧为零并向左增加

L2 诊断:代替

希望这可以帮助!干杯,
安德烈斯

于 2017-07-10T03:43:34.443 回答
7

上述交叉验证是机器学习中经常使用的一种方法。然而,选择一个可靠和安全的正则化参数仍然是数学研究的一个非常热门的话题。如果你需要一些想法(并且可以访问一个体面的大学图书馆),你可以看看这篇论文: http ://www.sciencedirect.com/science/article/pii/S0378475411000607

于 2013-10-18T16:29:02.290 回答