[机器学习]梯度上升 & 梯度下降

1,984 阅读6分钟

好的,这是一个非常核心的机器学习概念组。我们来一步步清晰地解释它们。

1. 什么是梯度?

核心比喻: 想象你在一座崎岖的山上,蒙着眼睛,但你想以最快的速度下到山脚。你用什么方法?你会用脚感受一下周围,找到那个“最陡峭”的方向,然后往那个方向迈一步。这个“最陡峭的方向”,就是梯度的方向。

数学定义: 梯度是一个向量(一个有方向和大小的量),它表示一个多元函数在某一点处,方向导数最大的方向。也就是说,它指向函数值增长最快的方向。

  • 表示符号: 通常用倒三角符号 ∇ 表示。例如,函数 f(x, y) 在点 (a, b) 的梯度是 ∇f(a, b)
  • 向量的分量: 这个向量的每个分量,是函数对每个自变量的偏导数
    • 对于 f(x, y),其梯度是 ( ∂f/∂x, ∂f/∂y )
  • 大小: 梯度向量的模(长度)表示了该点坡度有多“陡”。

在机器学习中的意义: 在机器学习中,我们通常有一个损失函数 J(θ),它衡量模型预测值与真实值之间的差距。模型的参数是 θ (可以是一组参数,如 wb)。我们的目标是找到使 J(θ) 最小的参数 θ

  • 梯度的方向J(θ) 增长最快的方向。
  • 负梯度的方向J(θ) 下降最快的方向。

因此,梯度为我们提供了优化目标函数的“路线图”。


2. 什么是梯度下降?

梯度下降是一种利用梯度信息来最小化损失函数的优化算法

继续用下山的比喻: 我们的目标是走到山脚(最小化损失函数 J(θ))。

  1. 初始化:随机选择一个起点(随机初始化模型参数 θ)。
  2. 计算梯度:在当前位置,计算损失函数的梯度 ∇J(θ)。这个梯度指向“上山”最陡的方向。
  3. 朝反方向走:因为我们想下山,所以我们朝着梯度的反方向(即负梯度方向)移动一小步。更新规则为: θ_new = θ_old - η * ∇J(θ_old) 其中 η学习率,决定了这一步迈多大。
  4. 重复:不断重复步骤2和3,直到收敛(比如,损失函数的变化非常小,或者达到了最大迭代次数)。

关键点:

  • 目的:优化(最小化)一个单一的目标函数。
  • 应用场景:主要用于训练单个模型的参数,例如线性回归、逻辑回归、神经网络。
  • 核心思想参数空间中的迭代优化。我们不断调整模型自身的参数,让模型变得更好。

3. 什么是梯度提升?

梯度提升是一种用于构建集成模型的机器学习框架,它通过组合多个(通常是简单的)弱模型来创建一个强大的模型。

核心思想: 它不像梯度下降那样去优化一个模型的参数,而是通过增量式地添加新的模型来改进整体预测。

比喻: 这次你不是一个人下山,而是带了一个团队。你(作为总模型)先走一步,然后让一个队友(弱模型1)来纠正你犯的错误。接着,你再让第二个队友(弱模型2)来纠正你们俩剩下的错误,如此往复。

工作流程:

  1. 初始模型:用一个简单的模型(比如一个常数,所有预测值的平均值)作为起点。
  2. 计算残差/伪残差:对于每一个数据点,计算当前模型的预测值与真实值之间的负梯度(这个负梯度在很多情况下,就等同于残差或类似残差的东西)。这个负梯度表示了当前模型在哪些点上“错得最离谱”,以及应该如何修正。
  3. 拟合新模型:训练一个新的弱模型(比如一棵决策树)来学习这个负梯度。也就是说,这个新模型的目标不是预测原始答案,而是预测当前模型的错误
  4. 更新模型:将新训练的弱模型加到总模型上,从而修正错误。 F_new(x) = F_old(x) + η * h(x) 其中 F 是总模型,h(x) 是新训练的弱模型,η 是一个缩小的学习率,防止过拟合。
  5. 重复:重复步骤2-4,直到达到指定的弱模型数量或错误不再减少。

关键点:

  • 目的:构建一个强大的集成模型
  • 应用场景:用于集成学习,特别是与决策树结合(即GBDT)。
  • 核心思想:在函数空间中的迭代优化。我们不断往集成模型中添加新的函数(弱模型),来逼近目标函数。

4. 在机器学习中,梯度提升决策树是什么?

梯度提升决策树梯度提升框架与决策树作为弱学习器的结合。它是目前最强大、最流行的机器学习算法之一。

简单来说:GBDT = Gradient Boosting + Decision Trees

工作原理:

  1. 第一棵树学习如何预测目标值。
  2. 第二棵树学习如何预测第一棵树的残差(预测值与真实值的差距)。
  3. 第三棵树学习如何预测第二棵树修正后仍存在的残差
  4. ... 以此类推。

最终的总预测是所有树的预测值的加权和。

为什么GBDT如此强大?

  • 能力强:决策树本身是非常灵活的非线性模型,能够捕捉复杂的数据模式。
  • 精度高:通过Boosting方法,一系列“弱”的树(通常是浅层树)组合成一个非常“强”的模型,极大地提升了预测精度。
  • 鲁棒性:对异常值和数据缩放不敏感。

常见的GBDT实现库:

  • XGBoost:最早普及GBDT的库,以速度和性能著称。
  • LightGBM:由微软开发,比XGBoost更快,内存消耗更少。
  • CatBoost:由Yandex开发,擅长处理类别型特征。

总结与对比

特性梯度下降梯度提升
优化对象一个模型参数 (θ)整个集成模型函数形式 (F(x))
核心操作更新参数:θ = θ - η * ∇J添加新函数:F = F + η * h
比喻一个人不断调整姿势下山一个团队,后面的人不断纠正前面人的错误
在GBDT中的体现用于训练每一棵独立的决策树的内部参数(虽然决策树通常不以梯度下降方式训练)用于指导整个集成模型的构建过程,决定如何添加下一棵树

希望这个解释能帮助你清晰地理解这些核心概念!