凸優化有什么用

本文結構:

  • 凸優化有什么用?
  • 什么是凸優化?

凸優化有什么用?

鑒于本文中公式比較多,先把凸優化的意義寫出來吧,就會對它更有興趣。

我們知道在機器學習中,要做的核心工作之一就是根據實際問題定義一個目標函數,然后找到它的最優解。

不過求解這種優化的問題其實是很難的,但是有一類問題叫做凸優化問題,我們就可以比較有效的找到全局最優解。

例如,SVM 本身就是把一個分類問題抽象為凸優化問題,利用凸優化的各種工具(如Lagrange對偶)進行求解和解釋。深度學習中關鍵的算法反向傳播(Back Propagation),本質也是凸優化算法中的梯度下降算法。

凸優化的價值也在于思維轉變,當我們在現實生活中遇到計算量接近無窮大的問題時,我們要想辦法將模型轉換成“凸優化問題”,因為凸優化已經相對嚼得比較爛,所以只要問題轉化成凸優化,我們就可以分布迭代去運算。

當然現實中絕大部分優化問題并不是凸優化問題,但是凸優化非常重要, 因為:

  • 還是有相當一部分問題是或等價于凸優化問題,例如下面會舉例說明 SVM,最小二乘等。
  • 大部分凸優化問題解起來比較快。
  • 很多非凸優化或NP-Hard的問題可以轉化(并非是等價的)為P的凸優化問題。并給出問題的界或近似。例如用對偶(Duality),松弛(Relaxation)等方法將一個優化問題轉化為凸優化。

什么是凸優化?

關于凸優化,有幾個基礎概念:凸集,凸函數,凸優化問題,局部最優和全局最優。以及一個很重要的性質,就是所有局部最優點都是全局最優的

1. 凸集

意思是對這個集合的任何兩個元素,我們如果畫一條線,那么這線上的所有元素仍然屬于這個集合:

下面這幾個例子都是凸集:

Rn,因為對任意 x, y ∈ Rn, θx + (1 ? θ)y ∈ Rn

Rn+ = {x : xi ≥ 0 ?i = 1,...,n},因為 (θx+(1?θ)y)i =θxi +(1?θ)yi ≥0 ?i。

范數球,∥ · ∥ 例如 {x: ∥x∥ ≤ 1}

映射子空間 Affine subspaces: {x ∈ Rn : Ax = b}

多面體 polyhedra: {x ∈ Rn : Ax ? b},即 Ax 的每個元素小于或等于 b 的對應元素

凸集的交集

半正定矩陣 Positive semidefinite matrices:A = AT 且 for all x ∈ Rn, xT Ax ≥ 0.

在文獻中有詳細的證明:
http://cs229.stanford.edu/section/cs229-cvxopt.pdf

只需要按照凸集的定義,任取這個集合的兩個元素,以及 0 ≤ θ ≤ 1,如果可以證明 θx+(1?θ)y 仍然屬于這個集合,那么它就是凸集


2. 凸函數:

它的含義就是在這個函數上任意取兩個點,在它們之間畫一條線,那么這兩點之間的函數上的值需要在這條線以下。:

如何驗證某個函數是否為凸函數呢?

最基本的,我們可以用凸度的一階二階條件:

一階條件的含義就是,如果我們在這個函數上的任意一點畫出它的切線,那么這條切線上的所有點都將在函數的下面。:

二階條件中如果是一維的話,就相當于函數的二階導數總是非負的。:

? 此處意思為半正定。

下面這幾個例子都是凸函數
可以根據二階條件,即證明它們的二階導數非負來判斷:

Exponential. Letf :R→R,f(x)=e^ax for any a ∈ R.

Negative logarithm. Let f : R → R, f(x) = ?logx {x : x > 0},

Affinefunctions. Letf:Rn →R,f(x)=bT x + c for some b ∈ Rn,c ∈ R

當然還有下面兩個可以直接通過凸函數的定義和不等式來證明:

Norms. Let f : Rn → R be some norm on Rn

Nonnegative weighted sums of convex functions


3. 凸優化問題:

就是我們想要找到凸集 C 中的某個 x 來使 f 達到極小:

minimize f (x)
subject to x ∈ C

其中 f 為凸函數,C 為凸集,

4. 局部最優和全局最優

局部最優的意思是如果 x 這個點是函數的局部極小值點,那么我們可以找到一個半徑 R,在以 x 為中心以 R 為半徑的球內的任何一個點,它的函數值都會大于這個極小值。

全局最優就是 x 這點的函數值就是在定義域中函數達到的最小值。

5. 性質

對于凸優化問題,有一個很重要的性質,就是所有局部最優點都是全局最優的。

為什么呢,證明如下

設 x 為一個局部極小值點,那么我們可以找到另外的一個點 y,使得 f(x) > f(y)

這樣的話,我們找到一個 z 為:

那么 z 就在 x 的這個半徑 R 內:

但是由凸函數定義可得:

即我們在半徑 R 內,找到了一個 z ,它的函數值要比 x 的還要小,這與 x 是局部極小值矛盾,所以 x 不可能是局部極小值,只可以是全局的。

下面這幾個例子都是凸優化問題:

Linear Programming

Quadratic Programming


Quadratically Constrained Quadratic Programming


Semidefinite Programming



那么這些有什么用呢?

讓我們用常見的算法舉例,

1. SVM 的優化目標如下:

如果我們根據下面的形式,定義了 x,P,c,G,h,X,y,

那么 SVM 的優化目標就可以寫成 Quadratic Programming 的形式:


所以這是個凸優化問題,
當然了我們可以簡單地根據 SVM 具有二次的優化目標,以及線性的限制條件來判斷,而無需轉化成標準形式。

2. 最小二乘的優化目標:

如果我們做如下定義,可以看出它也是個 Quadratic Programming:


當我們拿到了一個凸的優化函數時,那么就有一大套公式定理可以幫我們解決問題了。
因為對凸優化的問題,在基礎數學上面已經有了很多解決方法,例如可以將凸優化問題Lagerange做對偶化,然后用Newton、梯度下降算法求解等等。

推薦凸優化入門資源:

  • book Convex Optimization by Stephen Boyd and Lieven Vandenberghe (available for free online),
  • EE364,a class taught here at Stanford by Stephen Boyd

參考:
http://cs229.stanford.edu/section/cs229-cvxopt.pdf
https://www.zhihu.com/question/24641575


推薦閱讀 歷史技術博文鏈接匯總
http://www.lxweimin.com/p/28f02bb59fe5
也許可以找到你想要的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容