zoukankan      html  css  js  c++  java
  • 数值优化(三)

    线搜索方法

    线搜索方法的基本过程都是在每一次迭代中先计算出一个优化方向(p_k),再在这个方向上对目标函数做一维优化,即选取合适的(alpha_k),使(x_{k+1}=x_k+alpha p_k)达到优化目的。一般来说,选取(p_k=-B_k^{--1} abla f_k),其中(B_k)是一个对称正定矩阵,(B_k)的选取有多种选择,比如在牛顿法中,(B_k)就是Hessian,而在逆牛顿法中,(B_k)是Hessian的近似。由于(p_k=-B_k^{--1} abla f_k),(B_k)正定,可以知道(p_k)确实是下降方向。

    搜索步长

    定义$$Phi(alpha)=f(x_k+alpha p_k) quad alpha >0$$步长选取就是该函数的局部最优化问题,对此不需要太高的准确度,不能在这个问题上花费很多时间,所以只需要给出一个差不多的解就可以了。步长搜索过程分为两个阶段--bracketing-phase和bisection(or interpolation)-phase,前者找到一个包含期望步长的区间,后者在这个区间里面计算出一个好的步长。为此,先给搜索步长施加几个要求,首先就是搜索步长需要使得函数下降,但这显然不够,于是还有下面的条件。

    Wolfe Condition

    充分下降条件

    [f(x_k+alpha p_k) leq f(x_k)+c_1alpha abla f_k^T p_k ]

    示意图:

    curvature condition

    [ abla f (x_k+alpha_k p_k)^Tp_k geq c_2 abla f_k^T p_k quad 0 < c_1<c_2<1 ]

    示意图:

    两个条件合起来称为Wolfe-condition,在实际应用中,(c_1)通常取得比较小,比如(10^{-4})(c_2)在牛顿和拟牛顿方法中通常取0.9,在共轭梯度法中通常取0.1。
    将curvature condition改为$$| abla f (x_k+alpha_k p_k)^Tp_k| leq c_2| abla f_k^T p_k|$$得到的条件称为strong Wolfe condition
    在Wolfe condition和strong Wolfe condition下,满足条件的步长是存在的:

    The Goldstein condition

    Goldstein condition和Wolfe condition出发点相同,都是在保证充足的下降情况下,又避免搜索步长过小。$$f(x_k)+(1-c)alpha_k abla f_k^T p_k leq f(x_k+alpha_k p_k)leq f(x_k)+calpha_k abla f_k^T p_kquad 0<c<frac{1}{2}$$Goldstein condition相对于Wolfe condition的缺点是,它的第一个不等式有可能排除了所有极小点。

    backtracking

    即使只对步长施加充分下降条件,只要适当选取步长,也是可以的,这里就要用到称为backtracking的方法。

    在这个过程中,初始步长在牛顿和拟牛顿方法中取为1,在其他方法中可取为不同的值。

    收敛理论


    其中( heta_k)( abla f_k)(p_k)的夹角。将这个定理中的wolfe condition换为goldstein 或strong wolfe定理任然成立。

    最速下降法



    可知最速下降法收敛速度是线性的

    逆牛顿法


    牛顿法

    步长选择算法


  • 相关阅读:
    数论小结转载
    hdu 3792 二分
    求N的所有因子(约数)
    整数划分 --- 一个老生长谈的问题 动态规划
    hdu 1541 Stars poj 1195 Mobile phones(二维) poj 2155 Matrix(二维) hdu 3584 Cube(三维) 树状数组
    zoj 3175 Number of Containers
    asp.netMVC中权限控制论
    asp.net下使用Cookie保存登录信息
    asp.netMVC中实现分页方法
    asp.net异步上传
  • 原文地址:https://www.cnblogs.com/mathematic-offering/p/9381284.html
Copyright © 2011-2022 走看看