当前位置 博文首页 > dastu的博客:比较 牛顿法与梯度下降法

    dastu的博客:比较 牛顿法与梯度下降法

    作者:[db:作者] 时间:2021-09-19 19:25

    这里主要是对比两者不同,和优缺点,具体的两者的推导过程可以参考https://blog.csdn.net/weixin_44467105/article/details/104841966

    一.对于一阶导和二阶导的理解。
    网上大部分都是说由于牛顿法用了二阶导,而梯度下降算法用了一阶导,所以牛顿法更快,基本都没说具体原因,这里我结合下自己对于数学的理解,谈谈对于这个点的理解。
    梯度下降算法也被称为“最速下降”,顾名思义就是因为他的下降速度很快,因为它是沿着梯度的方向,意思就是沿着变化速度最快的方向,所以收敛速度比较快。
    这也就是所谓梯度下降算法的一阶导数的作用。
    但是相对于牛顿法来说,牛顿法不仅考虑一阶导数而且采用了二阶导数,个人理解这里的含义就是不仅考虑到下降最快的方向(一阶导数),而且考虑到更新之后的梯度的变化幅度(二阶导数)。
    所以牛顿法的收敛速度应该是比梯度下降算法更快的。

    二.为什么说Hessian矩阵要正定.
    牛顿法的目标是求极小值,对于极小值点我们要求一阶导数为0,二阶导数大于零,同时满足这两个条件才是极小值点,这是从数学上的定义,我们用牛顿法做迭代时,公式的得出就是假设一阶导数为0的(具体什么个公式可以看上面链接,那里有推导过程),所以我们还需要二阶导大于0。当Hessian矩阵正定时,我们就可以得出X(转置)HX,这个大于,这个东西一定是大于0的,因为正定矩阵的条件就是XHX>0,(H为正定矩阵,这里前面的X实际是转置)。

    三.优缺点对比
    牛顿法优点:收敛速度快

    牛顿法缺点:
    1.需要计算Hessian的逆矩阵,计算量比较大,而且是每次迭代都要计算
    2.牛顿法是局部收敛的

    梯度下降算法优点:对于凸函数问题可以全局最优

    梯度下降算法缺点:收敛比较慢

    cs