最近的看的一些內容好多涉及到凸優化,沒時間系統看了,簡單的了解一下,凸優化的兩個基本元素分別是凸函數與凸包
凸集
凸集定義如下:
也就是說在凸集內任取兩點,其連線上的所有點仍在凸集之內。
凸函數
凸函數的定義如下:
$\theta x+(1-\theta)y$的意思就是說在區間 $(x,y)$ 之間任取一點 $y – \theta(y-x)$ 即為 $\theta x+(1-\theta)y$ , 凸函數的幾何意義表示為函數任意兩點的連線上的取值大於該點在函數上的取值,幾何示意圖形如下:
凸函數的一階充要條件:
一階充要條件的意思是說 $f$ 可微 ,$f$ 是凸函數當且僅當其切線在某點的取值小於函數本身在該點的取值,一階充要條件的圖形如下:
凸函數的二階充要條件:
其中要求 $f$ 二階可微,表示二階導數在其定義域上需大於 $0$ 才是凸函數。
凸優化
有了以上兩個概念,接下來就是凸優化了,凸優化問題通常有如下的形式:
這里 $f$ 為凸函數,$C$ 為凸包,通常還可以寫作如下的形式:
這不就是約束規划問題么,這里 $f$ 為凸函數,$g_i(x)$ 為凸函數, $h_i(x)$ 為仿射函數,這么多的約束會把空間約束成如下的形式:
所以只需要在 $x^*$ 的范圍里求解即可。對於凸優化問題來說,只有一個全局極值點,性質非常好,直接對偶啊,拉格朗日啊什么的往上招呼就可以了。
凸優化問題有一些特殊的形式,比如說線性規划,二次規划,二次約束的二次規划,與半正定規划,這些特殊形式使得我們可以使用更加優化的方式來求解。
線性規划:
接下來是二次規划:
二次約束二次規划:
參考: cs229 note