拉格朗日乘子法(lagrange multiplier)和kkt(karush-kuhn-tucker)條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是:只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。
對於無約束最優化問題,有很多經典的求解方法,參見無約束最優化方法。
先來看拉格朗日乘子法是什麼,再講為什麼。
minf(x
)s.t
.hi(
x)=0
i=1,
2...,n
minf(x)s.t.hi(x)=0i=1,2...,n
這個問題轉換為 m
in[f
(x)+
∑i=1
nλih
i(x)
](1)
(1)min[f(x)+∑i=1nλihi(x)] 其中
λi≠0
λi≠0
,稱為拉格朗日乘子。
下面看一下wikipedia上是如何解釋拉格朗日乘子法的合理性的。
現有乙個二維的優化問題:
minf(
x,y)
s.t.
g(x,
y)=c
(2) (2)minf(x,y)s.t.g(x,y)=c
我們可以畫圖來輔助思考。
綠線標出的是約束g(
x,y)
=cg(x,y)=c
的點的軌跡。藍線是f(
x,y)
f(x,y)
的等高線。箭頭表示斜率,和等高線的法線平行。
從圖上可以直觀地看到在最優解處,f和g的法線方向剛好相反(或者說叫梯度共線),即 ▽
[f(x
,y)+
λ(g(
x,y)
−c)]
=0λ≠
0(3)
(3)▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0
而滿足3 3
的點同時又是
4 4
的解。
minf
(x,y
)=f(
x,y)
+λ(g
(x,y
)−c)
(4) (4)min f(x,y)=f(x,y)+λ(g(x,y)−c) 所以
2 2和4
4等價。新方程f(
x,y)
f(x,y)
在達到極值時與f(
x,y)
f(x,y)
相等,因為f(
x,y)
f(x,y)
達到極值時g(
x,y)
−cg(x,y)−c
總等於零。
先看kkt條件是什麼,再講為什麼。le
tl(x
,μ)=
f(x)
+∑k=
1qμk
gk(x
)(5)
(5)letl(x,μ)=f(x)+∑k=1qμkgk(x) 其中
μk≥0
,gk(
x)≤0
μk≥0,gk(x)≤0∵μ
k≥0g
k(x)
≤0} ∵μk≥0gk(x)≤0}
=>μg
(x)≤
0 μg(x)≤0
∴ ∴
maxμl
(x,μ
)=f(
x)(6) (6)maxμl(x,μ)=f(x) ∴
∴minxf
(x)=
minx
maxμl(
x,μ)
(7) (7)minxf(x)=minxmaxμl(x,μ)
上面的推導到此中斷一下,我們看另外乙個式子。
maxμ
minxl(
x,μ)
=maxμ[
minxf(
x)+minxμ
g(x)
]=maxμ
minxf(
x)+max
μminxμ
g(x)
=minxf
(x)+
maxμ
minxμg
(x) maxμminxl(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)
這裡的u u和g
g都就向量,所以去掉了下標
k k
。另外一些博友不明白上式中
maxμ
minxf(
x)=minxf
(x) maxμminxf(x)=minxf(x)
是怎麼推出來的,其實很簡單,因為f(
x)f(x)
與變數u
u無關,所以這個等式就是成立的。 又
∵μk≥
0gk(
x)≤0
} ∵μk≥0gk(x)≤0}
=>
minxμg
(x)=
=>
minx
maxμl(
x,μ)
=max
μminxl
(x,μ
)=minxf(
x)minxmaxμl(x,μ)=maxμminxl(x,μ)=minxf(x)
我們把max
μminxl
(x,μ
) maxμminxl(x,μ)
稱為原問題
minx
maxμl(
x,μ)
minxmaxμl(x,μ)
的對偶問題,上式表明當滿足一定條件時原問題、對偶的解、以及
minxf(
x)minxf(x)
是相同的,且在最優解x∗
x∗處μ
=0or
g(x∗
)=0 μ=0org(x∗)=0。把x
∗ x∗
代入(6)
(6)得maxμl
(x∗,
μ)=f
(x∗)
maxμl(x∗,μ)=f(x∗)
,由(8)
(8)得max
μminxl
(x,μ
)=f(
x∗) maxμminxl(x,μ)=f(x∗)
,所以l(x
∗,μ)
=minxl
(x,μ
) l(x∗,μ)=minxl(x,μ)
,這說明x∗
x∗也是l
(x,μ
) l(x,μ)
的極值點,即∂l
(x,μ
)∂x|
x=x∗
=0∂l(x,μ)∂x|x=x∗=0
。最後總結一下:l(
x,μ)
=f(x
)+∑q
k=1μ
kgk(
x)μk
≥0gk
(x)≤
0⎫⎭⎬
⎪⎪l(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}
=>⎧⎩
⎨⎪⎪⎪
⎪min
xmaxμl
(x,μ
)=maxμ
minxl(
x,μ)
=minxf
(x)=
f(x∗
)μkg
k(x∗
)=0∂
l(x,
μ)∂x
|x=x
∗=0
=>⎧⎩
⎨⎪⎪⎪
⎪min
xmaxμl
(x,λ
,μ)=
maxμ
minxl(
x,λ,
μ)=minxf
(x)=
f(x∗
)μkg
k(x∗
)=0∂
l(x,
λ,μ)
∂x|x
=x∗=
0 {minxmaxμl(x,λ,μ)=maxμminxl(x,λ,μ)=minxf(x)=f(x∗)μkgk(x∗)=0∂l(x,λ,μ)∂x|x=x∗=0注:x
,λ,μ
x,λ,μ
都是向量。∂l
(x,λ
,μ)∂
x|x=
x∗=0
∂l(x,λ,μ)∂x|x=x∗=0表明f
(x) f(x)
在極值點x∗
x∗處的梯度是各個hi
(x∗)
hi(x∗)和g
k(x∗
) gk(x∗)
梯度的線性組合。
拉格朗日乘子法和KKT條件
深入理解拉格朗日乘子法 lagrange multiplier 和kkt條件 在求取有約束條件的優化問題時,拉格朗日乘子法 lagrange multiplier 和kkt 條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值 如果含有不等式約束,可以應用 kkt...
拉格朗日乘子法和KKT條件
拉格朗日乘子法 lagrange multiplier 和kkt karush kuhn tucker 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是 只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。對於無約束最優化問題,有很多...
拉格朗日乘子法和KKT條件
拉格朗日乘子法 lagrange multiplier 和kkt karush kuhn tucker 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是 只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。對於無約束最優化問題,有很多...