判定凸函數有一階和二階條件兩種方式,一階條件即,
假設f可微,則函數f是凸函數的充分必要條件是domf是凸集且對於任意x,y∈domf,下式成立
f(y)≥f(x)+∇f(x)T(y−x)
下圖是他在圖形上的描述,具體證明可以看下面這個blog
https://blog.csdn.net/JiZhG/article/details/52262746?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158881838419725211937190%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57644%2522%257D&request_id=158881838419725211937190&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1
一階條件在工作中很少被使用,我們往往使用的是二階條件來判定函數的凸性,二階條件涉及到了Hessian matrix,他是這樣定義的。
Hessian matrix
在數學中,海森矩陣(Hessian matrix 或 Hessian)是一個多變量實值函數的二階偏導數組成的方塊矩陣,假設有一實數函數f(x1,x2,...,xn),如果f的所有的二階偏導數都存在,那麼f的海森矩陣的第ij−項即:H(f)ij(x)=DiDjf(x),完整的矩陣長下面這樣----搜狗百科
二階條件
現假設f二階可微, 即對於開集domf內的任意一點, f的二階導或者Hessian矩陣存在, 則函數f是凸函數的充要條件是, 其Hessian矩陣半正定, 即∀x∈domf, 有
∇2f(x)⪰0
對於R上的函數, 上式退化爲f′′(x)⩾0. 該條件表明函數f的導數非減, 從幾何上解釋就是函數f在點x處具有向上(正)的曲率.
需要注意的一個性質是,對於∇2f(x)≻0,他去掉了等於的條件,可以證明函數f(x)是嚴格凸的,但是反過來無法得到,也就是說嚴格凸,不一定滿足∇2f(x)≻0。
考慮f(x)=x4,這個函數顯然是凸的,但是他的二階導數12x2是可以等於0的,不一定完全大於0。
最常用的凸函數:二次函數
f:Rn→R,domf=Rn,P∈Sn,Q∈Rn,r∈R
f(x)=21xTPx+QTx+r
這是一個二次函數,由於自變量是向量,所以二次項寫爲xTPx。P一般要求是一個對稱的矩陣,Q是向量,R是標量。我們驗證一下該函數何時凸,何時凹。
他的海森矩陣就是P,我們只需要判斷P是正定,半正定還是半負定。而且該二次函數滿足一個性質,如果P是正定的那麼函數一定是嚴格凸的,反過來也可以證明,即嚴格凸能得到P是正定的,這是爲數不多能得到這個性質的函數。
定義域一定要是凸集
考慮f(x)=x21,他的二階導數f′′(x)=6x−4>0,但是他顯然不是一個凸函數,x=0是他的一個奇異值點,它在左側凸函數,也在右側凸函數,但整體不是凸函數。也就是說,如果他的定義域都不是凸集,那麼他一定不是凸函數。
常見函數的辨析
能用二階條件判定的常見函數
仿射,指數函數,冪函數,絕對值的冪函數,對數函數,負熵
仿射函數:f(x)=Ax+b,∇2f(x)=0
顯然它既是半正定,也是半負定,因此既是凸函數也是凹函數。
指數函數:f(x)=eax,x∈R,a∈R
f′(x)=aeax,f′′(x)=a2eax≥0,因此該函數一定是凸函數。
冪函數:f(x)=xa,x∈R++,a∈R
x一定是一個正數,f′(x)=axa−1,f′′(x)=a(a−1)xa−2,此時顯然他不是任何時候都滿足≥0,因此需要分情況進行討論。
有兩點比較特殊,當a=1或者a=0的時候,它變成了仿射函數和常數,顯然既是凸的也是凹的。
絕對值的冪函數:f(x)=∣x∣p,x∈R,a∈R
這裏將x的限制去掉,但是我們不想結果是負的,所以加上絕對值,注意p不能等於1,|x|函數是一階不可導的。(但是需要注意p=1時,|x|是凸函數),然後考慮p!=1的場景。此時我們求其二階導數:
顯然p≥1時,這是一個凸函數,在p<1的時候是沒有一個統一的結論的。
對數函數:f(x)=logx,x∈R++
對數函數一定是凹函數,他的二階導數f′′(x)=−x21<0,所以這是一個嚴格凹函數。
負熵:f(x)=xlogx,x∈R++
f′′(x)=x1,是一個嚴格凸的函數。在信息論裏我們總是要極大化熵,也就是找到熵這個凹函數的最大值。
範數-零範數
Rn空間的範數p(x)x∈Rn
範數是滿足以下三個性質的函數
- p(ax)=∣a∣p(x)
- p(x+y)≤p(x)+p(y)
- p(x)=0當且僅當x=0
此時我們不能求二階導數,因此需要使用一階條件來證明他確實是一個凸函數。
零範數∣∣x∣∣0=非零元素的個數
零範數不是範數,他也不是一個凸函數。爲什麼他不滿足範數的定義呢,其實是不滿足第一個條件。
極值函數與解析逼近
極大值函數f(x)=max{x1,...,xn},x∈Rn
顯然我們無法求二階導數,因此我們使用他的定義,對∀x,y∈Rn,∀0≤θ≤1
那麼我們有
f(θx+(1−θ)y)=max{θxi+(1−θ)yi,i=1,...,n}
也就是把x,y的每一個元素都單獨拿出來求其中的最大值,然後我們可以得到
f(θx+(1−θ)y)≤θmax{xi,i=1...n}+(1−θ)max{yi,i=1...n}=θf(x)+(1−θ)f(y)
得證。
但是對於極大值函數他是不可導的,優化比較麻煩,我們通常給他做一個可導的近似優化,叫做解析逼近。
log-sum-up
首先我們對所有的元素進行一個操作
f(x)=log(ex1+...+exn);x∈Rn
這個函數滿足一個非常好的性質,
max{x1,...,xn}≤f(x)≤max{x1,...,xn}+logn
然後我們證明這個解析逼近是一個凸函數,直接求二階偏導。
之後的證明涉及了柯西斯瓦茲不等式以及一系列變換,詳細推導來這裏
幾何平均
f(x)=(x1+...+xn)n1;x∈R++
這是一個凹函數,不是一個凸函數。