趋近智
AdaBoost通过关注自身错误来提升性能。它通过增加错误分类样本的权重来实现这一点,迫使序列中的下一个学习器更细致地关注这些样本。这种重新加权机制很有效,但它代表了一种解决错误修正问题的具体方法。
梯度提升退后一步,重新审视了整个过程。它不是问“我们如何调整样本权重来修正错误?”,而是提出了一个更根本的问题:“我们如何通过顺序地向集成模型添加新模型来直接最小化给定的损失函数?”这改变了我们看待问题的角度,从一个特定算法转向了一个通用优化框架,这是一个很大的进步。
其核心是,训练一个机器学习模型是一个优化问题。我们想要找到一个模型,我们称之为 ,它能最小化损失函数 ,该函数衡量我们的预测 和真实目标值 之间的差异。
提升算法以累加、分阶段的方式构建最终模型 。我们从一个简单的初始模型 开始,并迭代地添加新的弱学习器 来改进它:
任何提升算法的核心问题是,如何在每一步找到要添加的 最好 新弱学习器 。这正是梯度提升引入其主要创新之处。它将这个问题视为一种梯度下降形式,但不是在你可能熟悉的参数空间中。相反,它在 函数空间 中执行梯度下降。
考虑标准梯度下降。为了最小化关于一组参数 的损失函数 ,我们计算梯度 并向相反方向迈出小步:
梯度提升应用相同的逻辑。在每个阶段 ,我们有当前模型 。我们想找到一个新函数,即我们的弱学习器 ,当它添加到 时,能尽可能地降低总损失。降低损失最直接的方法是将我们的新函数指向损失函数的负梯度方向。
对于每个数据点 ,我们计算关于前一阶段预测 的损失函数的负梯度。这些被称为 伪残差:
新的弱学习器 随后不是针对原始目标值 进行训练,而是针对这些伪残差 进行训练。实际上,弱学习器被训练来预测来自前一个模型的错误方向。
这可能看起来很抽象,所以让我们用一个标准回归问题来具体说明。回归问题的一个常用损失函数是均方误差 (MSE),或者更精确地说,为了数学计算方便,是平方误差的一半:
现在,我们来计算伪残差,方法是对这个损失函数关于模型的预测 求偏导:
因此负梯度是:
这正是 残差:真实值与当前预测之间的差异。对于MSE损失,将新模型拟合到“负梯度”的抽象想法简化为非常直观的将新模型拟合到“剩余误差”的想法。
这种联系使得梯度提升如此有能力。它提供了一个统一的数学框架,概括了误差拟合的想法。尽管AdaBoost使用特定的重新加权方案,但梯度提升对梯度的使用使我们能够插入任何可微分的损失函数,直接根据当前问题(无论是回归、分类还是排序)调整算法。
AdaBoost和梯度提升中顺序学习过程的比较。AdaBoost调整样本权重以关注错误,而梯度提升训练新模型来预测损失函数的梯度,从而概括了错误修正的想法。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造