hit2015spring晨鳧追風,轉載請註明出處
華爲面試的時候,部長先生問了這個問題,於是就回來看了一下,補補課,平常學的有點水貨,哈哈!希望有幫助!如果你從頭到尾拿出筆來寫下這裏面的公式,我覺得肯定能看懂!
最優化問題的最優性條件,最優化問題的解的必要條件和充分條件
無約束問題的解的必要條件
f(x) 在x 處的梯度向量是0
有約束問題的最優性條件
等式約束問題的必要條件:
一個條件,兩變量
minf(x)=f([x]1,[x]2)
s.t.c(x)=c([x]1,[x]2)=0
則最優解的必要條件如下面式子所示:
▽f(x∗)+α∗▽c(x∗)=0
c(x∗)=0
α∗ 是常數,即存在一個常數使得約束條件和待優化問題的梯度之和爲0
上面就把它當成一個結論吧,具體推導見《數據挖掘中的新方法——支持向量機》
這裏的理解是:
在x滿足c(x1,x2)=0 的條件下去尋找一個x 來使得f(x) 最小。其實這個點就是在滿足約束條件c(x)=0 的曲面上。
來這樣理解一下:
c(x) 是曲線,畫出f(x)=k 的等高線,當然了在x=4 的位置兩者相交,但是二者不是相切的,這樣就還能移動x點去尋找更低的點來滿足最小化,其實這裏要找的點就是二者相切的點,這樣就能保證最小值,相切的時候,目標函數的梯度肯定正交於約束曲面,此時就有了
▽f(x∗)+α∗▽c(x∗)=0
上面的z 是待優化的函數,c(x1,x2) 是約束的等式條件,注意這裏面的x1,x2 是在平面上的(聯想圓錐曲線)然後把z的等高線投影到x1,x2 平面上,在該平面上的約束條件上面的點就是該x取值的可行域,在這些點裏面選取的x使得目標函數最小。當等高線與c(x1,x2) 相交時,在等高線內部肯定還有滿足z 更小的x1,x2 ,只有當等高線與c(x1,x2) 相切時,等高線內部就沒有了點使得優化函數更小,於是就必須是等高線的梯度方向和約束曲線的方向相同或者一致,這樣才能保證相切,於是就有了式子
▽f(x∗)+α∗▽c(x∗)=0
引入拉格朗日函數
L(x,α)=L([x]1,[x]2,α)=f([x]1,[x]2)+αc([x]1,[x]2)
上面的條件就變成:
▽xL(x∗,α∗)=▽f(x∗)+α∗▽c(x∗)=0
▽αL(x∗,α∗)=c(x∗)=0
推廣到兩個約束條件,三個變量的問題
minf(x)=f([x]1,[x]2,[x]3)
s.t.ci(x)=ci([x]1,[x]2,[x]3)=0
它的最優解的必要條件是:
▽f(x∗)+α∗1▽c1(x∗)+α∗2▽c2(x∗)=0
c1(x∗)=0
c2(x∗)=0
引入拉格朗日函數
L(x,α)=L([x]1,[x]2,[x]3,α1,α2)=f([x]1,[x]2,[x]3)+α1c1([x]1,[x]2,[x]3)+α2c2([x]1,[x]2,[x]3)
於是最優化條件變成:
▽xL(x∗,α∗)=▽f(x∗)+α∗1▽c1(x∗)+α∗2▽c2(x∗)=0
▽αL(x∗,α∗)=c(x∗)=0
然後是多變量,多q 條件約束:
引入拉格朗日函數
L(x,α)=L([x]1,[x]2,⋯,[x]n,α1,⋯,αq)=f([x]1,[x]2)+∑i=1qαici([x]1,[x]2)=f(x)+αTc(x)
當x∗=([x]∗1,[x]∗2,⋯,[x]∗n) 是該問題的局部最優解,且約束函數在x∗ 處的梯度向量▽c1(x∗),⋯,▽cq(x∗) 線性無關此時x∗ 則存在q維向量:α∗=(α∗1,⋯,α∗q) 滿足下面條件
▽xL(x∗,α∗)=▽f(x∗)+∑i=1qα∗i▽ci(x∗)=▽f(x∗)+▽c(x∗)α∗=0
▽αL(x∗,α∗)=c(x∗)=0
其中▽c(x∗) 是以▽c1(x∗),⋯,▽cq(x∗) 爲列的矩陣,注意這裏的c(x∗),α∗ 是向量形式
不等式約束時候的條件
最簡單的不等式約束問題
minf(x)=f([x]1,[x]2,[x]3)
s.t.ci(x)=ci([x]1,[x]2,[x]3)≤0
此時的問題類比於上面的等式約束,並引入拉格朗日函數L(x,α)=f(x)+αc(x)
此時的條件要滿足的是:
▽xL(x∗,α∗)=▽f(x∗)+α∗▽c(x∗)=0
c(x∗)≤0
α∗≥0
α∗c(x∗)=0
一般不等式約束問題
引入Lagrange函數
L(x,α)=f(x)+∑i=1pαici(x)=f(x)+αTc(x)
該約束問題最優解的必要條件就是
▽xL(x∗,α∗)=▽f(x∗)+∑i=1pα∗i▽ci(x∗)=▽f(x∗)+▽c(x∗)α∗=0
ci(x∗)≤0 i=1,⋯,p
α∗i≥0 i=1,⋯,p
α∗ici(x∗)=0 i=1,⋯,p
其中▽c(x∗) 是一個以▽c1(x∗),▽c2(x∗),⋯,▽cp(x∗) 列矩陣
KKT條件
綜合上面的結論就導出了下面的KKT條件
KKT條件一般約束問題的必要條件
考慮一般問題:
minf(x)
s.t.ci(x)≤0 i=1,⋯,p
ci(x)=0 i=p+1,⋯,p+q
優化問題f(x),c(x),i=1,⋯,p+q 具有連續一階偏導,x∗ 爲問題的局部解。若在x∗ 處的有效約束梯度▽ci(x∗) 線性無關,或者所有的約束函數都是線性函數,則存在p+q 維向量α∗=(α∗1,α∗2,⋯,α∗p+q) 使得:
▽xL(x∗,α∗)=▽f(x∗)+∑i=1p+qα∗i▽ci(x∗)=▽f(x∗)+▽c(x∗)α∗=0
ci(x∗)≤0 i=1,⋯,p
ci(x∗)=0 i=p+1,⋯,p+q
α∗i≥0 i=1,⋯,p
α∗ici(x∗)=0 i=1,⋯,p
這裏▽c(x∗) 是一個以▽c1(x∗),▽c2(x∗),⋯,▽cp+q(x∗) 列矩陣即:
▽c(x∗)=(▽c1(x∗),▽c2(x∗),⋯,▽cp+q(x∗))
把p+q 維向量α∗ 稱爲KKT乘子向量或者lagerange乘子向量,其分量α∗1,α∗2,⋯,α∗p+q 稱爲KKT乘子或者lagrange乘子
當優化問題爲凸約束問題的時候上述的KKT條件變爲最優解的充要條件
上面的方法就是爲了在尋找多元函數在一組約束下的極值優化的方法,通過引入拉格朗日乘子,可以將有d個變量與k個約束條件的最優化問題轉化爲具有d+k 個變量的無約束的優化問題進行求解
更爲感性的理解這個條件就是:
引入了拉格朗日乘子,描述了在可行域邊上的時候是等式約束的條件這時候用的是拉格朗日乘子法,在可行域的內部是無約束的條件,或者是不等式約束的條件下變換出了KKT條件。歸根結底的說KKT條件是拉格朗日乘子法的一個泛化
問題先按照幾何間隔最大化的原則他的問題爲
minw,b12∥w∥2
s.t.yi(wTxi+b)⩾1,i=1,2,⋯,m
這個是SVM的基本型
對它引入拉格朗日乘子法,即對上式添加拉格朗日乘子αi⩾0