【优化】拉格朗日乘子法与KKT条件

一、无约束优化问题

  • 首先考虑一个不带任何约束的优化问题: min ⁡ x ⁡ f ( x ) \min_x⁡f(x) xminf(x) 其中 x ∈ R d x∈R^d xRd
  • 根据Fermat定理,直接求解梯度等于0的方程: ∇ x f ( x ) = 0 ∇_xf(x)=0 xf(x)=0
  • 这个方程的解叫做函数 f ( x ) f(x) f(x)的无条件极值,可能有多个,最小的就是 f ( x ) f(x) f(x)的最小值。
  • 下面的推导中,我们把上面方程的解称为: f ( x ) f(x) f(x)全局最优解
  • 如果没有解析解,可以使用梯度下降或牛顿方法等迭代的手段来使 x 沿负梯度方向逐步逼近极小值点。

二、等式约束优化问题

  • 问题描述: min ⁡ x ⁡ f ( x ) \min_x⁡f(x) xminf(x) s . t . g ( x ) = 0 s.t. \quad g(x)=0 s.t.g(x)=0其中x∈R^d.
  • 二维平面如下图所示,约束条件在红线上:
    【优化】拉格朗日乘子法与KKT条件_第1张图片
  • 从几何角度看,该问题的目标是在由方程 g ( x ) = 0 g(x)=0 g(x)=0确定的d-1维曲面上寻找能使目标函数 f ( x ) f(x) f(x)最小化的点.
  • 约束条件会将解的范围限定在一个可行域,此时 ∇ f ( x ) = 0 ∇f(x)=0 f(x)=0的解不一定在这个可行域内,我们只需找到在可行域内使得 f ( x ) f(x) f(x)最小的值即可,即:
    • 如果 ∇ f ( x ∗ ) = 0 ∇f(x^* )=0 f(x)=0的解 x ∗ x^* x在约束区域内,那么 x ∗ x^* x就是最优解 ,即全局最优解一定是约束条件下的最优解
    • 如果约束条件下, ∇ f ( x ) ! = 0 ∇f(x)!=0 f(x)!=0 ,即全局最优解没用落在约束区域内,那么就在约束区间中寻找最接近全局最优解的点作为束条件下的最优解。

  • 为了更好的理解拉格朗日乘子法推导,这里先讨论一些梯度的含义
    • 假设二维条件下的约束曲线为: g ( x , y ) = 0 g(x,y)=0 g(x,y)=0,如上图的红线。其梯度为: ∇ g ( x ) = [ ∂ g ( x , y ) ∂ x , ∂ g ( x , y ) ∂ y ] ∇g(x)=[\frac{∂g(x,y)}{∂x},\frac{∂g(x,y)}{∂y}] g(x)=[xg(x,y),yg(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的方向。
    • 也可以这么理解: z = g ( x , y ) z=g(x,y) z=g(x,y),为一个二元函数,其图像是三维空间总的有个立体图形,则约束曲面( g ( x , y ) = 0 g(x,y)=0 g(x,y)=0)为: z = g ( x , y ) z=g(x,y) z=g(x,y) x o y xoy xoy坐标面的交线。那么 z z z的梯度为: ∇ z = ∇ g ( x ) = [ ∂ z ∂ x , ∂ z ∂ y ] = [ ∂ g ( x , y ) ∂ x , ∂ g ( x , y ) ∂ y ] ∇z=∇g(x)=[\frac{∂z}{∂x},\frac{∂z}{∂y}]=[\frac{∂g(x,y)}{∂x},\frac{∂g(x,y)}{∂y}] z=g(x)=[xz,yz]=[xg(x,y),yg(x,y)]其含义为函数值 z z z增长最快的方向,即沿着 ∇ z ∇z z改变 ( x , y ) (x,y) (x,y), z z z增长最快。所以在 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0的点沿着梯度方向走, z z z必定变大,所以梯度指向 g ( x , y ) > 0 g(x,y)>0 g(x,y)>0的方向。
    • 所以约束条件 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0其实就是目标函数目标函数( f ( x ) f(x) f(x))定义域中的一个区域。目标函数可以写做: z = f ( x ) z=f(x) z=f(x),即目标函数图像比约束条件多一个维度。
    • 根据上面梯度含义,如果 x x x(向量)沿着一个与 − ∇ f ( x ) -∇f(x) f(x)方向夹角小于90的方向移动 f ( x ) f(x) f(x)一定会减小。

  • 根据上面性质我们得出:在最优点 x ∗ x^* x,目标函数在该点的梯度 ∇ f ( x ∗ ) ∇f(x^*) f(x)正交于约束曲面,即 ∇ g ( x ∗ ) / / ∇ f ( x ∗ ) ∇g(x^*)//∇f(x^*) g(x)//f(x)
    • 证明:反证法,如果在最优点 x ∗ x^* x ∇ g ( x ∗ ) ∇g(x^*) g(x) ∇ f ( x ∗ ) ∇f(x^*) f(x)不平行,那么 g ( x ) g(x) g(x) x ∗ x^* x点的切线方向(记作 Δ g ( x ∗ ) Δg(x^*) Δg(x))与 ∇ f ( x ∗ ) ∇f(x^*) f(x)的夹角不等于90度,
      • 当夹角小于90度,那么 − Δ g ( x ∗ ) -Δg(x^*) Δg(x) − ∇ f ( x ∗ ) -∇f(x^*) f(x)夹角小于90度,那只要我们沿着切线反方向走 f ( x ) f(x) f(x)函数值会下降。
      • 当夹角大于90度,那么 Δ g ( x ∗ ) Δg(x^*) Δg(x) − ∇ f ( x ∗ ) -∇f(x^*) f(x)夹角小于90度,那只要我们沿着切线方向走 f ( x ) f(x) f(x)函数值会下降。
      • 总结:只要 ∇ f ( x ∗ ) ∇f(x^*) f(x) Δ g ( x ∗ ) Δg(x^*) Δg(x)不正交,沿着切线方向或方向 f ( x ) f(x) f(x)函数值都会下降。
  • 由此可知,在最优点 x ∗ x^* x,梯度 ∇ g ( x ∗ ) ∇g(x^*) g(x) ∇ f ( x ∗ ) ∇f(x^*) f(x)的方向必相同或相反,即存在常数 λ λ λ使得: ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 ∇f(x^* )+λ∇g(x^* )=0 f(x)+λg(x)=0 λ = 0 λ=0 λ=0是为 ∇ f ( x ∗ ) = 0 ∇f(x^* )=0 f(x)=0的情况,即全局最优解在约束区域中。
  • λ λ λ称为拉格朗日乘子,定义拉格朗日函数 L ( x , λ ) = f ( x ) + λ g ( x ) L(x,λ)=f(x)+λg(x) L(x,λ)=f(x)+λg(x)
  • 求拉格朗日函数的无条件极值,即求下面方程组: { ∂ L ( x , λ ) ∂ x = ∇ f ( x ) + λ ∇ g ( x ) = 0 ∂ L ( x , λ ) ∂ w = g ( x ) = 0 \begin{cases} \frac{∂L(x,λ)}{∂x}=∇f(x)+λ∇g(x)=0\\\\ \frac{∂L(x,λ)}{∂w}=g(x)=0 \end{cases} xL(x,λ)=f(x)+λg(x)=0wL(x,λ)=g(x)=0
  • 由此可以看出原约束优化问题可转化为对拉格朗日函数 L ( x , λ ) L(x,λ) L(x,λ)无约束优化问题.

三、不等式约束问题

  • 问题描述: min ⁡ x ⁡ f ( x ) \min_x⁡f(x) xminf(x) s . t . g ( x ) ≤ 0 s.t. \quad g(x)≤0 s.t.g(x)0其中x∈R^d.
  • 二维情况,如下图:
    【优化】拉格朗日乘子法与KKT条件_第2张图片
  • 此时有两种情况:(这里和其他人写的可能不一样,如果有错误欢迎指正)
    • 第一种情况:就是目标函数 f ( x ) f(x) f(x)的无条件极值(全局最优解)落在约束区域( g ( x ) ≤ 0 g(x)≤0 g(x)0)内,即下面公式有解: { ∇ f ( x ) = 0 g ( x ) ≤ 0 \begin{cases} ∇f(x)=0 \\ g(x)≤0 \end{cases} {f(x)=0g(x)0那么这个解就是我们要求的约束区域上的最优解。
    • 第二种情况:就是目标函数 f ( x ) f(x) f(x)的无条件极值落在约束区域外面,即在整个约束区域内 ∇ f ( x ) ! = 0 ∇f(x) != 0 f(x)!=0
    • 这时约束条件的下最优解应尽量靠近无约束时的全局最优解,所以这种情况的约束条件下的最优解一定在边界上。
    • 那么怎样才算个最靠近全局最优解呢?假设 x ∗ x^* x为这个要求的约束条件下的最优解,那么必定有: ∇ f ( x ∗ ) ∇f(x^* ) f(x)的方向必与 ∇ g ( x ∗ ) ∇g(x^* ) g(x)相反,即存在常数 λ > 0 λ>0 λ>0使得: ∇ f ( x ∗ ) + λ ∇ g ( x ∗ ) = 0 ∇f(x^* )+λ∇g(x^* )=0 f(x)+λg(x)=0为啥 λ > 0 λ>0 λ>0呢?我们先看一张具体的图:
      【优化】拉格朗日乘子法与KKT条件_第3张图片
      图中红色向量为 ∇ g ( x ) ∇g(x) g(x),蓝色向量为 − ∇ f ( x ) -∇f(x) f(x),因为 − ∇ f ( x ) -∇f(x) f(x)为目标函数减少最快的方向,那么它一定指向全局最优解,所以只有与 − ∇ f ( x ) -∇f(x) f(x) ∇ g ( x ) ∇g(x) g(x)向时,无论沿着边界往那个方向移动走 f ( x ) f(x) f(x)都不会变小, f ( x ) f(x) f(x)要减小只有走出约束区域。
    • 两种情况的图:
      【优化】拉格朗日乘子法与KKT条件_第4张图片
  • 现在用拉格朗日乘子法将上面两种情况统一起来:
    • 首先定义拉格朗日函数: L ( x , λ ) = f ( x ) + λ g ( x ) L(x,λ)=f(x)+λg(x) L(x,λ)=f(x)+λg(x)
    • 将两种情况统一如下: { ∂ L ( x , λ ) ∂ x = ∇ f ( x ) + λ ∇ g ( x ) = 0 g ( x ) ≤ 0 λ ≥ 0 g ( x ) λ = 0 \begin{cases} \frac{∂L(x,λ)}{∂x}=∇f(x)+λ∇g(x)=0 \\ g(x)≤0 \\ λ≥0\\ g(x)λ=0 \end{cases} xL(x,λ)=f(x)+λg(x)=0g(x)0λ0g(x)λ=0
    • 分析:
      • λ = 0 λ=0 λ=0时:对应第一种情况: { ∇ f ( x ) = 0 g ( x ) ≤ 0 \begin{cases} ∇f(x)=0 \\ g(x)≤0 \end{cases} {f(x)=0g(x)0
      • λ > 0 λ>0 λ>0时,则根据最后一个约束条件可知 g ( x ) = 0 g(x)=0 g(x)=0,对应第二种情况: { ∇ f ( x ) + λ ∇ g ( x ) = 0 g ( x ) = 0 λ > 0 \begin{cases} ∇f(x)+λ∇g(x)=0 \\ g(x)=0\\ λ>0 \end{cases} f(x)+λg(x)=0g(x)=0λ>0
  • 一般很少求解下面方程来求最优解: { ∂ L ( x , λ ) ∂ x = ∇ f ( x ) + λ ∇ g ( x ) = 0 g ( x ) ≤ 0 λ ≥ 0 g ( x ) λ = 0 \begin{cases} \frac{∂L(x,λ)}{∂x}=∇f(x)+λ∇g(x)=0 \\ g(x)≤0 \\ λ≥0\\ g(x)λ=0 \end{cases} xL(x,λ)=f(x)+λg(x)=0g(x)0λ0g(x)λ=0一般作为判断最优解的条件,即若 x ∗ x^* x为最优解,那么必定满足上面方程,该方程组也叫做KKT条件

四、多个约束问题

  • 问题描述: min ⁡ x ⁡ f ( x ) \min_x⁡f(x) xminf(x) s . t . h i ( x ) = 0 , i = 1 , 2 … , m g j ( x ) ≤ 0 , j = 1 , 2 … . , n s.t. \quad h_i (x)=0,i=1,2…,m\\ g_j (x)≤0,j=1,2….,n s.t.hi(x)=0,i=1,2,mgj(x)0,j=1,2.,n其中x∈R^d.
  • 引入拉格朗日乘子 λ = ( λ 1 , λ 2 , … , λ m ) λ=(λ_1,λ_2,…,λ_m) λ=(λ1,λ2,,λm) μ = ( μ 1 , μ 2 , … , μ n ) μ=(μ_1,μ_2,…,μ_n) μ=(μ1,μ2,,μn),相应的拉格朗日函数为: L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 n μ j g j ( x ) L(x,λ,μ)=f(x)+∑_{i=1}^m λ_i h_i (x) +∑_{j=1}^n μ_j g_j (x) L(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(x)KKT条件为: { ∂ L ( x , λ , μ ) ∂ x = ∇ f ( x ) + ∑ i = 1 m λ i ∇ h i ( x ) + ∑ j = 1 n μ j ∇ g j ( x ) = 0 g j ( x ) ≤ 0 μ j ≥ 0 g j ( x ) μ j = 0 \begin{cases} \frac{∂L(x,λ,μ)}{∂x}=∇f(x)+∑_{i=1}^m λ_i ∇h_i (x) +∑_{j=1}^n μ_j ∇g_j (x)=0 \\ g_j(x)≤0 \\ μ_j≥0\\ g_j(x)μ_j=0 \end{cases} xL(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(x)=0gj(x)0μj0gj(x)μj=0

你可能感兴趣的:(机器学习)