凸優化中的基本概念


1.1 什么是凸集?

簡單來說, 凸集是一個點集, 這個點集有一個性質, 就是在這個集合中任取不同的兩個點x和y, 他們之間的線段(包括端點)上的點都屬於這個點集,那么就說這個點集是一個凸集。

比如下圖中左邊的圖形是凸集,而右邊不是,因為我們可以找到兩個點,使它們之間的線段上的點不在集合中

數學上,凸集的定義如下:

給定集合$C$,$\forall x,y\in C$,$0\leq\theta\leq 1$,如果有

$$ \theta x + (1-\theta y)\in C$$

我們就稱集合C是凸集,我們把點$\theta x + (1-\theta y)$稱為x和y的凸組合。

1.2 什么是凸函數?

假設有一個函數$f:\mathbb{R}^n\to \mathbb{R}$,記其定義域為$\mathcal{D}(f)$,如果$\mathcal{D}(f)$是凸集,且在其中任取兩個點$x,y$,滿足以下性質:

$$ f(\theta x + (1-\theta y))\leq \theta f(x)+(1-\theta)f(y) $$

那么就稱$f$為凸函數。

注意:定義域是凸集這個要求不是必須的,其出發點只是為了使x,y的凸組合有定義

關於凸函數,直觀上可以用下圖來加深理解:

簡單來說,我們在定義域任取兩個點x,y, 連接他們得到一條線段,如果這個線段上的點都位於對應函數值上方,我們就說該函數是一個凸函數。

更進一步,如果$x\neq y$且$0<\theta <1$我們稱$f$是嚴格凸的。如果$-f$是凸函數,那么$f$就是凹函數。如果$-f$是嚴格凸函數,那么$f$就是嚴格凹函數。

1.3 凸函數的等價判別方法

上面我們講了什么是凸函數,然而這個定義在現實中很難用於判斷一個函數是不是凸的,因此介紹幾個等價的定義。

1.3.1 一階近似

假設函數$f:\mathbb{R}^n\to \mathbb{R}$是可導函數(也就是說$f(x)$的梯度$\nabla_x f(x)$在整個定義域上都存在),則$f$是凸函數當且僅當 其定義域是凸集,且對於所有的$x,y\in\mathcal{D}(f)$有下式成立:

$$ f(y)\geq f(x)+\nabla_x f(x)^T(y-x) $$

 我們將$f(x)+\nabla_x f(x)^T(y-x)$叫做對f的一階近似,其物理意義實際上是經過點x的切平面,我們用這個切平面上的點來近似$f(y)$。這個公式的含義是:如果f是凸函數,那么它的一階近似值始終位於函數值的下方。

 1.3.2 二階近似

假設函數$f:\mathbb{R}^n\to \mathbb{R}$二階可導(即海塞矩陣在定義域上都有定義),則f是凸函數當且僅當 其定義域是凸集且其海塞矩陣半正定,即:

$$ \nabla^2_x f(x)\succeq 0$$

可能有些同學忘了海塞矩陣長什么樣了,這里提一下。假設我們的變量來自n維空間,即$x\in\mathbb{R}^n$,我們記$x=(x_1,x_2,...,x_n)=\{x_i\}_{i=1}^n$,即由n個變量組成的向量。那么海塞矩陣(記為H吧)是一個$n\times n$的方塊矩陣,且

$$ H_{ij}=\frac{\partial^2 f(x)}{\partial x_i\partial x_j} $$

 也就是說,$H_{ij}$是f(x)分別對$x_i$和$x_j$進行求導兩次得到的。

1.4 凸優化問題

上面已經介紹了凸集和凸函數,是時候到凸優化了吧? 別急,在介紹凸優化概念之前再啰嗦兩句。

1.4.1 水平子集(sublevel sets)

由凸函數的概念出發,我們可以引出水平子集(sublevel set)的概念。假定f(x)是一個凸函數, 給定一個實數$\alpha\in\mathbb{R}$,我們把集合

