文章目录
- 无约束优化:线搜索最速下降
- 无约束优化问题
- 线搜索最速下降
- 精确线搜索
- 非精确线搜索
- Armijo准则
- Goldstein准则
- Wolfe准则
 
- 参考文献
 
无约束优化:线搜索最速下降
无约束优化问题

线搜索最速下降

对于光滑函数 f ( x ) f(x) f(x),沿着函数负梯度方向下降速度最快。对于线搜索最速下降方法而言,核心问题是如何选择搜索步长 τ \tau τ,一般有以下四种方法:
- 固定步长: τ = c \tau = c τ=c。如下图所示,若常数取太大,则搜索振荡厉害且对于非凸函数有可能发散;若太小,则收敛速度慢;
- 渐消步长: τ = c / k \tau=c/k τ=c/k。适用性强,对于非光滑函数、梯度存在噪声( ▽ f ( x ) ′ = ▽ f ( x ) + ε \triangledown f(x)'=\triangledown f(x)+\varepsilon ▽f(x)′=▽f(x)+ε ,随机噪声)适用,稳健性强但收敛速度慢,适用于条件差但对收敛速度要求不高的场景;
- 精确线搜索: τ = arg  min  α f ( x k + α d ) \tau=\arg \min _\alpha f\left(x^k+\alpha d\right) τ=argminαf(xk+αd),实际应用较少,下面详述;
- 非精确线搜索: τ ∈ { α ∣ f ( x k ) − f ( x k + α d ) ≥ − c ⋅ α d T ∇ f ( x k ) } \tau \in\left\{\alpha \mid f\left(x^k\right)-f\left(x^k+\alpha d\right) \geq-c \cdot \alpha d^{\mathrm{T}} \nabla f\left(x^k\right)\right\} τ∈{α∣f(xk)−f(xk+αd)≥−c⋅αdT∇f(xk)},重要,下面详述。
 
 
精确线搜索
此时我们构造了一个辅助函数
    
     
      
       
        ϕ
       
       
        (
       
       
        α
       
       
        )
       
       
        =
       
       
        f
       
       
        
         (
        
        
         
          x
         
         
          k
         
        
        
         +
        
        
         α
        
        
         
          d
         
         
          k
         
        
        
         )
        
       
      
      
       \phi(\alpha)=f\left(x^k+\alpha d^k\right)
      
     
    ϕ(α)=f(xk+αdk),
    
     
      
       
        α
       
      
      
       \alpha
      
     
    α是该辅助函数的自变量,该函数的几何含义非常直观:它是目标函数
    
     
      
       
        f
       
       
        (
       
       
        x
       
       
        )
       
      
      
       f(x)
      
     
    f(x)在射线
    
     
      
       
        {
       
       
        
         x
        
        
         k
        
       
       
        +
       
       
        α
       
       
        
         d
        
        
         k
        
       
       
        :
       
       
        α
       
       
        >
       
       
        0
       
       
        }
       
      
      
       \left\{x^k+\alpha d^k: \alpha>0\right\}
      
     
    {xk+αdk:α>0}上的限制。线搜索的目标就是选取合适的
    
     
      
       
        
         α
        
        
         k
        
       
      
      
       \alpha_{k}
      
     
    αk使得
    
     
      
       
        ϕ
       
       
        
         (
        
        
         
          α
         
         
          k
         
        
        
         )
        
       
      
      
       \phi\left(\alpha_k\right)
      
     
    ϕ(αk)尽可能小,自然而言引入一个子优化问题:
 
     
      
       
        
         
          α
         
         
          k
         
        
        
         =
        
        
         
          
           
            arg
           
           
            
           
           
            min
           
           
            
           
          
          
           
            α
           
           
            >
           
           
            0
           
          
         
        
        
         ϕ
        
        
         (
        
        
         α
        
        
         )
        
       
       
         \alpha_k=\underset{\alpha>0}{\arg \min } \phi(\alpha) 
       
      
     αk=α>0argminϕ(α)
 这个子优化算法就是精确线搜索,目的是找到精确的最佳步长
    
     
      
       
        
         α
        
        
         k
        
       
      
      
       \alpha_{k}
      
     
    αk。但在原本的最速下降优化问题中再引入一个子优化问题,这本身就带来比较大的计算量,因此精确线搜索在实际应用中较少使用。由此,引出非精确线搜索算法,即把条件放宽,不要求得到精确的最佳步长
     
      
       
        
         
          α
         
         
          k
         
        
       
       
        \alpha_k
       
      
     αk,而是仅仅要求
     
      
       
        
         ϕ
        
        
         (
        
        
         α
        
        
         )
        
       
       
        \phi(\alpha)
       
      
     ϕ(α)满足某些不等式要求。
非精确线搜索
Armijo准则
设 d k d^k dk是点 x k x^k xk处的下降方向,若 f ( x k + α d k ) ⩽ f ( x k ) + c 1 α ∇ f ( x k ) T d k f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k f(xk+αdk)⩽f(xk)+c1α∇f(xk)Tdk,则称步长 α \alpha α满足Armijo准则,其中 c 1 ∈ ( 0 , 1 ) c_1 \in(0,1) c1∈(0,1)是一个常数。一般 d k d^k dk为负梯度方向,则 c 1 α ∇ f ( x k ) T d k < 0 c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k <0 c1α∇f(xk)Tdk<0,若满足Armijo准则,则严格满足 f ( x k + α d k ) < f ( x k ) f\left(x^k+\alpha d^k\right) < f\left(x^k\right) f(xk+αdk)<f(xk),因此又称该准则为充分下降条件,可保证每一步迭代充分下降。

该准则有非常直观的几何含义,如上图所示。在实际应用中,参数 c 1 c_1 c1通常选为一个很小的正数,例如 c 1 = 1 0 − 3 c_1=10^{-3} c1=10−3,这使得Armijo准则非常容易满足。但仅仅使用该准则无法保证迭代的收敛性,因为取 α = 0 \alpha=0 α=0也是满足准则中的条件,而这意味着迭代序列中的点固定不变,这样重复收敛就没有意义,因此Armijo准则一般搭配其他准则来使用。基于Armijo准则的最速下降算法步骤如下:

上述算法不会无限进行下去,因为沿着梯度负方向,当 α \alpha α充分小时,该准则总是成立的。为了避免步长过小,在实际应用中一般会给 α \alpha α设置一个下界,这就是Goldstein准则。
Goldstein准则
Armijo-Goldstein准则,简称Goldstein准则,简单来说就是同时给 α \alpha α设置上下界,定义如下:
设
    
     
      
       
        
         d
        
        
         k
        
       
      
      
       d^k
      
     
    dk是点
    
     
      
       
        
         x
        
        
         k
        
       
      
      
       x^k
      
     
    xk处的下降方向,若
 
     
      
       
        
         
          
           
          
         
         
          
           
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              +
             
             
              α
             
             
              
               d
              
              
               k
              
             
             
              )
             
            
            
             ⩽
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              )
             
            
            
             +
            
            
             c
            
            
             α
            
            
             ∇
            
            
             f
            
            
             
              
               (
              
              
               
                x
               
               
                k
               
              
              
               )
              
             
             
              T
             
            
            
             
              d
             
             
              k
             
            
            
             ,
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              +
             
             
              α
             
             
              
               d
              
              
               k
              
             
             
              )
             
            
            
             ⩾
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              )
             
            
            
             +
            
            
             (
            
            
             1
            
            
             −
            
            
             c
            
            
             )
            
            
             α
            
            
             ∇
            
            
             f
            
            
             
              
               (
              
              
               
                x
               
               
                k
               
              
              
               )
              
             
             
              T
             
            
            
             
              d
             
             
              k
             
            
           
          
         
        
       
       
         \begin{aligned} & f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k, \\ & f\left(x^k+\alpha d^k\right) \geqslant f\left(x^k\right)+(1-c) \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k \end{aligned} 
       
      
     f(xk+αdk)⩽f(xk)+cα∇f(xk)Tdk,f(xk+αdk)⩾f(xk)+(1−c)α∇f(xk)Tdk
 则称步长
    
     
      
       
        α
       
      
      
       \alpha
      
     
    α满足Goldstein准则,其中
    
     
      
       
        c
       
       
        ∈
       
       
        (
       
       
        0
       
       
        ,
       
       
        0.5
       
       
        )
       
      
      
       c \in (0, 0.5)
      
     
    c∈(0,0.5).

