约束优化之Lagrange乘子法KKT条件对偶问题最容易理解解读
Posted bitcarmanlee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约束优化之Lagrange乘子法KKT条件对偶问题最容易理解解读相关的知识,希望对你有一定的参考价值。
1.无约束优化的常用方法
在讲带约束优化方法之前,我们先简单回顾一下常用的无约束优化方法。
1.梯度下降法
2.牛顿法/拟牛顿法
3.共轭梯度法
…
上面梯度系列的无约束条件下的最优化,基本解法是根据极值的必要条件一阶导数为0,通过泰勒展开等形式,构造不同数列不断逼近最优解。
2.带约束的优化
实际情况中,不带约束的场景比较少见,大部分都为带约束的优化问题。看一个大家都用的图:
上图中,蓝色的圈圈表示二元函数f(xy)投影在平面上的等高线,而蓝色的箭头则表示函数梯度方向。如果是不带预约条件的优化,我们直接用梯度下降法,沿着梯度方向找到使得函数值最小的点即可,这种解法我们已经很熟悉了,不再多说。
如果我们加上约束,即图中的黑线,该条线的意思是表示(x, y)的数值要落在黑线上才能满足约束条件。而蓝色圈圈(目标函数)与黑线(约束)有三种情况:
1.相离
说明两个函数没有交点,就是无解,此时不符合条件。
2.相交
两条曲线相交,说明是两个函数的解,但此时得到的一定不是最优解。因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小。
3.相切
如果两条曲线相切,说明是可行解。
假设目标函数为f(x),约束条件为g(x)=0,则两条曲线相交用数学式子可以表示为
∇
f
(
x
)
=
−
λ
∇
g
(
x
)
\\nabla f(x) = -\\lambda \\nabla g(x)
∇f(x)=−λ∇g(x)
其中,负号表示两者梯度方向相反。
3.等式约束与Lagrange乘子法
有如下优化问题:
m
i
n
f
(
x
)
s
.
t
.
g
(
x
)
=
0
\\beginaligned & min \\quad f(x) \\\\ & s.t. \\quad g(x) = 0 \\endaligned
minf(x)s.t.g(x)=0
为方便讨论,设f与g均为连续可导。Lagrange函数为
L
(
x
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
L(x, \\lambda) = f(x) + \\lambda g(x)
L(x,λ)=f(x)+λg(x)
其中,
λ
\\lambda
λ为Lagrange乘数。
通过上面的转换,我们将带约束优化的问题,转换成了无约束优化问题。
分别计算Lagrange函数对x与
λ
\\lambda
λ的偏导,并令其为0,就可以求得最优解。
∇
x
L
=
∂
L
∂
x
=
∇
f
+
λ
∇
g
=
0
∇
λ
L
=
∂
L
∂
λ
=
g
(
x
)
=
0
\\beginaligned & \\nabla_xL = \\frac\\partial L\\partial x = \\nabla f + \\lambda \\nabla g = 0 \\\\ & \\nabla_\\lambdaL = \\frac\\partial L\\partial \\lambda = g(x) = 0 \\endaligned
∇xL=∂x∂L=∇f+λ∇g=0∇λL=∂λ∂L=g(x)=0
其中第一式为定常方程式(stationary equation),如果我们将第二部分得到的结果移项,就会发现得到的结果与定常方程式完全一样。第二部分为约束条件。如果x为n维向量,则上面最终得到的是n+1个方程,包含有有n+1个变量,解这个线性方程组即可。
4.不等式约束与KKT条件
上面我们提到的是等式约束,实际情况中,可能还会有不等式约束条件。
先放一张大家都使用的图,方便理解。
对于不等式的条件,有两种情况:可行解
x
∗
x^*
x∗在g(x)<0的区域或者g(x)=0的边界上。
如果
x
∗
x^*
x∗在g(x)<0的区域,此时有没有g(x)<0这个条件,都是在
x
∗
x^*
x∗处取得极小值,相当于此时约束条件无效,原问题 退化成无约束优化问题。换句话说相当于不等式约束条件没有起到作用,此时可以直接最小化目标函数即可。
所以有:
∇
L
(
x
∗
)
=
0
,
λ
=
0
,
g
(
x
∗
)
<
0
\\nabla L(x^*) = 0, \\lambda=0, g(x^*)<0
∇L(x∗)=0,λ=0,g(x∗)<0
其中,
λ
=
0
\\lambda=0
λ=0相当于不等式约束没起作用。
如果
x
∗
x^*
x∗在g(x)=0的区域, 此时需要条件起作用,
λ
≠
0
\\lambda \\neq 0
λ=0。因此当可行解在g(x)=0上时,就变成了前面的等式约束,就可以用前面的朗格朗日乘子法求解。根据前面的分析不难得出此时需要满足的条件为
∇
L
(
x
∗
)
=
0
,
λ
>
0
,
g
(
x
∗
)
=
0
\\nabla L(x^*) = 0, \\lambda>0, g(x^*)=0
∇L(x∗)=0,λ>0,g(x∗)=0
如果将上面两个情况综合考虑,得到的条件为
λ
≥
0
g
(
x
∗
)
≤
0
λ
g
(
x
∗
)
=
0
\\lambda \\geq 0 \\\\ g(x^*) \\leq 0 \\\\ \\lambda g(x^*) = 0
λ≥0g(x∗)≤0λg(x∗)=0
下面我们将带不等式约束的优化问题做一般总结
有如下优化问题
m i n f ( x ) s . t . g j ( x ) = 0 , j = 1 , 2 , ⋯ , m h k ( x ) ≤ 0 , k = 1 , 2 , ⋯ , n \\beginaligned min \\quad & f(x) \\\\ s.t. \\quad & g_j(x) = 0, \\quad j=1, 2, \\cdots, m \\\\ & h_k(x) \\leq 0, \\quad k = 1, 2, \\cdots, n \\endaligned mins.t.f(x)gj(x)=0,j=1,2,⋯,mhk(x)≤0,k=1,2,⋯,n
我们可以将Lagrange函数写为
L
(
x
,
λ
j
,
μ
k
)
=
f
(
x
)
+
∑
j
=
1
m
λ
j
g
j
(
x
)
+
∑
k
=
1
n
μ
k
h
k
(
x
)
L(x, \\lambda_j, \\mu_k) = f(x) + \\sum_j=1^m \\lambda_j g_j(x) + \\sum_k=1^n \\mu_k h_k(x)
L(x,λj,μk)=f(x)+j=1∑mλjgj(x)+k=1∑nμkhk(x)
其中,
λ
j
\\lambda_j
λj是对应的等式约束
g
j
(
x
)
=
0
g_j(x)=0
gj(x)=0的拉格朗日乘子,
μ
k
\\mu_k
μk对应的是
h
k
(
x
)
≤
0
h_k(x) \\leq 0
hk(x)≤0的拉格朗日乘子(或者叫KKT乘子)。则KKT条件为:
∇
x
L
=
0
g
j
(
x
)
=
0
,
j
=
1
,
2
,
⋯
,
m
h
k
(
x
)
≤
0
,
k
=
1
,
2
,
⋯
,
n
μ
k
≥
0
,
μ
k
h
k
(
x
)
=
0
\\beginaligned & \\nabla_x L = 0\\\\ & g_j(x) = 0, \\quad j=1, 2, \\cdots, m \\\\ & h_k(x) \\leq 0, \\quad k=1,2,\\cdots, n \\\\ & \\mu_k \\geq 0, \\\\ & \\mu_k h_k(x) = 0 \\endaligned
∇xL=0gj(x)=0,j=1,以上是关于约束优化之Lagrange乘子法KKT条件对偶问题最容易理解解读的主要内容,如果未能解决你的问题,请参考以下文章
深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件