常見的凸優化方法
本文轉載自多個地方,僅用作個人學習,如需刪除請見諒並聯系本人。
為什麼凸優化這麼重要?見知乎,寫的很好 https://www.zhihu.com/question/24641575http://blog.csdn.net/zkq_1986/article/details/52317258
1 梯度下降法
2 座標下降法
1.首先給定一個初始點,如 X_0=(x1,x2,…,xn);
2.for x_i=1:n
固定除x_i以外的其他維度
以x_i為自變數,求取使得f取得最小值的x_i;
end
3. 迴圈執行步驟2,直到f的值不再變化或變化很小.
3 牛頓迭代法
牛頓迭代法(Newton’s method)又稱為牛頓-拉夫遜方法(Newton-Raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。
把f(x)在x0點附近展開成泰勒級數 f(x) = f(x0)+(x-x0)f’(x0)+(x-x0)^2*f”(x0)/2! +… 取其線性部分,作為非線性方程f(x) = 0的近似方程,即泰勒展開的前兩項,則有f(x0)+f’(x0)(x-x0)=0 設f’(x0)≠0則其解為x1=x0-f(x0)/f’(x0) 這樣,得到牛頓法的一個迭代序列:x(n+1)=x(n)-f(x(n))/f’(x(n))。
4 最小二乘法與梯度下降法區別
最小二乘是構建目標函式中的一種方法;
梯度下降是求解最優目標函式中的一種方法。
對於變數個數為2-3個的目標函式,可以直接用方程組的方式求解出來,這也就是我們常見的狹義上的最小二乘法。
對於變數個數多個的目標函式,這時,狹義的最小二乘法就難以勝任,而用梯度下降法求解就容易多了。
http://www.cnblogs.com/wacc/p/4870043.html
1.1 什麼是凸集?
簡單來說, 凸集是一個點集, 這個點集有一個性質, 就是在這個集合中任取不同的兩個點x和y, 他們之間的線段(包括端點)上的點都屬於這個點集,那麼就說這個點集是一個凸集。
比如下圖中左邊的圖形是凸集,而右邊不是,因為我們可以找到兩個點,使它們之間的線段上的點不在集合中
數學上,凸集的定義如下:
給定集合,,,如果有
我們就稱集合C是凸集,我們把點稱為x和y的凸組合。
1.2 什麼是凸函式?
假設有一個函式,記其定義域為,如果是凸集,且在其中任取兩個點,滿足以下性質:
那麼就稱為凸函式。
注意:定義域是凸集這個要求不是必須的,其出發點只是為了使x,y的凸組合有定義
關於凸函式,直觀上可以用下圖來加深理解:
簡單來說,我們在定義域任取兩個點x,y, 連線他們得到一條線段,如果這個線段上的點都位於對應函式值上方,我們就說該函式是一個凸函式。
更進一步,如果且我們稱是嚴格凸的。如果是凸函式,那麼就是凹函式。如果是嚴格凸函式,那麼就是嚴格凹函式。
1.3 凸函式的等價判別方法
上面我們講了什麼是凸函式,然而這個定義在現實中很難用於判斷一個函式是不是凸的,因此介紹幾個等價的定義。
1.3.1 一階近似
假設函式是可導函式(也就是說的梯度在整個定義域上都存在),則是凸函式當且僅當 其定義域是凸集,且對於所有的有下式成立:
我們將叫做對f的一階近似,其物理意義實際上是經過點x的切平面,我們用這個切平面上的點來近似。這個公式的含義是:如果f是凸函式,那麼它的一階近似值始終位於函式值的下方。
1.3.2 二階近似
假設函式二階可導(即海塞矩陣在定義域上都有定義),則f是凸函式當且僅當 其定義域是凸集且其海塞矩陣半正定,即:
可能有些同學忘了海塞矩陣長什麼樣了,這裡提一下。假設我們的變數來自n維空間,即,我們記,即由n個變數組成的向量。那麼海塞矩陣(記為H吧)是一個的方塊矩陣,且
也就是說,是f(x)分別對和進行求導兩次得到的。
1.4 凸優化問題
上面已經介紹了凸集和凸函式,是時候到凸優化了吧? 別急,在介紹凸優化概念之前再囉嗦兩句。
1.4.1 水平子集(sublevel sets)
由凸函式的概念出發,我們可以引出水平子集(sublevel set)的概念。假定f(x)是一個凸函式, 給定一個實數,我們把集合
叫做水平子集。 也就是說水平子集是所有滿足的點構成的集合。利用凸函式性質,我們可以證明水平子集也是凸集:
水平子集告訴我們,給凸函式新增一個上限,定義域內剩下的點構成的點集還是一個凸集。
1.4.2 仿射函式(affine functions)
數學上,我們把形如
的函式叫做仿射函式。其中,,一個向量。直觀上理解,仿射函式將一個n維空間的向量通過線性變換A對映到m維空間,並在其基礎上加上向量b,進行了平移。
同理,我們可以證明,點集
是一個凸集,證明略。
1.4.3 凸優化(convex optimization)
那麼回到凸優化問題上來, 什麼是一個凸優化問題?
一個凸優化問題可以定義為:
其中f是一個凸函式,C是一個凸集。根據先前介紹過的水平子集等概念,上面問題又可以等價寫為:
其中,g(x)是凸函式,h(x)是仿射函式。 也就是說,原約束集C被我們表示為一系列凸集的交集(數學上可以證明,凸集的交集還是凸集)。
1.4.4 區域性最優(local optima)和全域性最優(global optima)
區域性最優:周圍小範圍 內沒有比我小的點。
數學定義:
如果存在,對於所有的z:,有,那麼就稱x是一個區域性最優點。
全域性最優:我就是整個定義域中的最小的點。
數學定義:
如果對於定義域內的所有z,有,則稱x是全域性最優。
現在回到凸優化問題上, 對於凸優化問題,有一個很重要的結論:
對於凸函式來講, 區域性最優就是全域性最優。證明如下:
我們用反證法證明。設是一個區域性最優,但不是全域性最優,於是我們假設全域性最優是,那麼我們有
由x的區域性最優性質,我們有 :
存在,對於所有的z:,有
我們考慮和的凸組合:,無論在哪裡,我們總可以找到一個,使得位於的鄰域內,使得
另一方面,由凸函式性質,我們有:
由此得,這與矛盾, 於是我們證明了如果是區域性最優,那麼同時它也是全域性最優。
1.5 常見凸優化問題
- 線性規劃
如果和都是仿射函式,則凸優化問題變為了線性規劃問題:
- 二次規劃
線性規劃中,如果變為一個凸二次函式,則凸優化問題變為二次規劃:
- 二次約束二次規劃
和都是凸二次函式
- 半定規劃
其中,是一個n維對稱方陣,並且我們將它約束為半正定矩陣。都是對稱矩陣。這和前面的問題有點不太相同,前面是優化一個向量,而這裡是優化一個矩陣。
參考:
http://cs229.stanford.edu/section/cs229-cvxopt.pdf