常見的凸優化方法

本文轉載自多個地方,僅用作個人學習,如需刪除請見諒並聯系本人。

爲什麼凸優化這麼重要?見知乎,寫的很好
https://www.zhihu.com/question/24641575


http://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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章