梯度下降是最小化给定函数的迭代方法。我们从解决方案的初始猜测开始,然后在该点获取函数的梯度。我们在梯度的负方向上逐步求解,并重复该过程。该算法最终将在梯度为零的地方收敛(对应于局部最小值)。所以你的工作是找出使损失函数最小化的 theta0 和 theta1 的值[例如最小二乘误差]。术语“收敛”意味着您达到了局部最小值,并且进一步的迭代不会影响参数的值,即 theta0 和 theta1 的值保持不变。让我们看一个例子 注意:假设它在这个解释的第一象限。

假设您必须最小化函数 f(x) [在您的情况下的成本函数]。为此,您需要找出使 f(x) 的函数值最小化的 x 值。这是使用梯度下降法找出 x 值的分步过程
- 您选择 x 的初始值。假设它在图中的 A 点。
- 您计算 f(x) 在 A 处相对于 x 的梯度。
- 这给出了函数在 A 点的斜率。由于函数在 A 处增加,因此将产生一个正值。
- 您从 x 的初始猜测中减去这个正值并更新 xie 的值
x = x - [Some positive value]
。这使 x 更接近 D [即最小值] 并降低了 f(x) [来自图] 的函数值。假设在第 1 次迭代之后,您到达了 B 点。
- 在 B 点,您重复步骤 4 中提到的相同过程并到达 C 点,最后到达 D 点。
- 在 D 点,因为它是局部最小值,所以当你计算梯度时,你得到 0 [或非常接近 0]。现在您尝试更新 x ie 的值
x = x - [0]
。您将获得相同的 x [或更接近前一个 x 的值]。这种情况称为“收敛”。上述步骤用于增加斜率,但同样适用于减小斜率。例如,G 点处的梯度会导致某个负值。当您更新 x 即x = x - [ negative value] = x - [ - some positive value] = x + some positive value
。这增加了 x 的值,并使 x 接近点 F [或接近最小值]。
有多种方法可以解决这种梯度下降。正如@mattnedrich 所说,两种基本方法是
使用固定的迭代次数 N,因为这个伪代码将是
iter = 0
while (iter < N) {
theta0 = theta0 - gradient with respect to theta0
theta1 = theta1 - gradient with respect to theta1
iter++
}
- 重复直到 theta0 和 theta1 的两个连续值几乎相同。@Gerwin 在另一个答案中给出了伪代码。
梯度下降是线性回归中最小化函数的方法之一。也有直接的解决办法。批处理(也称为正规方程)可用于在单个步骤中找出 theta0 和 theta1 的值。如果 X 是输入矩阵,y 是输出向量,theta 是您要计算的参数,那么对于平方误差方法,您可以使用此矩阵方程一步找到 theta 的值
theta = inverse(transpose (X)*X)*transpose(X)*y
但是由于这包含矩阵计算,当矩阵 X 的大小很大时,显然它比梯度下降的计算成本更高。我希望这可以回答您的问题。如果没有,请告诉我。