機器學習——KKT條件與拉格朗日對偶問題(1)
????KKT優(yōu)化條件是支持向量機算法SVM中相當重要的組成部分,本質上就是利用朗格朗日乘數法來求解在約束條件下的最值問題。
????


? ?在二維平面上為例,圓形代表目標函數f(x)的等高線,這里的自變量x是向量的形式,圖像上每一圈就是取得相同的函數值,?約束條件是由多條直線邊界組成約束集,二維平面上時直線三維空間就是平面了。
????由圖像可知,決定函數極值時發(fā)揮作用的一般只是兩條直線α和β,相交于某一點x*,在這一點處直線函數值剛好取得邊界值零,二者的梯度的線性組合等于目標函數f(x)的逆梯度方向。
????因為求的是目標函數最小值,而梯度是增大的方向,f(x)的梯度方向指向發(fā)散,逆梯度也就是指向最小值。而約束條件組成的區(qū)域是使得邊界函數小于0,所以邊界函數的梯度方向是指向條件區(qū)域外的方向,而目標函數f(x)的逆梯度方向正好在二者的夾角之內,對應的系數λ必須大于0.
????這也就解釋了為什么只有兩條直線在求取最值時發(fā)揮作用,即使是多條直線相交于同一點,但在梯度線性組合出目標函數逆梯度的時候,只用兩條直線的梯度線性組合就可以了。其余的直線不會參與組成約束空間,就可以不用考慮了,因為多條直線相交,約束區(qū)域一定是某兩條夾角較小的直線組成的空間,發(fā)揮作用的肯定只有兩條直線。
????與此同時其他的組成約束區(qū)域的邊界函數,帶入x*可得,對應的邊界函數值均小于0(條件區(qū)域要求),而它們在極值點取值時又不發(fā)揮作用,對應的λi就等于0 .

當目標函數的最小值點就在函數區(qū)域內部時,就直接取得x*即可,約束邊界函數不發(fā)揮作用。


????首先是基礎的f0(x)的最小值與約束條件fi(x)和h(x),將這個問題使用拉格朗日乘數法添加λ和v兩個系數,L函數的最小值對應也就是f0(x)的最小值,而fi(x)小于零,所以λ和v都求最大值,對應的l也就是最小了。
? ???可行域就是約束條件fi(x)和h(x),當x固定,λ和v變化時求取L的最大值時,自變量x不在可行域內時,λ乘以fi(x)無上限,相加之后一定是無窮大。當x取值在可行域內時,fi(x)小于零,λ大于零,乘積小于0恒成立,所以最大值就是f0(x)。二者取值相結合再求最小值,就是目標函數f0(x)的最小值。

????雖然h(x)恒等于0,但是其對應的梯度值是不為零的,這個也是拉格朗日乘數法需要滿足的條件之一必須寫入函數式L。
????對應的對偶問題,注意這里是單向箭頭,就相當于是調換了求最值的順序,然后對于拉格朗日函數求最值就是讓其對應的偏導數為0.改變寫法就可以得到下面的式子,將其換到條件區(qū)域上要求滿足。
