我了解梯度下降的作用。基本上,它试图通过缓慢地沿着曲线向下移动来向局部最优解移动。我想了解计划梯度下降和牛顿法之间的实际区别是什么?
从 Wikipedia 中,我读到了这条短线“牛顿法使用曲率信息采取更直接的路线”。这在直觉上意味着什么?
我了解梯度下降的作用。基本上,它试图通过缓慢地沿着曲线向下移动来向局部最优解移动。我想了解计划梯度下降和牛顿法之间的实际区别是什么?
从 Wikipedia 中,我读到了这条短线“牛顿法使用曲率信息采取更直接的路线”。这在直觉上意味着什么?
在局部最小值(或最大值)x
处,目标函数的导数f
消失:(f'(x) = 0
假设足够平滑f
)。
梯度下降试图x
通过使用 的一阶导数的信息来找到这样的最小值f
:它只是遵循从当前点开始的最陡下降。这就像在图形上滚动一个球,f
直到它停止(同时忽略惯性)。
牛顿法试图通过用一个线性函数逼近找到一个x
满足的点,然后显式地求解该函数的根(这称为牛顿求根法)。的根不一定是 的根,但在许多情况下它是一个很好的猜测(关于牛顿求根方法的维基百科文章有更多关于收敛标准的信息)。在逼近时,牛顿法利用了( 的曲率)。这意味着它对 的平滑度有更高的要求,但也意味着(通过使用更多信息)它往往收敛得更快。f'(x) = 0
f'
g
g
f'
f'
f''
f
f
简而言之,梯度下降您只需向您认为零的位置迈出一小步,然后重新计算;牛顿法,你一路走下去。
编辑 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
我希望这有帮助:)
在@Cheng 的回答的基础上,意识到因为牛顿法找到了函数的根,我们将牛顿法应用于f'()
找到函数的最优值是有帮助的f()
。因此,本例中牛顿法的更新规则为:
new_guess = old_guess - f'(old_guess)/f''(old_guess)
, 其中f''()
是要优化的函数的曲率。
相比之下,梯度下降中的更新规则是:
new_guess = old_guess - f'(old_guess)*alpha
,其中alpha
表示步长。
从中可以大致看出牛顿法是如何利用函数的曲率f''()
来增加或减少其更新的大小。
如果单纯比较梯度下降法和牛顿法,这两种方法的目的是不同的。
梯度下降用于找到(近似)局部最大值或最小值(x 使 min f(x) 或 max f(x))。而牛顿的方法是找到(近似)一个函数的根,即 x 使 f(x) = 0
从这个意义上说,它们用于解决不同的问题。但是,牛顿法也可以在优化的上下文中使用(GD 正在解决的领域)。因为找到最大值或最小值可以通过找到 f'(x) = 0 来接近,这正是牛顿方法的用途。
总之,可以在优化中使用两种方法:1)GD 和 2)find x so f'(x)=0 而牛顿法只是解决第二个问题的一种方法。