zoukankan      html  css  js  c++  java
  • 【原创】回溯线搜索 Backtracking line search

    机器学习中很多数值优化算法都会用到线搜索(line search)。线搜索的目的是在搜索方向上找到是目标函数(f(x))最小的点。然而,精确找到最小点比较耗时,由于搜索方向本来就是近似,所以用较小的代价找到最小点的近似就可以了。 Backtracking Line Search(BLS)就是这么一种线搜索算法。

    BLS算法的思想是,在搜索方向上,先设置一个初始步长({alpha _0}),如果步长太大,则缩减步长,知道合适为止。

    上面的想法要解决两个问题:

    1. 如何判断当前步长是否合适 (Armijo–Goldstein condition)

    [f({f{x}} + alpha {mkern 1mu} {f{p}}) le f({f{x}}) + alpha {mkern 1mu} c{mkern 1mu} m{mkern 1mu} ]

    [m = {{f{p}}^{ m{T}}}{mkern 1mu} abla f({f{x}}){mkern 1mu} ]

    其中,({f{p}})是当前搜寻方向,(alpha )是步长,({mkern 1mu} c{mkern 1mu} )是控制参数,需要根据情况人工核定。

    从上式可以看出,当前点的斜率越小,(f({f{x}} + alpha {mkern 1mu} {f{p}}) - f({f{x}}))的要求越小,步长就越小。对于一般的凸问题,搜寻点越接近最优点,原函数的斜率越较小,因此步长越小,这也是符合直觉的。

    2. 如何则缩减步长

    搜索步长的缩减通过( au {mkern 1mu} )参数来控制,主要通过人工核定,既({alpha _j} = au {mkern 1mu} {alpha _{j - 1}})

    总结一下BLS算法的流程如下:

    1. 设置初始步长({alpha _0})

    2. 判断(f({f{x}} + alpha {mkern 1mu} {f{p}}) le f({f{x}}) + alpha {mkern 1mu} c{mkern 1mu} m{mkern 1mu} )是否满足,如果满足,停止;否则3:

    3. ({alpha _j} = au {mkern 1mu} {alpha _{j - 1}}),重复2

  • 相关阅读:
    CURL POST提交json类型字符串数据和伪造IP和来源
    windows下nginx的配置
    常用JS兼容问题工具
    无限级分类--Array写法
    JS获取对象指定属性在样式中的信息
    解决IE和Firefox获取来源网址Referer的JS方法
    异步轮询函数
    响应式布局--特殊设备检测
    jQuery Validate校验
    [LeetCode#124]Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/richqian/p/4534356.html
Copyright © 2011-2022 走看看