一、無約束優化
對於無約束的優化問題,直接令梯度等於0求解。
如果一個函數$f$是凸函數,那么可以直接通過$f(x)$的梯度等於0來求得全局極小值點。
二、有約束優化
- 若$f(x),h(x),g(x)$三個函數都是線性函數,則該優化問題稱為線性規划。若任意一個是非線性函數,則稱為非線性規划。
- 若目標函數為二次函數,約束條件全為線性函數,稱為二次規划。
- 若$f(x)$為凸函數,$g(x)$為凸函數,$h(x)$為線性函數,則該問題稱為凸優化。注意這里不等式約束$g(x)<=0$則要求$g(x)$為凸函數,若$g(x)>=0$則要求$g(x)$為凹函數。
1.只含有等式約束
對於含有等式約束的優化問題,拉格朗日乘子法,構造拉格朗日函數,令偏導為0求解。
(1)優化問題是凸優化
通過下圖兩個條件求得的解就是極小值點(而且是全局極小)
(2)優化問題不是凸優化
上面兩個條件只是極小值點的必要條件,還需要附加多一個正定的條件才能變成充要條件
2.只含有不等式約束
對於含有不等式約束的優化問題,同樣構造拉格朗日函數,利用KKT條件求解。
對於不等式約束$g(x)<=0$,和等式約束$h(x)=0$不一樣,$h(x)=0$可以在平面上畫出一條等高線,而$g(x)<=0$是一個區域,很多個等高線堆疊而成的一塊區域,我們把這塊區域稱為可行域。
- (不考慮可行域限制時的)極小值點落在可行域內(不包含邊界)
這個時候可行域的限制不起作用,相當於沒有約束,直接$f(x)$的梯度等於0求解,這個時候$g(x極小值點)<0$(因為落在可行域內)。
- (不考慮可行域限制時的)極小值點落在可行域外(包含邊界)
可行域的限制起作用,極小值點應該落在可行域邊界上即$g(x)=0$,類似於等值約束,此時有$g(x)$的梯度和$f(x)$的負梯度同向。
總結以上兩種情況,可以構造拉格朗日函數來轉換求解問題。
(1)優化問題是凸優化
對於不等式約束的優化,需要滿足三個條件,滿足這三個條件的解x*就是極小值點。
這三個條件就是著名的KKT條件,它整合了上面兩種情況的條件。
特別注意:優化問題是凸優化的話,KKT條件就是極小值點(而且是全局極小)存在的充要條件。
(2)優化問題不是凸優化
約束問題不是凸優化,KKT條件只是極小值點的必要條件,不是充分條件,KKT點是駐點,是可能的極值點。也就是說,就算求得的滿足KKT條件的點,也不一定是極小值點,只是說極小值點一定滿足KKT條件。
不是凸優化的話,還需要附加多一個正定的條件才能變成充要條件,如下圖所示
3.既有等式約束也有不等式約束
4.凸優化的應用
參考文獻:
【1】Lagrange Multipliers and the Karush-Kuhn-Tucker conditions
【2】拉格朗日對偶性