主页 topics 梯度下降算法 什么是梯度下降算法?
使用 watsonx.ai 应用梯度下降 订阅 AI 主题最新消息
包含云朵、饼图、象征符号图形的拼贴插图
什么是梯度下降算法?

梯度下降算法是一种优化算法,通常用于训练机器学习模型和神经网络。梯度下降算法可最大限度缩小预测结果与实际结果之间的误差,以便训练机器学习模型。

训练数据帮助这些模型随着时间的推移进行学习,梯度下降中的成本函数专门作为一个标尺,在每次参数更新迭代时衡量其准确性。在该函数接近或等于零之前,模型继续调整其参数以产生尽可能小的误差。在优化机器学习模型以提高准确性后,它们就可以作为人工智能 (AI) 和计算机科学应用场景中的强大工具。

IBM 被 Gartner 评为行业领导者

了解为何 IBM 被评为 2023 年 Gartner Magic Quadrant™ 云 AI 开发者服务领导者。

相关内容

在 Presto 上注册以获取电子书

梯度下降的工作方式

在我们深入研究梯度下降之前,回顾一下线性回归中的一些概念可能会有所帮助。您可能还记得以下直线斜率公式,即 y = mx + b,其中 m 表示斜率,b 是 y 轴上的截距。

您可能还记得如何在统计学中绘制散点图并找到最佳拟合直线,这需要使用均方误差公式计算实际输出和预测输出 (y-hat) 之间的误差。梯度下降算法的行为类似,但它基于凸函数。

起点只是我们评估性能的一个任意点。从这个起点,我们将找到导数(或斜率),然后可以使用切线观察斜率的陡度。将根据斜率更新参数 - 即权重和偏差。起点处的斜率将会更陡,但随着生成新的参数,陡度应逐渐减小,直至到达曲线上的最低点(称为收敛点)。

与在线性回归中查找最佳拟合直线类似,梯度下降的目标是最小化成本函数,即预测 y 与实际 y 之间的误差。为此,它需要使用两个数据点 - 方向和学习率。这些因素决定了将来迭代的偏导数计算,以使其逐渐达到局部或全局最小值(即收敛点)。

  • 学习率(也称为步长或 α)是达到最小值所需的步长。这通常是一个很小的值,并根据成本函数行为进行评估和更新。较高的学习率导致更大的步长,但存在超过最小值的风险。相反,较低的学习率具有较小的步长。虽然它具有更高精度的优点,但迭代次数影响整体效率,因为这需要更多时间和计算才能达到最小值。
  • 成本(或损失)函数测量当前位置的实际 y 与预测 y 之间的差异或误差。这会向机器学习模型提供反馈,使模型调整参数以最大限度减少误差并找到局部或全局最小值,从而提高模型的效率。模型不断迭代,沿着最陡的下降方向(或负梯度)移动,直到成本函数接近或等于零。此时,模型将停止学习。此外,虽然成本函数和损失函数被认为是同义词,但两者之间存在细微差别。值得注意的是,损失函数指的是一个训练样本的误差,而成本函数计算整个训练集的平均误差。
梯度下降类型

具有三种类型的梯度下降学习算法:批量梯度下降、随机梯度下降和小批量梯度下降。

批量梯度下降

批量梯度下降对训练集中的每个点的误差求和,仅在评估所有训练样本后才更新模型。这个过程称为训练周期。

虽然这种批处理提高了计算效率,但对于大型训练数据集来说,批量梯度下降算法可能仍然需要很长的处理时间,因为它仍然需要将所有数据存储到内存中。批量梯度下降通常还会产生稳定的误差梯度和收敛,但有时该收敛点并不是最理想的,找到的是局部最小值,而不是全局最小值。

随机梯度下降

随机梯度下降 (SGD) 为数据集中的每个样本运行一个训练周期,并每次更新一个训练样本的参数。由于您仅需保留一个训练样本,因此,更容易将其存储在内存中。虽然这些频繁的更新可以提供更多细节和更高速度,但与批量梯度下降相比,它可能会导致计算效率下降。它的频繁更新可能会导致嘈杂的梯度,但这也可能有助于避开局部最小值并找到全局最小值。

小批量梯度下降

小批量梯度下降结合了批量梯度下降和随机梯度下降概念。小批量梯度下降算法将训练数据集拆分为小批量,并对每个批次执行更新。这种方法兼顾了批量梯度下降的计算效率和随机梯度下降的速度。

梯度下降的挑战

虽然梯度下降是解决优化问题的最常见方法,但它确实面临一系列挑战。其中的一些挑战包括:

局部最小值和鞍点

对于凸优化问题,梯度下降可以很容易找到全局最小值,但随着非凸优化问题的出现,梯度下降可能很难找到全局最小值,即模型可以获得最佳结果的位置。

回想一下,在成本函数的斜率等于或接近零时,模型将停止学习。一些超出全局最小值的场景也可能会产生该斜率,即局部最小值和鞍点。局部最小值模拟全局最小值的形状,其中成本函数的斜率在当前点的两侧增加。然而,对于鞍点,负梯度仅存在于点的一侧,在一侧达到局部最大值,在另一侧达到局部最小值。它的名字灵感来自于马鞍。

嘈杂的梯度可以帮助梯度避开局部最小值和鞍点。

梯度消失和梯度爆炸

在更深的神经网络中,特别是递归神经网络,在使用梯度下降和反向传播训练模型时,我们还可能会遇到另外两个问题。

  • 梯度消失:在梯度太小时,将会发生这种情况。当我们在反向传播期间向后移动时,梯度继续变小,从而导致网络中的较早层比后面层的学习速度更慢。在发生这种情况时,将会更新权重参数,直到它们变得微不足道(即,变为 0),从而导致算法不再学习。
  • 梯度爆炸:在梯度太大时,将会发生这种情况,从而创建不稳定的模型。在这种情况下,模型权重将变得太大,并最终表示为 NaN。该问题的一种解决方案是利用降维技术,这可能有助于最大限度降低模型中的复杂性。
  •  
相关解决方案
AI 驱动的技术

从您的业务工作流程到 IT 运营,我们为您提供人工智能驱动的自动化。了解领先企业如何转型。

深入了解 AI 驱动的技术
资源 用于深度学习应用场景的高效分布式随机梯度下降算法

IBM Research 推出了一种分布式批量同步随机梯度下降算法,该算法允许聚合来自各个学习者的稀疏梯度。

在 R 中实施 XGBoost

使用 XGBoost 算法实施梯度提升决策树以执行分类任务。

在 Python 中实施 XGBoost

使用 Python 中的 XGBoost 算法来实施梯度增强决策树,从而执行分类任务。

采取后续步骤

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

深入了解 watsonx.ai 预约实时演示