文章目录
- 无约束
- 等式约束
- 不等式约束
- KKT条件
无约束
之前梯度类算法中介绍的最速下降法、牛顿法和拟牛顿法,可以直接使用的条件之一为:决策变量都是无约束的。
用数学语言描述的话,可以表达为:决策变量为 
     
      
       
        
        
          x 
         
        
       
         = 
        
       
         ( 
        
        
        
          x 
         
        
          1 
         
        
       
         , 
        
        
        
          x 
         
        
          2 
         
        
       
         , 
        
       
         ⋅ 
        
       
         ⋅ 
        
       
         ⋅ 
        
       
         , 
        
        
        
          x 
         
        
          n 
         
        
       
         ) 
        
       
      
        \pmb x=(x_1,x_2,···,x_n) 
       
      
    x=(x1,x2,⋅⋅⋅,xn),目标函数为
  
      
       
        
        
          m 
         
        
          i 
         
        
          n 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
       
         min f(\pmb x) 
        
       
     minf(x)
但在实际问题中,大部分都是包含约束的,比如多个决策变量之间存在耦合关系、资源有上限等。其中,有些是等式约束,有些则是不等式约束。在求解这类包含约束的最优化问题时,就需要一些新的方法。本文主要介绍拉格朗日乘子法和KKT条件。
等式约束
当最优化问题中只包含等式约束时,数学模型可以表达为
  
      
       
        
        
          m 
         
        
          i 
         
        
          n 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
         
        
          s.t. 
         
         
         
         
           h 
          
         
           l 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          l 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          2 
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
        
          L 
         
        
       
         min f(\pmb x) \\ \text{s.t.} \quad h_l(\pmb x) = 0, l=1,2,...,L 
        
       
     minf(x)s.t.hl(x)=0,l=1,2,...,L
 相比无约束的情况,多了 
     
      
       
        
        
          h 
         
        
          l 
         
        
       
         ( 
        
        
        
          x 
         
        
       
         ) 
        
       
         = 
        
       
         0 
        
       
      
        h_l(\pmb x) = 0 
       
      
    hl(x)=0的限制。
求解这类问题的思路是,想办法将等式约束去掉,将原问题转化为无约束优化问题,这样就可以使用梯度类算法求解了。
拉格朗日乘子法是很常用的一种转化方法,该方法是构造如下的优化问题:
  
      
       
        
        
          m 
         
        
          i 
         
        
          n 
         
        
          L 
         
        
          ( 
         
         
         
           x 
          
         
        
          , 
         
         
         
           λ 
          
         
        
          ) 
         
        
       
         minL(\pmb x, \pmb \lambda) 
        
       
     minL(x,λ)
 其中
  
      
       
        
        
          L 
         
        
          ( 
         
         
         
           x 
          
         
        
          , 
         
         
         
           λ 
          
         
        
          ) 
         
        
          = 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          + 
         
         
         
           ∑ 
          
          
          
            l 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
         
           l 
          
         
         
         
           h 
          
         
           l 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
       
         L(\pmb x, \pmb \lambda)=f(\pmb x)+\sum_{l=1}^L\lambda_lh_l(\pmb x) 
        
       
     L(x,λ)=f(x)+l=1∑Lλlhl(x)
 相比原优化问题,新优化问题是无约束的,但是多了一组优化变量 
     
      
       
        
        
          λ 
         
        
       
      
        \pmb \lambda 
       
      
    λ。看起来,两者是有些差异的,那么它们的最优解是否相同呢?答案是相同的,接下来详细解释一下。
