<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            一 前置知識

          本文引用地址: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條件看成是拉格朗日乘子法的泛化。



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();