如何搞定機(jī)器學(xué)習(xí)中的拉格朗日?看看這個乘子法與KKT條件大招
一 前置知識
本文引用地址:http://www.ex-cimer.com/article/201709/363864.htm拉格朗日乘子法是一種尋找多元函數(shù)在一組約束下的極值方法,通過引入拉格朗日乘子,可將有m個變量和n個約束條件的最優(yōu)化問題轉(zhuǎn)化為具有m+n個變量的無約束優(yōu)化問題。在介紹拉格朗日乘子法之前,先簡要的介紹一些前置知識,然后就拉格朗日乘子法談一下自己的理解。
1.梯度
梯度是一個與方向?qū)?shù)有關(guān)的概念,它是一個向量。在二元函數(shù)的情形,設(shè)函數(shù)f(x,y)在平面區(qū)域D內(nèi)具有一階連續(xù)偏導(dǎo),則對于每一點P(x0,y0)∈D,都可以定義出一個向量:fx(x0,y0)i+fy(x0,y0)j ,稱該向量為函數(shù)f(x,y)在點P(x0,y0)
的梯度。并記作grad f(x0,y0) 或者?f(x0,y0),即 grad f(x0,y0) = ?f(x0,y0) = fx(x0,y0)i+fy(x0,y0)j=(fx(x0,y0),fy(x0,y0)) 。
再來看看梯度和方向?qū)?shù)的關(guān)系:如果函數(shù)f(x,y)在P(x0,y0)點可微,el = (cosα,cosβ)是與方向L同向的單位向量,則?f/?L|(x0,y0) = fx(x0,y0)cosα+fy(x0,y0)cosβ = grad f(x0,y0).el = |grad f(x0,y0)|.cosθ ,其中θ表示的梯度與el 的夾角。由此可知,當(dāng)θ = 0時,el 與梯度的方向相同時,此時方向?qū)?shù)最大,函數(shù)f(x,y)增長最快;當(dāng)θ = π時,el 與梯度的方向相反時,此時方向?qū)?shù)最小且為負(fù),函數(shù)f(x,y)減小最快。
2.等高線(等值線)
通常來說,二元函數(shù) z = f(x,y)在幾何上表示一個曲面,這個曲面被平面 z = c(c為常數(shù))所截得的曲線L的方程為:
這是一條空間曲線,這條曲線L在xOy平面上的投影是一條平面曲線L*,它在xOy平面直角坐標(biāo)系中的方程為:f(x,y) = c .對于曲線L*上的一切點,已給函數(shù)的函數(shù)值都是c,所以我們稱平面曲線L*為函數(shù)z = f(x,y)的等值線(等高線)。再來看看等高線的一些性質(zhì):
若fx,fy不同時為零,則等高線 f(x,y) = c上任一點P(x0,y0)處的一個單位法向量為:
這表明函數(shù)f(x,y)在一點(x0,y0)的梯度?f(x0,y0)的方向就是等高線f(x,y) = c在這點的法向量的方向,而梯度的模|?f(x0,y0)|就是沿這個法線方向的方向?qū)?shù)?f/?n,于是有:
二 拉格朗日乘子法
1.等式約束
首先看一下什么是拉格朗日乘子法,已知一個問題:
要求f(x,y)在g(x,y)=c的前提下的最小值,我們可以構(gòu)造一個函數(shù)L(λ,x,y) = f(x,y) + λ(g(x,y) - c),其中λ(λ不等于0)稱為拉格朗日乘子,而函數(shù)L(λ,x)稱為拉格朗日函數(shù)。通過拉格朗日函數(shù)對各個變量求導(dǎo),令其為零,可以求得候選值集合,然后驗證求得最優(yōu)值。這就是拉格朗日乘子法。那么拉格朗日乘子法為什么是合理的?下面分別從幾何和代數(shù)兩方面解釋下自己對其的一些見解:
(1)從幾何的角度
先來看一幅圖:
圖中的虛線表示f(x,y)的等高線,如果滿足g(x,y)=c這個約束,必然是等高線與g(x,y)=c這條曲線的交點;假設(shè)g(x)與等高線相交,交點就是同時滿足等式約束條件和目標(biāo)函數(shù)的可行域的值,但并不是最優(yōu)值,因為相交意味著肯定還存在其它的等高線在該條等高線的內(nèi)部或者外部,使得新的等高線與目標(biāo)函數(shù)的交點的值更大或者更小,只有到等高線與目標(biāo)函數(shù)的曲線相切的時候,才可能取得最優(yōu)值。假設(shè)該切點為P(x0,y0),則f(x,y)在p點的梯度必然垂直于其在該點處的等值線(前面已經(jīng)說過),即梯度與該點出的法向量平行,又由于p點是曲線g(x,y)=c的切點,可以看做g(x,y)=c在p點處的梯度平行于它在該點的等值線的法向量,故f(x)在p點的梯度與g(x,y)=c在p點的梯度共線(因為他們在p點處的法向量是共線的),即(fx(x0,y0),fy(x0,y0)) = λ*(gx(x0,y0),gy(x0,y0))。所以最優(yōu)值必須滿足:?f(x,y) = λ* ?(g(x)-c),λ是常數(shù)且不等于0,表示左右兩邊平行。這個等式就是L(λ,x)對參數(shù)分別求偏導(dǎo)的結(jié)果,即:
也就是說滿足?f(x,y) = λ* ?(g(x)-c)的點必然是式子min L(λ,x) = f(x,y) + λ(g(x,y) - c)的解,所以min L(λ,x) = f(x,y) + λ(g(x,y) - c)這個式子與原問題是等價的(可以先簡單的認(rèn)為g(x,y) - c = 0造成的)。
(2)從代數(shù)的角度
先來看一下z = f(x,y)在條件g(x,y) = c下取得極值的必要條件。
如果z=f(x,y)在(x0.y0)處取得所求的極值,那么有 g(x0,y0) = c,假定在(x0,y0)的某一領(lǐng)域內(nèi)f(x,y)與g(x,y) = c均有一階段連續(xù)偏導(dǎo)(對于凸函數(shù)很顯然是成立的)并且gy(x0,y0)≠0.由隱函數(shù)的存在定理可知方程g(x,y)=c能夠確定一個連續(xù)且具有連續(xù)偏導(dǎo)的函數(shù)y = μ(x),將其帶入z= f(x,y)中可以得到一個變量x的函數(shù):z = f[x,μ(x)].
于是z=f(x,y)在x=x0處取得極值,相當(dāng)于z = f[x,μ(x)]在x=x0處取得極值,又由一元可導(dǎo)函數(shù)取得極值的必要條件可知:
而又由y = μ(x)用隱函數(shù)求導(dǎo)公式,有
將以上兩式結(jié)合可得,
上式與g(x0,y0)=c 就是函數(shù)z=f(x,y)在g(x,y)=c的條件下取得極值的必要條件。如果令:
上述的必要條件就變?yōu)?/p>
同從幾何角度推出的結(jié)論一致。
綜上所述,對于問題
(x可以為一個矢量,也可以為一個標(biāo)量)
等價于求
對于拉格朗日乘子法求出的候選值,需要注意驗證;如果目標(biāo)函數(shù)f(x)是凸函數(shù)的話則可以保證得到的解一定是最優(yōu)解。
三 KKT條件
1.關(guān)于不等式約束
上述問題中講述的都是約束條件為等式的情況,對于約束條件為不等式的情況,通常引入KKT條件(在不等式約束下,函數(shù)求極值的必要條件)來解決,具體如下:
對于問題
我們也引入拉格朗日函數(shù)
其中μj≥0。
再看一個關(guān)于x的函數(shù):
而實際上F(x)可以看做是f(x)的另一種表達(dá)形式;由于hi(x)=0,所以拉格朗日函數(shù)中的第二項為0;又由于gj(x) ≤ 0且μj ≥ 0,所以μjgj(X) ≤ 0,所以只有μjgj(X) = 0時L取到最大值;因此F(x)在滿足約束條件時就是f(x)。由此,目標(biāo)函數(shù)可以表述為如下的形式:
我們稱這個式子為原問題。并定義原問題的最優(yōu)值為P*。
然后再看關(guān)于λ和μ的一個式子:
考慮該式子的極大化:
我們稱這個式子為原問題的對偶問題。并定義對偶問題的最優(yōu)值為d*。
(關(guān)于拉格朗日的對偶性,可參考李航《統(tǒng)計學(xué)習(xí)方法》中的附錄部分,或者參考博客:http://blog.pluskid.org/?p=702)
關(guān)于對偶性問題,通常分為弱對偶性和強(qiáng)對偶性:
(1)考慮到原問題和對偶問題的最優(yōu)值P*和d*,如果d* ≤ P*,則稱“弱對偶性”成立。
(2)如果d* = P*,則稱“強(qiáng)對偶性”成立。
通常情況下,強(qiáng)對偶性并不成立;但是當(dāng)原問題和對偶問題滿足以下條件時,則滿足強(qiáng)對偶性。
(1)f(x)和gj(x)是凸函數(shù)。
(2)hi(x)是仿射函數(shù)。
(3)不等式約束gj(x)是嚴(yán)格可行的,即存在x,對所有j有g(shù)j(x) < 0 。
以上三個條件也稱為Slater條件。如果滿足Slater條件,即原問題和對偶問題滿足強(qiáng)對偶性,則x*和λ*、μ*分別為原問題和對偶問題的最優(yōu)解的充要條件是x0和λ0、μ0滿足下面的條件:
以上五個條件就是所謂的Karush-Kuhn-Tucher(KKT)條件。下面是關(guān)于這幾個條件的簡單闡述:
對于第一個條件,由于原問題和對偶問題滿足強(qiáng)對偶性,所以
即關(guān)于x的函數(shù):
在x*處取到了極值,由費馬引理可知,該函數(shù)在x*處的偏導(dǎo)數(shù)為0,即:
也就是條件(1)。該式子說明f(x)在極值點x*處的梯度是各個hi(x*)和gj(x*)的線性組合。
對于第二個條件,時在定義拉格朗日函數(shù)時的約束條件。
對于第三個條件,在定義F(x)時就已經(jīng)體現(xiàn)了,由于:
因為μjgj(x)≤0,要使得L最大,只有μjgj(x) = 0時滿足。所以產(chǎn)生了第三個條件。
對于第四、五個條件,是原問題的自帶的約束條件。
當(dāng)原問題和對偶問題不滿足強(qiáng)對偶性時,KKT條件是使一組解成為最優(yōu)解的必要條件,即在不等式約束下,函數(shù)求極值的必要條件??梢园袺KT條件看成是拉格朗日乘子法的泛化。
評論