针对 
     
      
       
       
         L 
        
       
         ( 
        
        
        
          x 
         
        
       
         , 
        
        
        
          λ 
         
        
       
         ) 
        
       
      
        L(\pmb x, \pmb \lambda) 
       
      
    L(x,λ),求一阶导数,并令其等于0:
  
      
       
        
         
          
          
            ∂ 
           
          
            L 
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          = 
         
        
          0 
         
        
          ⇒ 
         
         
          
          
            ∂ 
           
          
            f 
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          + 
         
         
         
           ∑ 
          
          
          
            l 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
         
           l 
          
         
         
          
          
            ∂ 
           
           
           
             h 
            
           
             l 
            
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          = 
         
        
          0 
         
         
         
          
          
            ∂ 
           
          
            L 
           
          
          
          
            ∂ 
           
           
           
             λ 
            
           
             l 
            
           
          
         
        
          = 
         
        
          0 
         
        
          ⇒ 
         
         
         
           h 
          
         
           l 
          
         
        
          = 
         
        
          0 
         
         
        
       
         \frac{\partial L}{\partial x_i}=0 \Rightarrow \frac{\partial f}{\partial x_i}+\sum_{l=1}^L\lambda_l\frac{\partial h_l}{\partial x_i}=0 \\ \frac{\partial L}{\partial \lambda_l}=0 \Rightarrow h_l=0 \\ 
        
       
     ∂xi∂L=0⇒∂xi∂f+l=1∑Lλl∂xi∂hl=0∂λl∂L=0⇒hl=0
 上述两式即为 
     
      
       
       
         L 
        
       
         ( 
        
        
        
          x 
         
        
       
         , 
        
        
        
          λ 
         
        
       
         ) 
        
       
      
        L(\pmb x, \pmb \lambda) 
       
      
    L(x,λ)取极值的必要条件。第一个公式暂时不需要关心,主要看第二个公式 
     
      
       
        
        
          h 
         
        
          l 
         
        
       
         = 
        
       
         0 
        
       
      
        h_l=0 
       
      
    hl=0。也就是说,假设存在一组 
     
      
       
       
         ( 
        
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
         , 
        
        
         
         
           λ 
          
         
        
          ∗ 
         
        
       
         ) 
        
       
      
        (\pmb x^\ast, \pmb \lambda^\ast) 
       
      
    (x∗,λ∗)使得 
     
      
       
       
         L 
        
       
         ( 
        
        
        
          x 
         
        
       
         , 
        
        
        
          λ 
         
        
       
         ) 
        
       
      
        L(\pmb x, \pmb \lambda) 
       
      
    L(x,λ)取到极值点,那么必然有
  
      
       
        
         
         
           h 
          
         
           l 
          
         
        
          ( 
         
         
          
          
            x 
           
          
         
           ∗ 
          
         
        
          ) 
         
        
          = 
         
        
          0 
         
        
       
         h_l(\pmb x^\ast) = 0 
        
       
     hl(x∗)=0
 即等式约束已经被满足。此时
  
      
       
        
        
          L 
         
        
          ( 
         
         
          
          
            x 
           
          
         
           ∗ 
          
         
        
          , 
         
         
          
          
            λ 
           
          
         
           ∗ 
          
         
        
          ) 
         
        
          = 
         
        
          f 
         
        
          ( 
         
         
          
          
            x 
           
          
         
           ∗ 
          
         
        
          ) 
         
        
       
         L(\pmb x^\ast, \pmb \lambda^\ast)=f(\pmb x^\ast) 
        
       
     L(x∗,λ∗)=f(x∗)
 即最优解也等价。
虽然已经证明了,但好像依然挺绕的。接下来再画一个二维最优化问题的示意图,直观理解一下。
如下图所示。蓝色曲线为约束条件,所以可行解只能在该曲线上。3条黑色圈为原目标函数 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
      
        f(x,y) 
       
      
    f(x,y)的等高线,其值从外向内越来越小,分别为5、3和1。蓝色曲线和黑色等高线存在3种空间关系,分别是不相交、相交和相切。针对不相交的情况(图中C点),显然 
     
      
       
       
         h 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
         ≠ 
        
       
         0 
        
       
      
        h(x,y)\neq0 
       
      
    h(x,y)=0,所以是不可行解;针对相交的情况(图中B点),从相交点开始,沿着等高线降低方向寻找,必然存在更优解;针对相切的情况(图中A点),则恰好为最优解。
 
