拉格朗日乘子法和KKT條件

2021-08-01 07:06:34 字數 4435 閱讀 8704

拉格朗日乘子法(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條件。前提是 只有當目標函式為凸函式時,使用這兩種方法才保證求得的是最優解。對於無約束最優化問題,有很多...