引言
本篇文章將詳解帶有約束條件的最優化問題,約束條件分為等式約束與不等式約束,對於等式約束的優化問題,可以直接應用拉格朗日乘子法去求取最優值;對於含有不等式約束的優化問題,可以轉化為在滿足 kkt 約束條件下應用拉格朗日乘子法求解。拉格朗日求得的並不一定是最優解,只有在凸優化的情況下,才能保證得到的是最優解,所以本文稱拉格朗日乘子法得到的為可行解,其實就是區域性極小值,接下來從無約束優化開始一一講解。
無約束優化
首先考慮乙個不帶任何約束的優化問題,對於變數 x∈
rn的函式 f(
x),無約束優化問題如下:
minxf(
x)該問題很好解,根據 fermat 定理,直接找到使目標函式得 0 的點即可 即 ∇x
f(x)
=0,如果沒有解析解的話,可以使用梯度下降或牛頓方法等迭代的手段來使 x 沿負梯度方向逐步逼近極小值點。
等式約束優化
當目標函式加上約束條件之後,問題就變成如下形式:
minxf(
x)s.
t.hi
(x)=
0,i=
1,2,
...,
m 約束條件會將解的範圍限定在乙個可行域,此時不一定能找到使得 ∇xf(x) 為 0 的點,只需找到在可行域內使得 f(x) 最小的值即可,常用的方法即為拉格朗日乘子法,該方法首先引入 lagrange multiplier α∈rm ,構建 lagrangian 如下: l(
x,α)
=f(x
)+∑i
=1mα
ihi(
x)求解方法如下:首先對 lagrangian 關於
α 與
x 求 : {∇
xl(x
,α)=
0∇αl
(x,α
)=0
令導數為 0 ,求得x 、
α的值後,將
x 帶入 f(
x)即為在約束條件 hi
(x) 下的可行解。這樣做的意義是什麼呢? 接下來看乙個直觀的示例,對於二維情況下的目標函式是 f(
x,y)
,在平面中畫出 f(
x,y)
的等高線,如下圖的虛線所示, 並只給出乙個約束等式 h(
x,y)
=0,如下圖的綠線所示,目標函式 f(
x,y)
與約束 g(
x,y)
只有三種情況,相交、相切或者沒有交集,沒交集肯定不是解,只有相交或者相切可能是解,但相交得到的一定不是最優值,因為相交意味著肯定還存在其它的等高線在該條等高線的內部或者外部,使得新的等高線與目標函式的交點的值更大或者更小,這就意味著只有等高線與目標函式的曲線相切的時候,才可能得到可行解.
因此給出結論:拉格朗日乘子法取得極值的必要條件是目標函式與約束函式相切,這時兩者的法向量是平行的,即 ∇x
f(x)
+α∇x
h(x)
=0所以只要滿足上述等式,且滿足之前的約束 hi
(x)=
0,i=
1,2,
…,m ,即可得到解,聯立起來,正好得到就是拉格朗日乘子法。這裡只是直觀展示了一下拉格朗日乘子法的幾何推導 ,並沒有給出詳細的證明。
不等式約束優化
當約束加上不等式之後,情況變得更加複雜,首先來看乙個簡單的情況,給定如下不等式約束問題:
minxf(
x)s.
t.g(
x)≤0
對應的 lagrangian 與圖形分別如下所示: l(
x,λ)
=f(x
)+λg
(x)
這時的可行解必須落在約束區域 g(x) 之內,下圖給出了目標函式的等高線與約束:
由圖可見可行解
x 只能在 g(
x)<
0或者 g(
x)=0
的區域裡取得:
當約束區域包含目標函式原有的的可行解時,此時加上約束可行解扔落在約束區域內部,對應 g(
x)<
0 的情況,這時約束條件不起作用;當約束區域不包含目標函式原有的可行解時,此時加上約束後可行解落在邊界 g(
x)=0
上。下圖分別描述了兩種情況,右圖表示加上約束可行解會落在約束區域的邊界上。
以上兩種情況就是說,要麼可行解落在約束邊界上即得 g(
x)=0
,要麼可行解落在約束區域內部,此時約束不起作用,另 λ=
0 消去約束即可,所以無論哪種情況都會得到: λg
(x)=
0 還有乙個問題是
λ 的取值,在等式約束優化中,約束函式與目標函式的梯度只要滿足平行即可,而在不等式約束中則不然,若 λ≠
0,這便說明 可行解
x 是落在約束區域的邊界上的,這時可行解應盡量靠近無約束時的解。又因為約束區域邊界方程的梯度方向指向邊界函式值大於0的區域,所以在約束邊界上,目標函式的負梯度方向應該遠離約束區域朝向無約束時的解,此時正好可得約束函式的梯度方向與目標函式的負梯度方向應相同: −∇
xf(x
)=λ∇
xg(x
)上式需要滿足的要求是拉格朗日乘子
λ>
0 ,這個問題可以舉乙個形象的例子,假設你去爬山,目標是山頂,但有乙個障礙擋住了通向山頂的路,所以只能沿著障礙爬到盡可能靠近山頂的位置,然後望著山頂嘆嘆氣,這裡山頂便是目標函式的可行解,障礙便是約束函式的邊界,此時的梯度方向一定是指向山頂的,與障礙的梯度同向,下圖描述了這種情況 :
可見對於不等式約束,只要滿足一定的條件,依然可以使用拉格朗日乘子法解決,這裡的條件便是 kkt 條件。接下來給出形式化的 kkt 條件 首先給出形式化的不等式約束優化問題:
minxf(
x)s.
t.hi
(x)=
0,i=
1,2,
...,
mgj(
x)≤0
,j=1
,2,.
..,n
列出 lagrangian 得到無約束優化問題: l(
x,α,
β)=f
(x)+
∑i=1
mαih
i(x)
+∑j=
1nβi
gi(x
) 經過之前的分析,便得知加上不等式約束後可行解 x 需要滿足的就是以下的 kkt 條件: ∇x
l(x,
α,β)
βjgj
(x)h
i(x)
gj(x
)βj=
0=0,
j=1,
2,..
.,n=
0,i=
1,2,
...,
m≤0,
j=1,
2,..
.,n≥
0,j=
1,2,
...,
n 滿足 kkt 條件後極小化 lagrangian 即可得到在不等式約束條件下的可行解。 kkt 條件看起來很多,其實很好理解:
(1) :拉格朗日取得可行解的必要條件;
(2) :這就是以上分析的乙個比較有意思的約束,稱作鬆弛互補條件;
(3) ∼ (4) :初始的約束條件;
(5) :不等式約束的 lagrange multiplier 需滿足的條件。
書:prml | 《機器學習方法》-李航 |《機器學習》-周志華
nice ppt
拉格朗日乘子法(有約束優化問題)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!拉格朗日乘子法 lagrange multiplier 和kkt karush kuhn tucker 條件是求解約束優化問題的重要方法,在有等式約束時使用拉格朗日乘子法,在有不等約束時使用kkt條件。前提是 只有當目標函式為凸函式時,使用這兩種方...
ML 約束優化方法 拉格朗日乘子法與KKT條件
本篇文章將詳解帶有約束條件的最優化問題,約束條件分為等式約束與不等式約束,對於等式約束的優化問題,可以直接應用拉格朗日乘子法去求取最優值 對於含有不等式約束的優化問題,可以轉化為在滿足 kkt 約束條件下應用拉格朗日乘子法求解。拉格朗日求得的並不一定是最優解,只有在凸優化的情況下,才能保證得到的是最...
最優化理論(二)拉格朗日乘子法
引入 優化問題通常是指對於給定的某一函式,求其在指定作用域上的全域性最小值 因為最小值與最大值可以很容易轉化,即最大值問題可以轉化成最小值問題 這是最簡單的情況,解決方法通常是函式對變數求導,令求導函式等於0的點可能是極值點。將結果帶回原函式進行驗證即可。這種方法可以將乙個有n個變數與k個約束條件的...