Introduction
一、最優化問題的數學表達
在最優問題中,其數學表達往往能化成標準形式,如下:
上式中的
實際上在實際問題中,往往會有很多不同的形式,但是都是可以通過一定的方法化成這種標準形式的。這裏給出一個例子:
假如我有一個優化問題,如下形式:
即如何找到小於等於的不等式,使其等價於這個等式。實際上,在數學中,a=b的充要條件是a既大於等於b,而且a小於等於b。故上面的最優化問題可以化成如下形式:
二、線性規劃、非線性規劃、凸優化概念
如果最優化問題中的目標函數和約束條件都是線性的,即滿足:
在非線性規劃中,有一類比較特殊的規劃問題————凸優化。即其目標函數和約束條件滿足如下形式:
在概念上來說,凸優化問題與最小二乘法和線性規劃是非常相似的。如果我們能夠將一個最優化問題轉換爲一個凸優化問題,那麼我們一定能夠高效的解決這個問題(有一點點誇大)。雖然解凸優化比較容易,但是如何把一個問題轉化爲凸優化問題是非常難的。
三、非線性規劃方法
在非線性規劃中,如果我們不知道目標函數和約束條件是否是凸的,那麼很難找到一個有效的方法來解決這種一般的非線性規劃問題。即使你的變量只有很少的幾個,求解也是非常麻煩的,更不用說變量有成千上萬個的情況。現有的對於一般非線性規劃的方法都只能處理一些較爲特殊的情況。
1、局部最優化
在局部最優化方法中,我們放棄了尋找全局最優解,轉而尋找局部最優解。
局部最優化方法非常的快速,能夠解決變量比較多得情況,也有較好的普適性,因爲它只要求目標函數和約束可導即可。在很多工程設計中,我們有時候全局最優解和局部最優解的差異不是很大,那實際上我只要找到一個比較好的局部最優解即可。
局部最優化也有很多缺點,比如不能發現正確的全局最優解。另外,這種方法對初始點的要求比較高,選擇了不同的初始點,那麼結果可能也是千差萬別的。局部最優算法也對參數變量比較敏感。運用局部最優算法相對於最小二乘法、線性規劃、凸優化也較複雜。他需要選擇算法、需要調整算法參數、需要找到好的初始點等。
2、全局最優化
在全局最優化中,我們要找到真實的全局最優解,隨之而來的是對算法效率的犧牲。全局最優算法的運算量會隨着參數個數n和約束條件個數m的增加而呈指數增加。這也說明,一旦參數增加或者約束條件增加,會使算法的運算量變得非常大。所以一般全局最優算法都用在變量較少的情況。
3、凸優化在非凸問題中的應用
(1)用於初始化局部最優化法的初始值
這是一種將凸優化與局部最優化方法的結合。對於一個非凸最優化問題,我們首先找到一個與其很相似的凸函數,先解出這個凸優化問題的最優解(對於凸優化問題,我們不需要找到特定的初始值,因爲不管初始化值是什麼,凸優化都能找到問題的最優解),然後以此最優點作爲初始點來運行局部最優算法。
(2)用於限定全局最優化法的最優值範圍
具體有兩種方法,一種是一般鬆弛法,即用鬆弛的、凸的約束條件替代原來的非凸約束。另一種是拉格朗日鬆弛法(拉格朗日對偶問題),這種方法能夠在全局最優解周圍一個比較窄的限定範圍。
Preference:
1、Convex Optimization—Stephen Boyd and Lieven Vandenberghe
2、Convex Optimization Lecture slides —Stephen Boyd