前言
最優化問題的求解方法在機器學習算法中是經常被用到的。下面是一個最優化問題的一個簡單概述:
求解f(x)最小值時的x∗,即:
xminf(x)
無約束時,可通過求導的方式解決。事實情況中會涉及不同約束條件(s.t.),即存在等式約束和不等式約束。如下:
- 等式約束:hi(x)=0,i=1,2,3,…,m
- 不等式約束:gj(x)≤0,j=1,2,3,…,n
- 同時存在等式約束和不等式約束:KKT(Karush-Kuhn-Tucker)條件
對於上面的問題該如何求解呢?
1 拉格朗日乘子法
通過拉格朗日函數將約束問題轉化爲無約束問題,在無約束問題中就方便求解了,這裏主要是將等式約束轉換爲拉格朗日函數。則有:
目標函數爲f(x),約束條件爲:
hk(x),k=1,2,3,…,l
對該優化問題建模就有:
minf(x)s.t.hk(x)=0
這時需要構建拉格朗日函數,將約束的問題轉換爲無約束的優化問題。
在上圖中可以看出,只有相切的時候,纔有可能是極值點,在相切的地方h(x)的梯度和f(x)的梯度應該在同一條直線上,即在極值點有:
∇f(x)=λ∇h(x)
根據上述分析,可將將原始優化問題表示爲:
L(x,λ)=f(x)+k=1∑lλkhk(x)
L(x,λ)即拉格朗日函數,λk是拉格朗日乘子。拉格朗日函數對x求偏導的結果爲0時,即爲最優解。
2 KKT條件
通過KKT條件將不等式約束轉換爲拉格朗日函數。優化問題中經常包含等式約束和不等式約束。對問題建模問題建模如下:
minf(x)s.t.hk(x)=0,k=1,2,⋯,lgj(x)≤0,j=1,2,,⋯,n
對於等式約束,可以引入拉格朗日乘子進行轉換。對於不等式約束使用KKT條件構造拉格朗日乘子,構造結果如下:
L(x,λ,μ)=f(x)+k=1∑lλkhk(x)+j=1∑nμjgj(x)
其中,λk是爲等式約束引入的拉格朗日乘子,μj是爲不等式約束引入的鬆弛變量,也叫KKT乘子,需要注意的是KKT乘子是大於0的。這樣就將有約束的優化問題轉換爲無約束問題的優化了,通過求導即可求出極值點。
其中,求出的極值點x∗滿足KKT條件:
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∇f(x∗)+k∑λk∇hk(x∗)+j∑μj∇gj(x∗)μjμjgj(x∗)gj(x∗)=0≥0=0≤0
注: f(x)、g(x)結尾凸函數
3 對偶問題
有時候原優化問題很難求解,爲了解決問題,可將原優化問題進行等效轉化,然後再求解。原優化問題:
minf(x)s.t.hk(x)=0,k=1,2,⋯,lgj(x)≤0,j=1,2,,⋯,n
其對應的拉格朗日函數:
L(x,λ,μ)=f(x)+i=1∑mαihi(x)+j=1∑nβjgj(x)
對上式先最大化再最小化:
xmin[α,β;βj≥0maxL(x,α,β)]=xmin{f(x)+α,β;βj≥0max[i=1∑mαihi(x)+j=1∑nβjgj(x)]}
在滿足KKT條件的情況下,該式和原優化問題式等價的。下面來看看如何證明。
證明:
將上式分爲兩部分:
- 可行解區域內,原優化問題的約束條件都得到滿足。因爲hi(x)=0,所以不管α如何變化,必然有αhi(x)=0。gj(x)≤0,且限定了βj>0,則βjgi(x)最大值爲0。綜上,在可行解區域內:
α,β;βj≥0maxL(x,α,β)=f(x)+α,β;βj≥0max[i=1∑mαihi(x)+j=1∑nβjgj(x)]=f(x)
- 可行解區域外,此時原優化問題的約束條件未滿足。若hi(x)=0,則最大化後爲+∞。若gj(x)>0,則最大化後也爲+∞。所以在可行解區域外:
α,β;βj≥0maxL(x,α,β)=+∞
綜上兩個論域,f(x)在可行域內最小化,等於α,β;βj≥0maxL(x,α,β)的最小化,而在可行域外,α,β;βj≥0maxL(x,α,β)無極值。這樣當嘗試對其進行最小化時,也就相當於原優化問題了。
接着構建對偶問題
有如下定義:
θp(x)=α,β;βi≥0maxL(x,α,β)
則最小化primal(原始)問題與原問題有同樣的解:
xminθp(x)=xminα,β;βi≥0maxL(x,α,β)
定義dual(對偶)優化問題如下:
α,β;βi≥0maxθD(α,β)=α,β;βi≥0maxxminL(x,α,β)
注: θp是針對α、β的優化,θD是針對w的優化。
根據上面的內容再做進一步定義:
p∗=xminθp(x)爲primal最小化問題的值,
d∗=α,β;βi≥0maxθD(α,β)爲Dual問題的值,
他們之間滿足:
d∗=α,β;βi≥0maxxminL(x,α,β)≤xminα,β;βi≥0maxL(x,α,β)=p∗
只有在KKT條件成立時,纔有d∗=p∗,此時,就可以通過Dual問題來求解primal問題。
對偶問題證明:
d∗=α,β;βi≥0maxxminL(x,α,β)≤xminα,β;βi≥0maxL(x,α,β)=p∗
對任意(x,α,β),如下不等式一定成立:
θD(α,β)=xminL(x,α,β)≤L(x,α,β)≤α,β;βi≥0maxL(x,α,β)=θp(x)
即:
θD(α,β)≤θp(x)
所以:
α,β;βi≥0maxθD(α,β)≤xminθp(x)
即可得到:
d∗=α,β;βi≥0maxxminL(x,α,β)≤xminα,β;βi≥0maxL(x,α,β)=p∗
總結
上面一些內容也是從網絡習得,也存在一些不嚴謹的地方,如有錯誤還請批評指正。