zoukankan      html  css  js  c++  java
  • 【MachineLearning】梯度下降与牛顿法

    参考:牛顿法 https://zhuanlan.zhihu.com/p/22862479

    微分:微分的概念是无线分割。y=f(x),当dx无限靠近自己的时候,函数在dx处的极限
    叫做函数在dx处的微分。

    求解最值的方法:
    一、线性回归中的梯度下降法Gradient Descent[随机梯度下降|批量梯度下降]
    适用于无约束优化问题。
    参考:stanford CS229 note1
    linear expression: h(x) = θT x
    cost function: J(θ) = 1/2∑m(h(x)-y)^2 最小二乘法 => 曲线拟合(欧几里得距离)
    解释:损失函数,平方是为了避免正负符号问题,1/2是为了数学方便
    关于最小二乘法,需要做一个detail learning
    θj := θj - α△J(θ)  #这里对cost function求导就是在求梯度,寻找让J(θ)最小的θ值
    △J(θ) = (h(x)-y) * △j(h(x)-y)
    △J(θ) = (h(x)-y) * xj
    => θj := θj - α(hθ(xi)-yi)xij
    θj := θj + α(yi - hθ(xi))xij Widrow-Hoff learning rule
    批量梯度下降:
    Repeat:{
    θj := θj + α∑(1->j)(yi - hθ(xi))xij
    }
    随机梯度下降:
    Loop:{
    for i=1 to m,{
    θj := θj + α(yi - hθ(xi))xij
    }
    }

    二、牛顿法(全称:牛顿-拉弗森方法 Newton-Raphson method)
    要解决的问题:求函数l(x)的最值
    求导得极值:l'(x) = 0,令f(x)=l'(x)=0
    =>解决的问题:f(x) = 0
    =>画切线,无限逼近 tanθ = f'(x)
    = f(x) / △x
    => △x = f'(x) / f(x)
    => θ := θ - f'(x)/f(x)
    f(x)=l'(x)=> θ := θ - l''(x)/l'(x)
    特殊情况:H值为0,应当另设初始点,重新计算。

    三、对比
    梯度下降:平面逼近局部,求最值。一阶收敛。
    牛顿法:曲面逼近局部,求最值。二阶收敛。
    解读:梯度下降是在平面上,找坡度下降/上升的方向迈出一步。
    牛顿法不但考虑要朝着坡度下降最大的方向走一步,还要考虑下下一步的坡度
    下降要更快。所以牛顿法比梯度下降最快。

  • 相关阅读:
    C/C++多文件之间的变量定义
    PKU POJ 2186 Popular Cows 强连通分量
    重载函数
    ZOJ 2763 Prison Break
    201357 训练赛总结
    hdu 4467 Graph 构造
    201356 训练赛总结
    201353 NEERC 2012, Eastern subregional contest
    2013512 CF 183 总结
    一道动态规划
  • 原文地址:https://www.cnblogs.com/Years4Nancy/p/8343402.html
Copyright © 2011-2022 走看看