• 梯度下降法和牛顿法


    梯度下降法和牛顿法是最常见的两个模型训练算法了,现在对这两个算法做一个比较:

      梯度下降法 牛顿法
    迭代公式 [{w^{(k + 1)}} = {w^{(k)}} - alpha abla J({w^{(k)}})] [{w^{(k + 1)}} = {w^{(k)}} - {H^{ - 1}}({w^{(k)}}) abla J({w^{(k)}})]
    物理意义

     1. 搜寻函数的最低点

    2.搜索方向是损失函数一阶导数的方向

    3. 每次迭代步长有参数(alpha )决定

     1. 搜索损失函数一阶导数=0的点

    2. 搜索方向是损失函数二阶导数(一阶导数在当前点的切线)

    3.每次迭代都在搜索方向上找与y=0平面的交点,无步长参数

    单次迭代时间复杂度  只需计算1阶导数,时间复杂度低,为(O(n))  需要计算Hessian矩阵及其逆矩阵,时间复杂度高,为(O(n^3))
    收敛速度 收敛慢,迭代次数大 收敛快,迭代次数小
    参数选择  需要选择步长[alpha ]  无需选择参数
    适用范围 适用feature维度较大的场景,如feature数>1000 使用feature数较小的场景

    牛顿法的物理意义可以从下面两个方面理解:

    1. 损失函数在当前搜索点泰勒展开,丢弃二阶以上的函数项,下一个搜索点为展开后的最小值

    2. 搜寻损失函数一阶导数与y=0平面的交点,搜索方式类似与梯度下降,即计算一阶导数的导数为搜索方向,下一个搜索点是当前点切线与y=0平面的交点。

  • 相关阅读:
    数据库的创建与管理
    html+css画虚线,实线
    隐藏导航练习
    表单—注册邮箱
    整理—运算符l
    softmax函数理解
    离线配置Anaconda3+tensorflow-gpu1.4.0+cuda8.0+cudnn6.0
    stl总结精简版
    hdu_2030
    康托展开
  • 原文地址:https://www.cnblogs.com/richqian/p/4512118.html
Copyright © 2020-2023  润新知