牛顿法会被归类为梯度下降法吗?

Posted

技术标签:

【中文标题】牛顿法会被归类为梯度下降法吗?【英文标题】:Would Newton's method classify as a Gradient Descent Method? 【发布时间】:2020-05-04 23:33:22 【问题描述】:

可能是一个很简单的问题要回答,但我只是想更清楚一点。从现有文献和What is the difference between Gradient Descent and Newton's Gradient Descent? 中的讨论来看,这两种方法都涉及计算导数,然后向最小值移动。在简单梯度下降法的情况下,我们只计算一阶导数;在牛顿法中,我们计算二阶导数以及 hessian,并应用于向量。此外,Newton/s方法中向量的更新可能并不总是在(-ive)梯度的方向上。

此外,对于给定的函数 f(x),两种方法都试图找到满足 f'(x)=0 的最小值;在梯度下降法中,目标是 argmin f(x),而在牛顿法中,目标是 f'(x) = 0。另一个区别是停止准则,在梯度下降法中是 f'(x) = 0,而在牛顿法中,f(x)=0。

基于上述论点,是否可以说牛顿方法是基于梯度的优化方法的(高级)示例?上面引用的讨论也不足以回答这个问题。

【问题讨论】:

我投票结束这个问题,因为它不是关于编程的。这个问题可能是Mathematics Stack Exchange 网站的主题。 我同意它与编程没有直接关系,但是,它是;它解决了对可能的解决方案进行编程的非常基本的方法。请您重新考虑。 【参考方案1】:

在梯度下降法中,目标是 argmin f(x),而在牛顿法中,目标是 f'(x)=0

事实并非如此,两个目标都是f'(x)=0。使用梯度下降法,就像使用牛顿法一样,您没有任何关于您达到的最小值是全局还是局部的信息,因此argmin f(x) 仅适用于非常小的邻域。

另一个区别是停止准则,在梯度下降法中是 f'(x) = 0,而在牛顿法中是 f(x)=0

再一次,这是不正确的。两者都试图最小化成本函数f(x),并且不保证f(x) 的最小值为零。它可以是任意值,因此选择f(x)=0 作为停止标准显然是错误的。停止这两种方法的一个很好的标准是查看f(x) 在几次连续迭代期间发生了多少变化。如果它没有改变几次,那么你可能会得出结论,你已经达到了一个平台并停止了。作为替代方案,您可以使用诸如梯度绝对值之类的标准,或者如果您有时间限制,您可以只使用固定次数的迭代。

是否可以说牛顿法是基于梯度的优化方法的(高级)示例

根据定义,梯度​​方法是沿梯度方向观察的。如您所知,牛顿方法使用局部曲率来定义通往局部最优的路径,并且可能根本不会遵循与梯度相同的方向,因此将其称为基于梯度是没有意义的。

【讨论】:

我认为这是有道理的;我从我能找到的有关该主题的所有文献中获得了这种理解。而《G. Venter. Review of Optimization Techniques. Encyclopedia of Aerospace Engineering, 2010》一文将牛顿法具体归类为梯度下降法。有cmets吗? @Sal 抱歉,当我写这篇文章时,我实际上是在考虑Gauss-Newton 方法……我认为我的回答也适用于Newton 的方法。关于将该方法分类为基于梯度的方法,我认为这或多或少是一个选择问题......在Newton's 中,梯度确实出现在更新中,并且当二阶导数是常数,所以我认为将其归类为梯度方法是有意义的,尽管它看起来像是一个延伸。 当导数被计算并显​​式出现在更新中时,为什么会显得有些牵强。我会说 Newton/s 方法确实归类为基于梯度的方法。它的更新方式可能不同,但它确实适用于相同的基本概念。【参考方案2】:

是否可以说牛顿法是基于梯度的优化方法的(高级)示例?

我认为这绝对是公平的说法。对于简单的一维情况,我喜欢将牛顿法视为梯度下降,其中 i) 步长(规范梯度下降中的 alpha)等于 1 和 ii) 调整使得(保持一阶导数常数)更新越大,函数的曲率(即二阶导数)在当前猜测时越小。

【讨论】:

以上是关于牛顿法会被归类为梯度下降法吗?的主要内容,如果未能解决你的问题,请参考以下文章

梯度下降法与牛顿下降法速度的比较

梯度下降之模拟退火梯度下降之学习计划牛顿法拟牛顿法共轭梯度法

最小二乘法+牛顿法+拟牛顿法+梯度下降法+梯度上升法+共轭梯度法

『科学计算_理论』优化算法:梯度下降法&牛顿法

机器学习中梯度下降法和牛顿法的比较

梯度下降法