该准则的几何意义同样非常直观,如上图所示,在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1,α2]中的点均满足Goldstein准则。但需要注意的是,该准则可能避开最优的函数值, ϕ ( α ) \phi(\alpha) ϕ(α)的最小值点并不在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1,α2]内。为此,我们引入Armijo-Wolfe准则。
Wolfe准则
Armijo-Wolfe准则,简称Wolfe准则,定义如下:
设
    
     
      
       
        
         d
        
        
         k
        
       
      
      
       d^k
      
     
    dk是点
    
     
      
       
        
         x
        
        
         k
        
       
      
      
       x^k
      
     
    xk处的下降方向,若
 
     
      
       
        
         
          
           
          
         
         
          
           
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              +
             
             
              α
             
             
              
               d
              
              
               k
              
             
             
              )
             
            
            
             ⩽
            
            
             f
            
            
             
              (
             
             
              
               x
              
              
               k
              
             
             
              )
             
            
            
             +
            
            
             
              c
             
             
              1
             
            
            
             α
            
            
             ∇
            
            
             f
            
            
             
              
               (
              
              
               
                x
               
               
                k
               
              
              
               )
              
             
             
              T
             
            
            
             
              d
             
             
              k
             
            
           
          
         
        
        
         
          
           
          
         
         
          
           
            
            
             ∇
            
            
             f
            
            
             
              
               (
              
              
               
                x
               
               
                k
               
              
              
               +
              
              
               α
              
              
               
                d
               
               
                k
               
              
              
               )
              
             
             
              T
             
            
            
             
              d
             
             
              k
             
            
            
             ⩾
            
            
             
              c
             
             
              2
             
            
            
             ∇
            
            
             f
            
            
             
              
               (
              
              
               
                x
               
               
                k
               
              
              
               )
              
             
             
              T
             
            
            
             
              d
             
             
              k
             
            
           
          
         
        
       
       
         \begin{aligned} & f\left(x^k+\alpha d^k\right) \leqslant f\left(x^k\right)+c_1 \alpha \nabla f\left(x^k\right)^{\mathrm{T}} d^k \\ & \nabla f\left(x^k+\alpha d^k\right)^{\mathrm{T}} d^k \geqslant c_2 \nabla f\left(x^k\right)^{\mathrm{T}} d^k \end{aligned} 
       
      
     f(xk+αdk)⩽f(xk)+c1α∇f(xk)Tdk∇f(xk+αdk)Tdk⩾c2∇f(xk)Tdk
 则称步长
    
     
      
       
        α
       
      
      
       \alpha
      
     
    α满足Wolfe准则,其中
    
     
      
       
        
         c
        
        
         1
        
       
       
        ,
       
       
        
         c
        
        
         2
        
       
       
        ∈
       
       
        (
       
       
        0
       
       
        ,
       
       
        1
       
       
        )
       
      
      
       c_1,c_2 \in (0,1)
      
     
    c1,c2∈(0,1)为给定常数且
    
     
      
       
        
         c
        
        
         1
        
       
       
        <
       
       
        
         c
        
        
         2
        
       
      
      
       c_1 < c_2
      
     
    c1<c2.
