68

我了解梯度下降的作用。基本上,它试图通过缓慢地沿着曲线向下移动来向局部最优解移动。我想了解计划梯度下降和牛顿法之间的实际区别是什么?

从 Wikipedia 中,我读到了这条短线“牛顿法使用曲率信息采取更直接的路线”。这在直觉上意味着什么?

4

5 回答 5

72

在局部最小值(或最大值)x处,目标函数的导数f消失:(f'(x) = 0假设足够平滑f)。

梯度下降试图x通过使用 的一阶导数的信息来找到这样的最小值f:它只是遵循从当前点开始的最陡下降。这就像在图形上滚动一个球,f直到它停止(同时忽略惯性)。

牛顿法试图通过用一个线性函数逼近找到一个x满足的点,然后显式地求解该函数的根(这称为牛顿求根法)。的根不一定是 的根,但在许多情况下它是一个很好的猜测(关于牛顿求根方法的维基百科文章有更多关于收敛标准的信息)。在逼近时,牛顿法利用了( 的曲率)。这意味着它对 的平滑度有更高的要求,但也意味着(通过使用更多信息)它往往收敛得更快。f'(x) = 0f'ggf'f'f''ff

于 2012-08-22T05:37:06.960 回答
13

简而言之,梯度下降您只需向您认为零的位置迈出一小步,然后重新计算;牛顿法,你一路走下去。

于 2016-02-05T22:41:02.757 回答
4

编辑 2017:原始链接已失效-但返回机器的方式仍然得到它:) https://web.archive.org/web/20151122203025/http://www.cs.colostate.edu/~anderson/cs545/讲座/week6day2/week6day2.pdf

这个 power point 的主要思想简单地解释了http://www.cs.colostate.edu/~anderson/cs545/Lectures/week6day2/week6day2.pdf

我希望这有帮助:)

于 2012-08-22T05:36:12.970 回答
2

在@Cheng 的回答的基础上,意识到因为牛顿法找到了函数的根,我们将牛顿法应用于f'()找到函数的最优值是有帮助的f()。因此,本例中牛顿法的更新规则为:

new_guess = old_guess - f'(old_guess)/f''(old_guess), 其中f''()是要优化的函数的曲率。

相比之下,梯度下降中的更新规则是:

new_guess = old_guess - f'(old_guess)*alpha,其中alpha表示步长。

从中可以大致看出牛顿法是如何利用函数的曲率f''()来增加或减少其更新的大小。

于 2021-11-09T17:29:41.370 回答
2

如果单纯比较梯度下降法和牛顿法,这两种方法的目的是不同的。

梯度下降用于找到(近似)局部最大值或最小值(x 使 min f(x) 或 max f(x))。而牛顿的方法是找到(近似)一个函数的根,即 x 使 f(x) = 0

从这个意义上说,它们用于解决不同的问题。但是,牛顿法也可以在优化的上下文中使用(GD 正在解决的领域)。因为找到最大值或最小值可以通过找到 f'(x) = 0 来接近,这正是牛顿方法的用途。

总之,可以在优化中使用两种方法:1)GD 和 2)find x so f'(x)=0 而牛顿法只是解决第二个问题的一种方法。

于 2020-04-23T10:22:12.067 回答