Boosting:为什么将学习率称为正则化参数?

机器算法验证 机器学习 数据挖掘 预测模型 助推 过拟合
2022-02-07 09:58:52

Gradient Boosting 中的学习率参数()缩小了添加到系列中的每个新基础模型(通常是浅树)的贡献。它被证明可以显着提高测试集的准确性,这是可以理解的,因为使用更小的步骤,可以更精确地获得损失函数的最小值。 ν[0,1]

我不明白为什么学习率被认为是正则化参数引用统计学习的要素,第 10.12.1 节,第 364 页:

控制树的数量并不是唯一可能的正则化策略。与岭回归和神经网络一样,也可以使用收缩技术。的较小值 (更多收缩)导致相同迭代次数的较大训练风险。因此,都控制了训练数据的预测风险。νMνM

正则化意味着“避免过度拟合的方法”,因此很明显迭代次数在这方面至关重要(太高会导致过度拟合)。但:MM

的较小值(更多收缩)导致相同迭代次数的较大训练风险。νM

只是意味着在学习率低的情况下,需要更多的迭代才能在训练集上达到相同的精度。那么这与过度拟合有什么关系呢?

3个回答

假设您试图通过迭代次数来最小化目标函数。当前值为在给定的数据集中,没有“不可减少的错误”,您可以将训练数据的损失降至现在你有两种方法可以做到这一点。100.00.0

  • 第一种方式是“大学习率”和少量迭代。假设您可以在每次迭代中将损失减少,那么在次迭代中,您可以将损失减少到10.0100.0

  • 第二种方式是“学习速度慢”但迭代次数更多。假设您可以在每次迭代中将损失减少次迭代才能使训练数据损失 0.0。1.0100

现在想一想:这两种方法是否相等?如果不是,在优化上下文机器学习上下文中哪个更好?

优化文献中,这两种方法是相同的。因为它们都收敛到最优解另一方面,在机器学习中,它们并不相等。因为在大多数情况下,我们不会将训练集的损失设为,这会导致过度拟合。0

我们可以将第一种方法视为“粗略网格搜索”,将第二种方法视为“精细网格搜索”。第二种方法通常效果更好,但需要更多的计算能力来进行更多的迭代。

为了防止过度拟合,我们可以做不同的事情,第一种方法是限制迭代次数,假设我们使用第一种方法,我们将迭代次数限制为 5。最后,训练数据的损失为 . (顺便说一句,从优化的角度来看,这会很奇怪,这意味着我们将来可以改进我们的解决方案/它没有收敛,但我们选择不这样做。在优化中,通常我们显式地向目标函数添加约束或惩罚项,但通常不限制迭代次数。)50

另一方面,我们也可以使用第二种方法:如果我们将学习率设置得很小,比如每次迭代减少损失,虽然我们有大量的迭代,比如次迭代,但我们仍然没有将损失最小化到0.15000.0

这就是为什么小学习率有点等于“更多正则化”的原因。

这是一个在实验数据上使用不同学习率的例子xgboost请检查以下两个链接以了解其含义etan_iterations含义。

树助推器的参数

XGBoost 控制过拟合

对于相同数量的迭代,比如说小学习率是“欠拟合”(或模型具有“高偏差”),大学习率是“过拟合”(或模型具有“高方差”)。50

XGBoost 模型中更改学习率 ETA 的示例

PS。欠拟合的证据是训练集和测试集都有很大的误差,训练和测试的误差曲线彼此接近。过拟合的标志是训练集的误差很低,而测试集的误差很高,两条曲线相距很远。

使用牛顿法,您可以通过减去损失的梯度除以损失的曲率来更新参数。在梯度下降优化中,您通过减去损失的梯度乘以学习率来更新参数。换句话说,使用学习率的倒数代替真实损失曲率。

让我们将问题损失定义为定义好模型与坏模型的损失。这是真正的损失。让我们将优化损失定义为您的更新规则实际最小化的损失。

根据定义,正则化参数是优化损失中的任何项,但不是问题损失中的任何项。由于学习率在优化损失中就像一个额外的二次项,但与问题损失无关,它是一个正则化参数。

证明这种观点的其他正则化示例是:

  • 权重衰减,就像优化损失中的一个额外项,惩罚大权重,
  • 惩罚复杂模型的术语,以及
  • 惩罚特征之间相关性的术语。

总结一下:

  • (较小的学习率,相同的迭代次数)->“更多的正则化”
  • (相同的学习率,更少的迭代次数)->“更多的正则化”

简而言之,正则化效果来自于迭代不足,无法跟上学习率带来的搜索技巧。