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#中Linq查询基本操作
    Python中的四种数据结构
    20200917练习题
    SRS搭建自己的直播、点播系统
    20200916练习题
    20200915练习题
    20200914练习题
    20200911练习题
    UTF-8最多编码字符数(最多可以容纳多少数量的字符)?
    k8s新手必看
  • 原文地址:https://www.cnblogs.com/Years4Nancy/p/8343402.html
Copyright © 2011-2022 走看看