zoukankan      html  css  js  c++  java
  • 机器学习笔记——简述坐标下降法

    一 综述

    坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行搜索,通过循环使用不同的坐标方法来达到目标函数的局部极小值

    二 算法过程

    假设目标函数是求解$f(x)$的极小值,其中$x=(x_1,x_2,ldots,x_n)$是一个n维的向量,我们从初始点$x^0$开始($x^0$是我们猜想的一个初值)对k进行循环:

    相当于每次迭代都只是更新$x$的一个维度,即把该维度当做变量,剩下的n-1个维度当作常量,通过最小化$f(x)$来找到该维度对应的新的值。坐标下降法就是通过迭代地构造序列$x^0,x^1,x^2,ldots$来求解问题,即最终点收敛到期望的局部极小值点。通过上述操作,显然有:

    $$f(x^0)geq f(x^1)geq f(x^2)geqldots$$

    =========================================================================

    证明如下:

    当$k=0$时,对应的$f(x)$的值为$f(x^0)=f(x_1^0,x_2^0,ldots,x_n^0)$

    由于$x_1^1=argmin f(x_1,x_2^0,ldots,x_n^0)$,所以$f(x_1^1,x_2^0,ldots,x_n^0)leq f(x_1^0,x_2^0,ldots,x_n^0) = f(x^0)$,以此类推

    所以$f(x_1^1,x_2^1,ldots,x_n^0)leq f(x_1^1,x_2^0,ldots,x_n^0)leq f(x_1^0,x_2^0,ldots,x_n^0) = f(x^0)$

    所以$f(x^1) =f(x_1^1,x_2^1,ldots,x_n^1)leqldots f(x_1^1,x_2^1,ldots,x_n^0)leq f(x_1^1,x_2^0,ldots,x_n^0)leq f(x_1^0,x_2^0,ldots,x_n^0) = f(x^0)$

    同理可得$f(x^2)leq f(x^1)leq f(x^0)$,命题得证。

    ======================================================================

    相比梯度下降法而言,坐标下降法不需要计算目标函数的梯度,在每步迭代中仅需求解一维搜索问题,所以对于某些复杂的问题计算较为简便。但如果目标函数不光滑的话,坐标下降法可能会陷入非驻点

    三 注意事项

    关于坐标下降法,有几点需要注意的:

    1.坐标下降的顺序是任意的,不一定非得按照从$x^1ldots x^n$的顺序来,可以是从1到n的任意排列。

    2.坐标下降的关键在于一次一个地更新,所有的一起更新有可能会导致不收敛。

    3.坐标上升法和坐标下降法的本质一样,只不过目标函数成为求$f(x)$的极大值了,每次迭代过程$min$变成$max$了。

    参考:https://blog.csdn.net/u013802188/article/details/40476989/

       https://blog.csdn.net/yMMxz/article/details/69396222

      

  • 相关阅读:
    【Unity3d】Ray射线初探-射线的原理及用法
    unity3d 的Quaternion.identity和transform.rotation区别是什么
    HOLOLENS的空间管理
    vector3.forward和transform.forward的区别!
    voxel 与 pixel
    图文详解Unity3D中Material的Tiling和Offset是怎么回事
    手机开启HDR后拍照有什么不同?
    什么是UV?
    积和式Permanent在Mathematica中的运算
    [再寄小读者之数学篇](2014-11-20 计算二重积分)
  • 原文地址:https://www.cnblogs.com/wangkundentisy/p/9260790.html
Copyright © 2011-2022 走看看