由该准则的定义可以看出,仍然使用第一个条件即Armijo准则确定步长上界,在第二个条件中 ∇ f ( x k + α d k ) T d k \nabla f\left(x^k+\alpha d^k\right)^{\mathrm{T}} d^k ∇f(xk+αdk)Tdk是 ϕ ( α ) \phi(\alpha) ϕ(α)的导数,也就是要求 ϕ ( α ) \phi(\alpha) ϕ(α)在点 α \alpha α处切线的斜率不能小于 ϕ ′ ( 0 ) \phi^{\prime}(0) ϕ′(0)的 c 2 c_2 c2倍。如下图所示,在区间 [ α 1 , α 2 ] [\alpha_1,\alpha_2] [α1,α2]中的点均满足Wolfe准则, α k = arg  min  α > 0 ϕ ( α ) \alpha_k=\underset{\alpha>0}{\arg \min } \phi(\alpha) αk=α>0argminϕ(α)子优化问题的最优解处( ϕ ( α ) \phi(\alpha) ϕ(α)的极小值点)有 ϕ ′ ( α ∗ ) = ∇ f ( x k + α ∗ d k ) T d k = 0 \phi^{\prime}\left(\alpha^*\right)=\nabla f\left(x^k+\alpha^* d^k\right)^{\mathrm{T}} d^k=0 ϕ′(α∗)=∇f(xk+α∗dk)Tdk=0,永远满足Wolfe准则的第二个条件。因此,该准则在绝大多数情况下包含线搜索子问题的精确解,在实际应用中,参数 c 2 = 0.9 c_2=0.9 c2=0.9.

参考文献
机器人中的数值优化
最优化:建模、算法与理论/最优化计算方法


















