新聞中心

EEPW首頁 > 智能計(jì)算 > 設(shè)計(jì)應(yīng)用 > 如何搞定機(jī)器學(xué)習(xí)中的拉格朗日?看看這個(gè)乘子法與KKT條件大招

如何搞定機(jī)器學(xué)習(xí)中的拉格朗日?看看這個(gè)乘子法與KKT條件大招

作者: 時(shí)間:2017-09-04 來源:網(wǎng)絡(luò) 收藏

  一 前置知識(shí)

本文引用地址:http://m.butianyuan.cn/article/201709/363864.htm

  乘子法是一種尋找多元函數(shù)在一組約束下的極值方法,通過引入乘子,可將有m個(gè)變量和n個(gè)約束條件的最優(yōu)化問題轉(zhuǎn)化為具有m+n個(gè)變量的無約束優(yōu)化問題。在介紹乘子法之前,先簡(jiǎn)要的介紹一些前置知識(shí),然后就拉格朗日乘子法談一下自己的理解。

  1.梯度

  梯度是一個(gè)與方向?qū)?shù)有關(guān)的概念,它是一個(gè)向量。在二元函數(shù)的情形,設(shè)函數(shù)f(x,y)在平面區(qū)域D內(nèi)具有一階連續(xù)偏導(dǎo),則對(duì)于每一點(diǎn)P(x0,y0)∈D,都可以定義出一個(gè)向量:fx(x0,y0)i+fy(x0,y0)j ,稱該向量為函數(shù)f(x,y)在點(diǎn)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)點(diǎn)可微,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時(shí),el 與梯度的方向相同時(shí),此時(shí)方向?qū)?shù)最大,函數(shù)f(x,y)增長(zhǎng)最快;當(dāng)θ = π時(shí),el 與梯度的方向相反時(shí),此時(shí)方向?qū)?shù)最小且為負(fù),函數(shù)f(x,y)減小最快。

  2.等高線(等值線)

  通常來說,二元函數(shù) z = f(x,y)在幾何上表示一個(gè)曲面,這個(gè)曲面被平面 z = c(c為常數(shù))所截得的曲線L的方程為:

  這是一條空間曲線,這條曲線L在xOy平面上的投影是一條平面曲線L*,它在xOy平面直角坐標(biāo)系中的方程為:f(x,y) = c .對(duì)于曲線L*上的一切點(diǎn),已給函數(shù)的函數(shù)值都是c,所以我們稱平面曲線L*為函數(shù)z = f(x,y)的等值線(等高線)。再來看看等高線的一些性質(zhì):

  若fx,fy不同時(shí)為零,則等高線 f(x,y) = c上任一點(diǎn)P(x0,y0)處的一個(gè)單位法向量為:

  這表明函數(shù)f(x,y)在一點(diǎn)(x0,y0)的梯度?f(x0,y0)的方向就是等高線f(x,y) = c在這點(diǎn)的法向量的方向,而梯度的模|?f(x0,y0)|就是沿這個(gè)法線方向的方向?qū)?shù)?f/?n,于是有:

  二 拉格朗日乘子法

  1.等式約束

  首先看一下什么是拉格朗日乘子法,已知一個(gè)問題:

  要求f(x,y)在g(x,y)=c的前提下的最小值,我們可以構(gòu)造一個(gè)函數(shù)L(λ,x,y) = f(x,y) + λ(g(x,y) - c),其中λ(λ不等于0)稱為拉格朗日乘子,而函數(shù)L(λ,x)稱為拉格朗日函數(shù)。通過拉格朗日函數(shù)對(duì)各個(gè)變量求導(dǎo),令其為零,可以求得候選值集合,然后驗(yàn)證求得最優(yōu)值。這就是拉格朗日乘子法。那么拉格朗日乘子法為什么是合理的?下面分別從幾何和代數(shù)兩方面解釋下自己對(duì)其的一些見解:

  (1)從幾何的角度

  先來看一幅圖:

  圖中的虛線表示f(x,y)的等高線,如果滿足g(x,y)=c這個(gè)約束,必然是等高線與g(x,y)=c這條曲線的交點(diǎn);假設(shè)g(x)與等高線相交,交點(diǎn)就是同時(shí)滿足等式約束條件和目標(biāo)函數(shù)的可行域的值,但并不是最優(yōu)值,因?yàn)橄嘟灰馕吨隙ㄟ€存在其它的等高線在該條等高線的內(nèi)部或者外部,使得新的等高線與目標(biāo)函數(shù)的交點(diǎn)的值更大或者更小,只有到等高線與目標(biāo)函數(shù)的曲線相切的時(shí)候,才可能取得最優(yōu)值。假設(shè)該切點(diǎn)為P(x0,y0),則f(x,y)在p點(diǎn)的梯度必然垂直于其在該點(diǎn)處的等值線(前面已經(jīng)說過),即梯度與該點(diǎn)出的法向量平行,又由于p點(diǎn)是曲線g(x,y)=c的切點(diǎn),可以看做g(x,y)=c在p點(diǎn)處的梯度平行于它在該點(diǎn)的等值線的法向量,故f(x)在p點(diǎn)的梯度與g(x,y)=c在p點(diǎn)的梯度共線(因?yàn)樗麄冊(cè)趐點(diǎn)處的法向量是共線的),即(fx(x0,y0),fy(x0,y0)) = λ*(gx(x0,y0),gy(x0,y0))。所以最優(yōu)值必須滿足:?f(x,y) = λ* ?(g(x)-c),λ是常數(shù)且不等于0,表示左右兩邊平行。這個(gè)等式就是L(λ,x)對(duì)參數(shù)分別求偏導(dǎo)的結(jié)果,即: 

  也就是說滿足?f(x,y) = λ* ?(g(x)-c)的點(diǎn)必然是式子min L(λ,x) = f(x,y) + λ(g(x,y) - c)的解,所以min L(λ,x) = f(x,y) + λ(g(x,y) - c)這個(gè)式子與原問題是等價(jià)的(可以先簡(jiǎn)單的認(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)(對(duì)于凸函數(shù)很顯然是成立的)并且gy(x0,y0)≠0.由隱函數(shù)的存在定理可知方程g(x,y)=c能夠確定一個(gè)連續(xù)且具有連續(xù)偏導(dǎo)的函數(shù)y = μ(x),將其帶入z= f(x,y)中可以得到一個(gè)變量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é)論一致。

  綜上所述,對(duì)于問題

  (x可以為一個(gè)矢量,也可以為一個(gè)標(biāo)量)

  等價(jià)于求

  對(duì)于拉格朗日乘子法求出的候選值,需要注意驗(yàn)證;如果目標(biāo)函數(shù)f(x)是凸函數(shù)的話則可以保證得到的解一定是最優(yōu)解。

  三 KKT條件

  1.關(guān)于不等式約束

  上述問題中講述的都是約束條件為等式的情況,對(duì)于約束條件為不等式的情況,通常引入KKT條件(在不等式約束下,函數(shù)求極值的必要條件)來解決,具體如下:

  對(duì)于問題

  我們也引入拉格朗日函數(shù)

  其中μj≥0。

  再看一個(gè)關(guān)于x的函數(shù):

  而實(shí)際上F(x)可以看做是f(x)的另一種表達(dá)形式;由于hi(x)=0,所以拉格朗日函數(shù)中的第二項(xiàng)為0;又由于gj(x) ≤ 0且μj ≥ 0,所以μjgj(X) ≤ 0,所以只有μjgj(X) = 0時(shí)L取到最大值;因此F(x)在滿足約束條件時(shí)就是f(x)。由此,目標(biāo)函數(shù)可以表述為如下的形式: 

  我們稱這個(gè)式子為原問題。并定義原問題的最優(yōu)值為P*。

  然后再看關(guān)于λ和μ的一個(gè)式子:

  考慮該式子的極大化:

  我們稱這個(gè)式子為原問題的對(duì)偶問題。并定義對(duì)偶問題的最優(yōu)值為d*。

  (關(guān)于拉格朗日的對(duì)偶性,可參考李航《統(tǒng)計(jì)學(xué)習(xí)方法》中的附錄部分,或者參考博客:http://blog.pluskid.org/?p=702)

  關(guān)于對(duì)偶性問題,通常分為弱對(duì)偶性和強(qiáng)對(duì)偶性:

  (1)考慮到原問題和對(duì)偶問題的最優(yōu)值P*和d*,如果d* ≤ P*,則稱“弱對(duì)偶性”成立。

  (2)如果d* = P*,則稱“強(qiáng)對(duì)偶性”成立。

  通常情況下,強(qiáng)對(duì)偶性并不成立;但是當(dāng)原問題和對(duì)偶問題滿足以下條件時(shí),則滿足強(qiáng)對(duì)偶性。

  (1)f(x)和gj(x)是凸函數(shù)。

  (2)hi(x)是仿射函數(shù)。

  (3)不等式約束gj(x)是嚴(yán)格可行的,即存在x,對(duì)所有j有g(shù)j(x) < 0 。

  以上三個(gè)條件也稱為Slater條件。如果滿足Slater條件,即原問題和對(duì)偶問題滿足強(qiáng)對(duì)偶性,則x*和λ*、μ*分別為原問題和對(duì)偶問題的最優(yōu)解的充要條件是x0和λ0、μ0滿足下面的條件:

  以上五個(gè)條件就是所謂的Karush-Kuhn-Tucher(KKT)條件。下面是關(guān)于這幾個(gè)條件的簡(jiǎn)單闡述:

  對(duì)于第一個(gè)條件,由于原問題和對(duì)偶問題滿足強(qiáng)對(duì)偶性,所以

  即關(guān)于x的函數(shù):

  在x*處取到了極值,由費(fèi)馬引理可知,該函數(shù)在x*處的偏導(dǎo)數(shù)為0,即:

  也就是條件(1)。該式子說明f(x)在極值點(diǎn)x*處的梯度是各個(gè)hi(x*)和gj(x*)的線性組合。

  對(duì)于第二個(gè)條件,時(shí)在定義拉格朗日函數(shù)時(shí)的約束條件。

  對(duì)于第三個(gè)條件,在定義F(x)時(shí)就已經(jīng)體現(xiàn)了,由于:

  因?yàn)棣蘪gj(x)≤0,要使得L最大,只有μjgj(x) = 0時(shí)滿足。所以產(chǎn)生了第三個(gè)條件。

  對(duì)于第四、五個(gè)條件,是原問題的自帶的約束條件。

  當(dāng)原問題和對(duì)偶問題不滿足強(qiáng)對(duì)偶性時(shí),KKT條件是使一組解成為最優(yōu)解的必要條件,即在不等式約束下,函數(shù)求極值的必要條件??梢园袺KT條件看成是拉格朗日乘子法的泛化。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