[一起面試AI]NO.9 如何判斷函數凸或非凸
首先定義凸集,如果x,y屬於某個集合M,並且所有的θx+(1-θ)f(y)也屬於M,那麼M為一個凸集。如果函數f的定義域是凸集,並且滿足
則該函數為凸函數。
如果函數存在二階導並且為正,或者多元函數的Hessian矩陣半正定則均為凸函數。
「注意」:中國大陸數學界某些機構關於函數凹凸性定義和國外的定義是相反的。Convex Function在某些中國大陸的數學書中指凹函數。Concave Function指凸函數。但在中國大陸涉及經濟學的很多書中,凹凸性的提法和其他國家的提法是一致的,也就是和數學教材是反的。舉個例子,同濟大學高等數學教材對函數的凹凸性定義與本條目相反,本條目的凹凸性是指其上方圖是凹集或凸集,而同濟大學高等數學教材則是指其下方圖是凹集或凸集,兩者定義正好相反。
「為什麼要求是凸函數呢?因為如果是下圖這樣的函數,則無法獲得全局最優解。」
「為什麼要求是凸集呢?因為如果可行域不是凸集,也會導致局部最優」
實際建模中判斷一個最優化問題是不是凸優化問題一般看以下幾點:
-
目標函數f如果不是凸函數,則不是凸優化問題
-
決策變量x中包含離散變量(0-1變量或整數變量),則不是凸優化問題
-
約束條件寫成g(x)≤0時,g如果不是凸函數,則不是凸優化問題
之所以要區分凸優化問題和非凸的問題原因在於凸優化問題中局部最優解同時也是全局最優解,這個特性使凸優化問題在一定意義上更易於解決,而一般的非凸最優化問題相比之下更難解決。
非凸優化問題如何轉化為凸優化問題的方法:
1)修改目標函數,使之轉化為凸函數
2)拋棄一些約束條件,使新的可行域為凸集並且包含原可行域
❝
求個關注~謝謝啦
❞