$$ \{x\in\mathcal{D}(f)| f(x)\leq \alpha\}$$

叫做$\alpha-$水平子集。 也就是說$\alpha$水平子集是所有滿足$f(x)\leq \alpha$的點構成的集合。利用凸函數性質,我們可以證明水平子集也是凸集:

$$ f(\theta x+(1-\theta y))\leq \theta f(x)+(1-\theta)f(y) \leq  \theta \alpha + (1-\theta) \alpha=\alpha $$

水平子集告訴我們,給凸函數添加一個上限,定義域內剩下的點構成的點集還是一個凸集。

1.4.2 仿射函數(affine functions)

數學上,我們把形如

$$ h(x)=Ax+b$$

的函數叫做仿射函數。其中,$A_{n\times m}$,一個向量$b\in\mathbb{R}^m$。直觀上理解,仿射函數將一個n維空間的向量通過線性變換A映射到m維空間,並在其基礎上加上向量b,進行了平移。

同理,我們可以證明,點集

$$ \{x\in\mathcal{D}(h)| h(x)= 0\}$$

是一個凸集,證明略。

1.4.3 凸優化(convex optimization)

那么回到凸優化問題上來, 什么是一個凸優化問題?

一個凸優化問題可以定義為:

其中f是一個凸函數,C是一個凸集。根據先前介紹過的水平子集等概念,上面問題又可以等價寫為:

其中,g(x)是凸函數,h(x)是仿射函數。 也就是說,原約束集C被我們表示為一系列凸集的交集(數學上可以證明,凸集的交集還是凸集)。

1.4.4 局部最優(local optima)和全局最優(global optima)

局部最優:周圍小范圍 內沒有比我小的點。

數學定義:

如果存在$R>0$,對於所有的z:$\left\|x-z\right\|_2<R$,有$f(x)\leq f(z)$,那么就稱x是一個局部最優點。

全局最優:我就是整個定義域中的最小的點。

數學定義:

如果對於定義域內的所有z,有$f(x)\leq f(z)$,則稱x是全局最優。

現在回到凸優化問題上, 對於凸優化問題,有一個很重要的結論:

對於凸函數來講, 局部最優就是全局最優。證明如下:

我們用反證法證明。設$x$是一個局部最優,但不是全局最優,於是我們假設全局最優是$z^*$,那么我們有$f(x)>f(z^*)$

由x的局部最優性質,我們有 :

存在$R>0$,對於所有的z:$\left\|x-z\right\|_2<R$,有$f(x)\leq f(z)$

我們考慮$x$和$z^*$的凸組合:$z=\theta x+(1-\theta)z^*$,無論$z^*$在哪里,我們總可以找到一個$\theta$,使得$z$位於$x$的鄰域內,使得$f(x)\leq f(z)$

另一方面,由凸函數性質,我們有:

$$ f(z)=f(\theta x+(1-\theta)z^*)\leq\theta f(x)+(1-\theta)f(z^*)<\theta f(x)+(1-\theta)f(x)=f(x)$$

由此得$f(z)<f(x)$,這與$f(x)\leq f(z)$矛盾, 於是我們證明了如果$x$是局部最優,那么同時它也是全局最優。

 1.5 常見凸優化問題

  •  線性規划

如果$f$和$g_i$都是仿射函數,則凸優化問題變為了線性規划問題:

 

 

  • 二次規划

線性規划中,如果$f$變為一個凸二次函數,則凸優化問題變為二次規划:

  • 二次約束二次規划

$f$和$g_i$都是凸二次函數

  • 半定規划

其中,$X\in\mathbb{S}^n$是一個n維對稱方陣,並且我們將它約束為半正定矩陣。$C,A_i$都是對稱矩陣。這和前面的問題有點不太相同,前面是優化一個向量,而這里是優化一個矩陣。

 

 

 參考:

http://cs229.stanford.edu/section/cs229-cvxopt.pdf

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM