查看原文
其他

【面试题】牛顿法和梯度下降法有什么不同?

草yang年华 机器学习与python集中营 2021-09-10

python进阶教程

机器学习

深度学习

长按二维码关注

牛顿法和梯度下降法有什么不同?


参考答案:


解析:

牛顿法(Newton's method) 

牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快。  


具体步骤: 

首先,选择一个接近函数 f (x)零点的 x0,计算相应的 f (x0) 和切线斜率f  ' (x0)(这里f ' 表示函数 f  的导数)。 


然后我们计算穿过点(x0,f(x0))并且斜率为f '(x0)的直线和x轴的交点的x坐标,也就是求如下方程的解:



我们将新求得的点的 x 坐标命名为x1,通常x1会比x0更接近方程f  (x) = 0的解。 因此我们现在可以利用x1开始下一轮迭代。迭代公式可化简为如下所示:


已经证明,如果f'是连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个邻近区域内,那么牛顿法必定收敛。 


并且,如果f'(x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。 


由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"。牛顿法的搜索路径(二维情况)如下图所示:


关于牛顿法和梯度下降法的效率对比: 

a)从收敛速度上看 ,牛顿法是二阶收敛,梯度下降是一阶收敛,前者牛顿法收敛速度更快。但牛顿法仍然是局部算法,只是在局部上看的更细致,梯度法仅考虑方向,牛顿法不但考虑了方向还兼顾了步子的大小,其对步长的估计使用的是二阶逼近。  


b)根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

注:红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。  


牛顿法的优缺点总结: 

优点:二阶收敛,收敛速度快; 

缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。  

本题解析来源:@wtq1993

链接:http://blog.csdn.net/wtq1993/article/details/51607040



推 荐 阅 读


对深度可分离卷积、分组卷积、空洞卷积的通俗理解(上篇)
对转置卷积、可变形卷积、通道加权卷积的通俗理解(下篇)
TensorBoard必知必会的入门了解

一文纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception

Xception网络架构的一些理解

上采样、上池化、反卷积的一点理解


赶紧关注我们吧

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存