现在来看一下相切点处的特征。首先是 h ( x , y ) = 0 h(x,y)=0 h(x,y)=0,即 L ( x , λ ) L(\pmb x, \pmb \lambda) L(x,λ)取极值的第二个必要条件,自必不多说;其次是由于相切, f ( x , y ) f(x,y) f(x,y)和 h ( x , y ) h(x,y) h(x,y)的法向量共线,即梯度共线,由此可以推导出 L ( x , λ ) L(\pmb x, \pmb \lambda) L(x,λ)取极值的第一个必要条件。所以,原问题和新问题是完全等价的。
这里还需要额外说的一点是:图中 Δ f \Delta f Δf的方向肯定是向外的,因为梯度的定义表明了其是指向 f f f变大方向的;但是 Δ h \Delta h Δh的方向是不明确的,因为我们只有 h ( x , y ) = 0 h(x,y)=0 h(x,y)=0的信息,并不清楚朝哪个方向能让 h ( x , y ) h(x,y) h(x,y)变大,所以图中只是一个示意图。
不等式约束
如果最优化问题中不仅包含等式约束,还包含不等式约束,数学模型可以表达为
  
      
       
        
        
          m 
         
        
          i 
         
        
          n 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
         
        
          s.t.  
         
         
         
         
           h 
          
         
           l 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          l 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          2 
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
        
          L 
         
         
         
         
         
         
           g 
          
         
           m 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          ≤ 
         
        
          0 
         
        
          , 
         
        
          m 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          2 
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
        
          M 
         
        
       
         min f(\pmb x) \\ \text{s.t.} \ \qquad h_l(\pmb x) = 0, l=1,2,...,L \\ \qquad \qquad g_m(\pmb x) ≤ 0, m=1,2,...,M 
        
       
     minf(x)s.t. hl(x)=0,l=1,2,...,Lgm(x)≤0,m=1,2,...,M
求解该类问题的思路也很简单:先将不等式约束 g ( x ) g(\pmb x) g(x)转化为等式约束,然后再按照第二节中介绍的拉格朗日乘子法继续求解。
将不等式约束变为等式约束的方式是增加松弛变量 
     
      
       
        
        
          w 
         
        
          m 
         
        
          2 
         
        
       
      
        w_m^2 
       
      
    wm2:
  
      
       
        
         
         
           g 
          
         
           m 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          + 
         
         
         
           w 
          
         
           m 
          
         
           2 
          
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          m 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          2 
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
        
          M 
         
        
       
         g_m(\pmb x)+w_m^2=0, m=1,2,...,M 
        
       
     gm(x)+wm2=0,m=1,2,...,M
 至此,可以构造新的拉格朗日函数:
  
      
       
        
        
          L 
         
        
          ( 
         
         
         
           x 
          
         
        
          , 
         
         
         
           λ 
          
         
        
          , 
         
         
         
           w 
          
         
        
          ) 
         
        
          = 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          + 
         
         
         
           ∑ 
          
          
          
            l 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
         
           l 
          
         
         
         
           h 
          
         
           l 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          + 
         
         
         
           ∑ 
          
          
          
            m 
           
          
            = 
           
          
            1 
           
          
         
           M 
          
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
        
          [ 
         
         
         
           g 
          
         
           m 
          
         
        
          ( 
         
         
         
           x 
          
         
        
          ) 
         
        
          + 
         
         
         
           w 
          
         
           m 
          
         
           2 
          
         
        
          ] 
         
        
       
         L(\pmb x,\pmb \lambda, \pmb w)=f(\pmb x)+\sum_{l=1}^L\lambda_lh_l(\pmb x)+\sum_{m=1}^M\lambda_{L+m}[g_m(\pmb x)+w_m^2] 
        
       
     L(x,λ,w)=f(x)+l=1∑Lλlhl(x)+m=1∑MλL+m[gm(x)+wm2]
