从拉格朗日乘数法到KKT条件

从拉格朗日乘数法到KKT条件

最近看论文遇到了Karush–Kuhn–Tucker (KKT)条件,想搞清楚这是个什么东东,因此就把这个东西认真学习一下并且分享出来,希望对大家有用。学习KKT就不得不先学习一下拉格朗日乘数法,于是不得不重新翻出被记忆尘封的高数~~

1.拉格朗日乘数法

在数学最优问题中,拉格朗日乘数法是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度(gradient)的线性组合里每个向量的系数。

以二元函数为例:

设给定二元函数

m a x z = f ( x , y ) s . t . φ ( x , y ) = 0 max z=f(x,y)\\s.t. φ(x,y)=0 maxz=f(x,y)s.t.φ(x,y)=0

为寻找z=f(x,y)在附加条件下的极值点,先做拉格朗日函数

F ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) F(x,y,\lambda)=f(x,y)+\lambda φ(x,y) F(x,y,λ)=f(x,y)+λφ(x,y)

其中 λ \lambda λ为参数。令 F ( x , y , λ ) F(x,y,λ) F(x,y,λ) x x x y y y λ λ λ的一阶偏导数等于零,即

F x ′ = ƒ x ′ ( x , y ) + λ φ x ′ ( x , y ) = 0 F'_x=ƒ'_x(x,y)+λφ'_x(x,y)=0 Fx=ƒx(x,y)+λφx(x,y)=0

F y ′ = ƒ y ′ ( x , y ) + λ φ y ′ ( x , y ) = 0 F'_y=ƒ'_y(x,y)+λφ'_y(x,y)=0 Fy=ƒy(x,y)+λφy(x,y)=0

F λ ′ = φ ( x , y ) = 0 F'_λ=φ(x,y)=0 Fλ=φ(x,y)=0

由上述方程组解出 x , y x,y x,y λ λ λ,如此求得的 ( x , y ) (x,y) (x,y),就是函数 z = ƒ ( x , y ) z=ƒ(x,y) z=ƒ(x,y)在附加条件 φ ( x , y ) = 0 φ(x,y)=0 φ(x,y)=0下的可能极值点。
若这样的点只有一个,由实际问题可直接确定此即所求的点。

下面这篇博客可以很好的帮助理解:

支持向量机(SVM)课前准备(一)–拉格朗日乘子法 - be·freedom - 博客园 (cnblogs.com)

2.KKT条件

先给出一个KKT条件的实例,我们优化的目标是:

m i n i m i z e f ( x ) s . t . k i = 0 g j ≤ 0 , i , j = 1 , 2 , 3 , . . . minimize f(x)\\ s.t. k_i = 0\\ g_j\leq0,i,j=1,2,3,... minimizef(x)s.t.ki=0gj0,i,j=1,2,3,...
其中,KKT条件如下:

∇ f + ∑ λ i k i + ω j g j = 0....... ( 1 ) k i = 0...... ( 2 ) g j = 0...... ( 3 ) u j ≥ 0...... ( 4 ) u j g j = 0...... ( 5 ) \nabla f+\sum\lambda_ik_i+\omega_jg_j=0.......(1)\\ k_i=0......(2)\\ g_j=0......(3)\\ u_j\geq0......(4)\\ u_jg_j=0......(5)\\ f+λiki+ωjgj=0.......(1)ki=0......(2)gj=0......(3)uj0......(4)ujgj=0......(5)
公式1、2、3容易理解。

公式4、5,通过一个简单例子说明:

m i n i m i z e f ( x ) s . t . g 1 ( x ) = a − x ≤ 0 g 2 ( x ) = x − b ≤ 0 minimize f(x)\\s.t. g_1(x)=a-x\leq0\\g_2(x)=x-b\leq0 minimizef(x)s.t.g1(x)=ax0g2(x)=xb0

g i g_i gi添加一个 ≥0 的松弛变量 a 1 2 , b 1 2 a_1^2,b_1^2 a12,b12。得到
g 1 ( x ) = a − x + a 1 2 g 2 ( x ) = x − b + b 1 2 g_1(x)=a-x+a_1^2\\g_2(x)=x-b+b_1^2 g1(x)=ax+a12g2(x)=xb+b12

由此,我们将不等式转化为等式约束,应用拉格朗日乘子法。

拉格朗日方程如下:

