在前面兩篇文章中,我們介紹了凸集的定義與基本性質,以及一些保留凸性的操作。對於凸集的研究是學習凸函數以及後面凸優化問題的基礎。從這篇文章開始,我們進入凸函數的世界,預計用5、6篇文章對凸函數相關的內容進行介紹。本文主要介紹凸函數的概念以及一些基本性質。
一個函數 是一個凸函數,當且僅當以上兩個條件成立:
一個函數是嚴格凸函數當且僅當條件二當且僅當 時才取等號。凸函數的圖像使用下圖舉例。
由上圖來看,凸函數的幾何意義在於,定義域中任意兩點連線組成的線段都在這兩點的函數曲線(面)上方。由凸函數的定義可以類似地引出凹函數的定義:如果函數 是凸函數,那麼函數 是凹函數。從凸函數與凹函數的定義,我們可以發現所有的仿射函數(Affine Function)即滿足凸函數的性質,又滿足凹函數的性質,因此是「既凸又凹」的。
我們也可以從另一個解釋凸函數的定義。在上文關於凸函數的定義中,我們要求凸性對於定義域中任意兩點 成立,結合凸性(條件2)的定義,我們可以發現凸性從幾何上來說描述的是函數曲面(線)上任意兩點間的超平面(直線)與函數曲面之間的相對關係。因此從這個角度。我們可以給出凸函數的另一個定義:
給任意 、 以及 ,如果函數 是凸函數,當且僅當函數 也是其定義域( )內的凸函數。
這個定義在判斷函數凸性時與前一個定義一樣都有廣泛的應用。
在實際中,我們常常將凸函數的定義域推廣至 ,推廣的方式是將原函數定義域以外的部分定義為 ,即:
其中 稱為擴展值函數,它定義在 上。我們也可以從擴展值函數中恢復出原函數的定義域:
利用擴展值函數,我們可以簡化對函數的描述,因為此時不必再描述函數的定義域。
我們很容易地可以驗證擴展值函數同樣適用於上述關於凸函數的定義。考慮凸性的定義:
如果, 且 ,那麼如果原函數 是凸函數,擴展值函數 也是凸函數。如果 但是 。由拓展函數的定義,上式右邊等於無窮大,那麼如果原函數 是凸函數,擴展值函數 也是凸函數。因此,我們可以說,如果一個如果原函數 是凸函數,那麼擴展值函數 不改變函數的凸性。因此,為了簡化對凸函數的描述,在之後的所有文章中,我們對於都默認所有的凸函數都取其對應的擴展值函數的形式,而不再對其的定義域做過多強調。
介紹完凸函數的定義後,顯然我們可以使用定義來判斷一個函數時候是凸函數,事實上很多時候我們也的確是這麼做的。但是,實際上關於凸函數的判定方法有更簡單直觀的方法。下面兩小節介紹凸函數判定的一階與二階條件。
一階條件
考慮一個可微函數 ,即 的梯度 在 中處處存在,函數 是凸函數當且僅當對於 ,有下式成立:
上述條件成為凸函數判定的一階條件。一階條件有清晰的幾何意義:凸函數永遠位於其切線的上方。這一點可以使用下圖闡釋:
進一步分析上式,可以發現 是函數 在 處的一階泰勒近似,那麼上述條件就說明了對於凸函數而言,其任意位置處的一階泰勒展開總是其本身的全局下界(global under-estimator)。而泰勒展開描述的是函數 的局部性質,由此我們得到有關凸函數的一個重要性質:凸函數是一類可以由局部信息推導出全局信息的函數。為了解釋這一點,我們考慮 的位置,對於凸函數 有, ,說明 是函數 的全局最小值。而我們導出 是全局最小值只使用了 的局部性質—— 。這說明了凸函數可以「管中窺豹」的優良特性。在數學分析中,我們總是去分析函數的局部信息(微分),以此去分析函數的特性,而凸函數的這種優良特性使得我們只需要分析函數的局部性質就可以獲知其全局特性,這大大簡化了研究難度,因此使得凸函數與凸優化問題成為了最先受到學者廣泛研究的問題。類似於條件一,我們可以給出嚴格凸函數與凹函數的判斷條件。
二階條件
現在我們假設函數 是二階可微的,即函數 的Hessian矩陣在定義域內處處存在,那麼函數 是凸函數當且僅當對於定義域內的任意一點 ,該點處的Hessian矩陣是半正定的,即:
對於標量函數而言,Hessian矩陣半正定退化為: ,意味著函數 的導函數是非遞減的。從幾何上來說,Hessian矩陣處處半正定意味著函數 處處曲率非負。
類似地,我們可以發現對於嚴格凸函數有 ,對於凹函數有 。
在本節中,我們將介紹一些常見的凸函數,我們首先從標量函數開始介紹:
上面幾個函數通過凸函數判定的二階條件很容易地可以驗證它們的凸性。下面介紹一些矢量凸函數:
4. Log-sum-exp函數:函數 是凸函數。該函數可以可以看出是最大值函數的可微近似:
對於 的情況,繪製出函數圖像如下:
5. 幾何平均函數:函數 是凹函數。
6. 對數行列式函數(log-determinant):對於對稱正定矩陣,函數 是凸函數。因為 ,對於對稱正定矩陣,所有特徵值 都是大於0的,因此 ,由於對數函數是凸函數,其線性組合依然是凸函數(這一點在下一篇保凸運算中會有所介紹),因此 是凸函數。
上述的矢量凸函數的凸性證明均可以在書上找到,這裡不對具體的證明細節進行敘述,感興趣的讀者可以參考Convex Optimization 73-74頁的證明。
函數 的 -子水平集定義為:
從定義中可以看出,子水平集指的是定義域中滿足對應條件的部分。一個凸函數的任意子水平集都是凸集:假設 ,因此 ,因此 ,因此 。
函數 的 Epigraph定義為:
是 的子集。Epigraph的定義可以由下圖闡釋。
從幾何上來說, 可以認為是函數 曲面(線)以上的部分。因此,Epigraph是聯繫凸函數與凸集的紐帶——函數 是凸函數當且僅當它的Epigraph是凸集。
凸函數的定義式:
又被稱為詹森不等式。上面的基本詹森不等式可以被拓展為高維乃至無窮維的情況:
如果 看作是隨機矢量 的概率密度分布,那麼上面的積分不等式可以寫作下式:
利用詹森不等式可以證明一些重要的不等式,比如Holder不等式、幾何平均與算數平均關係不等式等等,這些在Convex Optimization的78頁有所闡述,這裡不進行仔細說明,只是對詹森不等式的形式以及它與凸函數的關係進行闡述,意在對詹森不等式有所了解。
本文介紹了凸函數的基本定義、判定方法、一些與凸函數相關的概念與常見凸函數,下一篇文章將會介紹一些保凸運算。