求一阶导数,可以得到最优解的必要条件如下:
  
      
       
        
         
          
          
            ∂ 
           
          
            L 
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          = 
         
        
          0 
         
        
          ⇒ 
         
         
          
          
            ∂ 
           
          
            f 
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          + 
         
         
         
           ∑ 
          
          
          
            l 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
         
           l 
          
         
         
          
          
            ∂ 
           
           
           
             h 
            
           
             l 
            
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          + 
         
         
         
           ∑ 
          
          
          
            m 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
         
          
          
            ∂ 
           
           
           
             g 
            
           
             m 
            
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          = 
         
        
          0 
         
         
         
          
          
            ∂ 
           
          
            L 
           
          
          
          
            ∂ 
           
           
           
             λ 
            
           
             l 
            
           
          
         
        
          = 
         
        
          0 
         
        
          ⇒ 
         
         
         
           h 
          
         
           l 
          
         
        
          = 
         
        
          0 
         
        
          , 
         
         
         
           g 
          
         
           m 
          
         
        
          + 
         
         
         
           w 
          
         
           m 
          
         
           2 
          
         
        
          = 
         
        
          0 
         
         
         
          
          
            ∂ 
           
          
            L 
           
          
          
          
            ∂ 
           
           
           
             w 
            
           
             m 
            
           
          
         
        
          = 
         
        
          0 
         
        
          ⇒ 
         
        
          2 
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
         
         
           w 
          
         
           m 
          
         
        
          = 
         
        
          0 
         
         
        
       
         \frac{\partial L}{\partial x_i}=0 \Rightarrow \frac{\partial f}{\partial x_i}+\sum_{l=1}^L\lambda_l\frac{\partial h_l}{\partial x_i}+\sum_{m=1}^L\lambda_{L+m}\frac{\partial g_m}{\partial x_i}=0 \\ \frac{\partial L}{\partial \lambda_l}=0 \Rightarrow h_l=0,g_m+w_m^2=0 \\ \frac{\partial L}{\partial w_m}=0 \Rightarrow 2\lambda_{L+m}w_m=0 \\ 
        
       
     ∂xi∂L=0⇒∂xi∂f+l=1∑Lλl∂xi∂hl+m=1∑LλL+m∂xi∂gm=0∂λl∂L=0⇒hl=0,gm+wm2=0∂wm∂L=0⇒2λL+mwm=0
KKT条件
事实上,针对包含不等式约束的情况,除了先转化为等式约束再使用拉格朗日乘子法这种“曲线救国”的方法,还有更直接的求解方法,那就是KKT条件。
针对上述同时包含等式和不等式约束的最优化问题,KKT条件为
  
      
       
        
         
          
          
            ∂ 
           
          
            f 
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          + 
         
         
         
           ∑ 
          
          
          
            l 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
         
           l 
          
         
         
          
          
            ∂ 
           
           
           
             h 
            
           
             l 
            
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          + 
         
         
         
           ∑ 
          
          
          
            m 
           
          
            = 
           
          
            1 
           
          
         
           L 
          
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
         
          
          
            ∂ 
           
           
           
             g 
            
           
             m 
            
           
          
          
          
            ∂ 
           
           
           
             x 
            
           
             i 
            
           
          
         
        
          = 
         
        
          0 
         
         
         
         
           h 
          
         
           l 
          
         
        
          = 
         
        
          0 
         
        
          , 
         
         
         
           g 
          
         
           m 
          
         
        
          ≤ 
         
        
          0 
         
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
         
         
           g 
          
         
           m 
          
         
        
          = 
         
        
          0 
         
         
         
         
           λ 
          
          
          
            L 
           
          
            + 
           
          
            m 
           
          
         
        
          ≥ 
         
        
          0 
         
         
        
       
         \frac{\partial f}{\partial x_i}+\sum_{l=1}^L\lambda_l\frac{\partial h_l}{\partial x_i}+\sum_{m=1}^L\lambda_{L+m}\frac{\partial g_m}{\partial x_i}=0 \\ h_l=0,g_m≤0 \\ \lambda_{L+m}g_m=0 \\ \lambda_{L+m}≥0 \\ 
        
       
     ∂xi∂f+l=1∑Lλl∂xi∂hl+m=1∑LλL+m∂xi∂gm=0hl=0,gm≤0λL+mgm=0λL+m≥0
