梯度下降算法详解

梯度下降算法是机器学习中用于优化模型参数的一种常用方法。本文将深入探讨梯度下降算法的基本原理和应用。

梯度下降算法简介

想象站在一个山坡上,想要尽快到达山底。会环顾四周,思考朝哪个方向迈出小步,以便尽快下山。这就是梯度下降算法的核心思想:在每一步选择最佳的方向和步长,以最快速度接近目标。

梯度下降优化算法的核心

梯度下降是一种迭代求解器,它不总是给出精确解。在目标函数不可解的情况下,迭代求解器被用来获得近似解,目的是最小化目标函数。梯度下降的基本思想是选择合适的步长(也称为学习率),以便能够接近精确解。学习率基本上控制下山时的步长大小。

梯度下降的更新规则如下:

参数 = 参数 -学习率* 梯度

反复计算这个公式,直到收敛。

从简单的机器学习模型开始

以线性回归模型为例。假设有一组数据点和一个在二维空间中的直线。如果绘制这些点并尝试画一条穿过这些点的直线,它将如下所示:

直线的方程是 Y = mX + b,其中 m 是直线的斜率,b 是 Y 轴上的截距。当进行预测时,取一个数据输入 X 并做出猜测。称这个猜测为 Y_predict。

成本/损失函数的概念

损失函数计算单个训练样本的错误。成本函数是所有训练样本损失函数的平均值。在这里,这两个术语可以互换使用。如果想评估机器学习算法在大型数据集上的表现,所做的就是取所有错误的总和。

这是特定模型的总错误,由描述该直线的 m 和 b 值决定。目标是最小化这个损失。希望得到最低的错误。这意味着希望得到最低的 m 和 b 值以获得最低的错误。

上述成本函数等同于 Y = f(x) = X^2。如果在笛卡尔坐标系上绘制 Y = X^2,它将如下所示:

假设考虑 Q 作为当前数据点。必须找到在点 O 处的最小值。然后需要两件事:更新的方向和更新的步长。找到最小值的方法是通过取导数(也称为梯度)。曲线在任何点的梯度由该点处切线的梯度给出。

曲线在每个点的梯度是不同的。仔细看看上面的图。P、Q、R、S 和 O 点的梯度是不同的。所以,查看导数的最常见方式是:函数图像的切线斜率和函数的变化率。

在这里,目标是找到一条具有最小错误的直线。这意味着最小化一个函数实际上意味着找到产生最低 Y 的 X 值。因此,能够计算这个函数的斜率(导数)的想法告诉如何搜索并找到最小值。

参数 m 和 b 可以稍微改变如下:

m = m - 学习率 * (2 * X * (Y_predict - Y)) b = b - 学习率 * (2 * (Y_predict - Y))

想要知道如何改变 y = mx + b 中的 m 值以减少错误。因此,下一步是找到具有最低错误的 m 和 b 值。这可以通过找到这个成本/损失函数的导数(梯度)来完成,以知道向哪个方向移动。

在这里,将使用以下两个微积分规则来找到导数:幂规则和链规则。

假设一次只考虑一个错误。因此,将去掉求和符号。

J(m,b) = (Error)^2

对 m 求 J 的导数,并应用幂规则和链规则:

应用链规则是因为 J 是 Error 的函数,而 Error 是 m 和 b 的函数。

类似地,对 b 求 J 的导数:

如上所述,X 是输入数据,b 是常数,Y 是输出。常数的导数是零,因为常数不变化,而导数描述了变化。因此,b 和 Y 的导数是零。

根据幂规则,可以去掉 2,因为它只是告诉学习率的大小。所以它并不重要。

(Error * X) 决定方向,因为斜率/导数包含方向信息。学习率决定步长/更新量。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485