L ( x 1 , a 1 , b 1 , u 1 , u 2 ) = f ( x ) + u 1 ( a − x + a 1 2 ) + u 2 ( x − b + b 1 2 ) . . . ( 1 ) L(x_1,a_1,b_1,u_1,u_2)=f(x)+u_1(a-x+a_1^2)+u_2(x-b+b_1^2)...(1) L(x1,a1,b1,u1,u2)=f(x)+u1(ax+a12)+u2(xb+b12)...(1)
对方程求偏导如下:

{ ∂ F ∂ x = ∂ f ∂ x + u 1 d g 1 d x + u 2 d g 2 d x = ∂ f ∂ x − u 1 + u 2 = 0... ( 2 ) ∂ F ∂ u 1 = a − x + a 1 2 = g 1 + a 1 2 = 0... ( 3 ) ∂ F ∂ u 2 = x − b + a 1 2 = g 2 + b 1 2 = 0... ( 4 ) ∂ F ∂ a 1 = 2 u 1 a 1 = 0... ( 5 ) ∂ F ∂ b 1 = 2 u 2 b 1 = 0... ( 6 ) , u 1 ≥ 0 , u 2 ≥ 0 \begin{cases}\frac {\partial F}{\partial x} =\frac{\partial f}{\partial x}+u_1\frac{{d}g_1}{{d}x}+u_2\frac {{d}g_2}{{d}x}=\frac{\partial f}{\partial x}-u_1+u_2=0...(2)\\\frac {\partial F}{\partial u_1}=a-x+a_1^2=g_1+a_1^2=0...(3)\\\frac {\partial F}{\partial u_2}=x-b+a_1^2=g_2+b_1^2=0...(4)\\\frac {\partial F}{\partial a_1}=2u_1a_1=0...(5)\\\frac {\partial F}{\partial b_1}=2u_2b_1=0...(6),u_1\geq0,u_2\geq0\end{cases} xF=xf+u1dxdg1+u2dxdg2=xfu1+u2=0...(2)u1F=ax+a12=g1+a12=0...(3)u2F=xb+a12=g2+b12=0...(4)a1F=2u1a1=0...(5)b1F=2u2b1=0...(6),u10,u20

那么现在开始解方程组

首先考虑 式5,

u 1 = 0 , a 1 ≠ 0 u1=0,a1≠0 u1=0a1=0时,即 g 1 g_1 g1 f ( x ) f(x) f(x)无约束

u 1 ≠ 0 , a 1 = 0 u1≠0,a1=0 u1=0a1=0时,即 g 1 g_1 g1 f ( x ) f(x) f(x)有约束,且根据式3可知, g 1 g_1 g1 也等于0。

式6同理。注意,不等式对f(x)有约束效果时,不等式等于零。

此时,方程组简化成

{ ∂ f ∂ x + u 1 d g 1 d x + u 2 d g 2 d x = 0 u 1 g 1 ( x ) = 0 , u 2 g 2 ( x ) = 0 , μ 1 ≥ 0 , μ 1 ≥ 0. \begin{cases}\frac{\partial f}{\partial x}+u_1\frac{{d}g_1}{{d}x}+u_2\frac {{d}g_2}{{d}x}=0\\u_1g_1(x)=0,u_2g_2(x)=0,\\\mu_1\geq0,\mu_1\geq0.\end{cases} xf+u1dxdg1+u2dxdg2=0u1g1(x)=0,u2g2(x)=0,μ10,μ10.

推广,对于多个不等式约束,有

m i n f ( x ) s . t . g j ( x ) ≤ 0 ( j = 1 , 2 , . . . , m ) min f(x)\\s.t. g_j(x)\leq0(j=1,2,...,m) minf(x)s.t.gj(x)0(j=1,2,...,m)

我们有

{ ∂ f ( x ∗ ) ∂ x + ∑ j = 1 m u j d g j ( x ∗ ) d x ∗ = 0 u j g j ( x ∗ ) = 0 ( j = 1 , 2 , . . . , m ) , μ j ≥ 0 ( j = 1 , 2 , . . . m ) . \begin{cases}\frac{\partial f(x^*)}{\partial x}+\sum_{j=1}^{m}u_j\frac{{d}g_j(x^*)}{{d}x^*}=0\\u_jg_j(x^*)=0(j=1,2,...,m),\\\mu_j\geq0(j=1,2,...m).\end{cases} xf(x)+j=1mujdxdgj(x)=0ujgj(x)=0(j=1,2,...,m),μj0(j=1,2,...m).

上述不等式称之为KKT条件,与本文一开始略有不同的是没有了等式的约束(不用在此纠结,我们关心的是不等式的约束问题),其中 u j u_j uj称之为KKT乘子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值