需要注意的有三点:
 (1)相比上一节转化的拉格朗日乘子法,KKT中新增了约束 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
       
         ≥ 
        
       
         0 
        
       
      
        \lambda_{L+m}≥0 
       
      
    λL+m≥0;
 (2)相比KKT条件,拉格朗日乘子法中新增了变量 
     
      
       
        
        
          w 
         
        
       
      
        \pmb w 
       
      
    w;
 (3)拉格朗日乘子法中的 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
        
        
          w 
         
        
          m 
         
        
       
         = 
        
       
         0 
        
       
      
        \lambda_{L+m}w_m=0 
       
      
    λL+mwm=0和KKT条件中的 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
        
        
          g 
         
        
          m 
         
        
       
         = 
        
       
         0 
        
       
      
        \lambda_{L+m}g_m=0 
       
      
    λL+mgm=0是等价的。
接下来理解一下KKT条件。
假设 
     
      
       
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
      
        \pmb x^\ast 
       
      
    x∗为原问题的最优解。针对 
     
      
       
       
         g 
        
       
         ( 
        
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
         ) 
        
       
      
        g(\pmb x^\ast) 
       
      
    g(x∗),存在两种可能性:
 (1) 
     
      
       
       
         g 
        
       
         ( 
        
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
         ) 
        
       
         < 
        
       
         0 
        
       
      
        g(\pmb x^\ast)<0 
       
      
    g(x∗)<0。此时该约束没起到作用,可以直接去掉,问题退化为第二节的等式约束问题,此时 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
       
         = 
        
       
         0 
        
       
      
        \lambda_{L+m}=0 
       
      
    λL+m=0即可。
 (2) 
     
      
       
       
         g 
        
       
         ( 
        
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
         ) 
        
       
         = 
        
       
         0 
        
       
      
        g(\pmb x^\ast)=0 
       
      
    g(x∗)=0。此时该约束相当于新的等式约束,把第二节中的二维最优化图再搬运过来看一下。到了这里后,我们发现, 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
      
        f(x,y) 
       
      
    f(x,y)和 
     
      
       
       
         g 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
      
        g(x,y) 
       
      
    g(x,y)的法向量不仅要共线,而且方向还一定要恰好相反,即 
     
      
       
       
         g 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
         < 
        
       
         0 
        
       
      
        g(x,y)<0 
       
      
    g(x,y)<0必然在右侧。这是因为如果 
     
      
       
       
         g 
        
       
         ( 
        
       
         x 
        
       
         , 
        
       
         y 
        
       
         ) 
        
       
         < 
        
       
         0 
        
       
      
        g(x,y)<0 
       
      
    g(x,y)<0在左侧,则C点满足不等式约束,且目标函数值比A点更优,与 
     
      
       
       
         g 
        
       
         ( 
        
        
         
         
           x 
          
         
        
          ∗ 
         
        
       
         ) 
        
       
         = 
        
       
         0 
        
       
      
        g(\pmb x^\ast)=0 
       
      
    g(x∗)=0矛盾。

 综上可以推导出: 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
        
        
          g 
         
        
          m 
         
        
       
         = 
        
       
         0 
        
       
      
        \lambda_{L+m}g_m=0 
       
      
    λL+mgm=0和 
     
      
       
        
        
          λ 
         
         
         
           L 
          
         
           + 
          
         
           m 
          
         
        
       
         ≥ 
        
       
         0 
        
       
      
        \lambda_{L+m}≥0 
       
      
    λL+m≥0。



















