拉格朗日乘子法是一種優化算法,主要用來解決約束優化問題。他的主要思想是通過引入拉格朗日乘子來將含有n個變量和k個約束條件的約束優化問題轉化為含有n+k個變量的無約束優化問題。
其中,利用拉格朗日乘子法主要解決的問題為:
等式的約束條件和不等式的條件約束。
拉格朗日乘子的背后的數學意義是其為約束方程梯度線性組合中每個向量的系數。
等約束條件的解決方法不在贅述。
對於非等約束條件的求解,需要滿足KKT條件才能進行求解。下面對於KKT條件進行分析。
不等式約束優化問題:
得到拉格朗日乘子法的求解方程:
給出KKT條件:
實際上,為什么要給出KKT條件?這里涉及到對偶問題。
我們引入拉格朗日函數L(x,α,β)將有約束的優化問題轉換為無約束的優化問題,然后對原問題的參數求導,獲得使拉格朗日函數最小的拉格朗日對偶函數g(α,β),最后使得對偶函數最大的問題則成為原問題的對偶問題。(對偶函數給出了主問題最優解的下界。那么下界最大是什么,這就是主問題的對偶問題)
因此對於上面拉格朗日乘子法問題的描述表達為:
但其實是仍然個很難解決的問題,因為我們要先解決不等式約束的max問題,然后再在x上求最小值。怎么辦呢?如果能把順序換一下,先解決關於x的最小值,在解決關於α、β的不等式約束問題就好了。即,
假設原問題為p,對偶問題為d,事實上,p和d並不完全相等,此處含有一個性質:弱對偶性
即:
而他兩個的差即為對偶間隙
解釋:大家想一下,函數L中最大值中最小的一個總比最小值中最大的那一個要大,也就是對偶問題提供了原問題最優值的一個下界。
但是大家想,我們是想通過對偶問題求解原問題的最優解,所以只有當二者相等時才可能將原問題轉化成對偶問題進行求解。當然,當滿足一定條件的情況下,便有p=d。而這個條件便是 slater條件和KTT條件。
在凸優化理論中,有一個Slater定理,當這個定理滿足,結合KKT條件,那么對偶間隙就會消失,就是強對偶性成立。
其中對於KKT條件的KKT因子為什么需要大於等於0不太好理解。
我的理解:如上,只有當大於等於0的時候,L的取值才能有最大值,即:
這一步才有值。
當然這個只是我個人的理解吧,理論上詳細的證明參考《數值優化》-Jorge Nocedal 第12章
當然它上面的公式:
都是基於
這樣一個假設,不過我們一般假設的約束條件是小於等於0,所以看上去形式有點不一樣,其實道理都一樣的。