我知道梯度下降法的作用。基本上,它试图通过缓慢地向下移动曲线来达到局部最优解。我试图理解平面梯度下降法和牛顿方法的实际区别是什么?
我在维基百科上看到这样一句话: “牛顿的方法利用曲率信息采取更直接的路线。”直觉上这意味着什么?
编辑2017 : 原始链接已死 但是回到过去的方式仍然可以得到它:)安德森/cs545/Lecentures/week 6day2/week 6day2.pdf”rel = “ nofollow noReferrer”> https://web.archive.org/web/20151122203025/http://www.cs.colostate.edu/~anderson/cs545/lectures/week6day2/week6day2.pdf
这个幻灯片的主要思想简单地解释了 http://www.cs.colostate.edu/~anderson/cs545/Lectures/week6day2/week6day2.pdf
我希望这能有所帮助:)
在局部最小(或最大) x时,目标函数 f的导数消失: f'(x) = 0(假设 f足够平滑)。
x
f
f'(x) = 0
梯度下降法试图通过使用来自 f的一阶导数的信息来找到这样一个最小的 x: 它只是遵循当前点的梯度下降法。这就像是沿着 f的图形滚动一个球,直到它停下来(同时忽略惯性)。
牛顿的方法试图找到一个满足 f'(x) = 0的点 x,它用一个线性函数 g近似 f',然后显式地求该函数的根(这被称为牛顿的寻根方法)。g的根不一定是 f'的根,但在许多情况下它是一个很好的猜测(f'(x) = 00有更多关于收敛标准的信息)。牛顿的方法在逼近 f'的同时,利用了 f''(f的曲率)。这意味着它对 f的平滑性有更高的要求,但也意味着(通过使用更多的信息)它通常收敛得更快。
g
f'
f''
简单地说,梯度下降法你只需要向你认为的0的位置迈出一小步,然后重新计算,牛顿的方法,你可以一直走到那里。
如果你只是简单地比较梯度下降法和牛顿方法,这两种方法的目的是不同的。
梯度下降法用来求(近似)局部极大值或极小值(x 表示最小 f (x)或最大 f (x))。而牛顿的方法是找到(近似)一个函数的根,即 x 使 f (x) = 0
从这个意义上说,它们被用来解决不同的问题。然而,牛顿的方法也可以用于优化环境(GD 正在解决的领域)。因为寻找极大值或极小值可以通过寻找 f’(x) = 0来实现,这正是牛顿方法的用途。
总之,在优化中可以使用两种方法: 1) GD 和2)求 x,因此 f’(x) = 0 牛顿的方法只是解决第二个问题的一种方法。
在@Cheng 的答案的基础上,有助于我们认识到,因为牛顿方法找到了函数的根,我们将把牛顿方法应用到 f'(),以便找到 f()的最优值。因此,在这种情况下,牛顿方法的更新规则是:
f'()
f()
new_guess = old_guess - f'(old_guess)/f''(old_guess),其中 f''()是要优化的函数的曲率。
new_guess = old_guess - f'(old_guess)/f''(old_guess)
f''()
相比之下,梯度下降法的更新规则是:
new_guess = old_guess - f'(old_guess)*alpha,其中 alpha表示步长。
new_guess = old_guess - f'(old_guess)*alpha
alpha
从这里你可以大致看到牛顿的方法是如何使用函数的曲率 f''()来增加或减少其更新的大小。