一、什么是凸函數
對於一元函數f(xf(x),如果對於任意tϵ[0,1]tϵ[0,1]均滿足:f(tx1+(1−t)x2)≤tf(x1)+(1−t)f(x2)f(tx1+(1−t)x2)≤tf(x1)+(1−t)f(x2),則稱f(x)f(x)為凸函數(convex function)
如果對於任意tϵ(0,1)tϵ(0,1)均滿足:f(tx1+(1−t)x2)<tf(x1)+(1−t)f(x2)f(tx1+(1−t)x2)<tf(x1)+(1−t)f(x2),則稱f(x)f(x)為嚴格凸函數(convex function)
我們可以從幾何上直觀地理解凸函數的特點,凸函數的割線在函數曲線的上方,如圖1所示:
上面的公式,完全可以推廣到多元函數。在數據科學的模型求解中,如果優化的目標函數是凸函數,則局部極小值就是全局最小值。這也意味着我們求得的模型是全局最優的,不會陷入到局部最優值。例如支持向量機的目標函數||w||2/2||w||2/2就是一個凸函數。
二、如何來判斷一個函數是否是凸函數呢?
對於一元函數f(x)f(x),我們可以通過其二階導數f′′(x)f″(x) 的符號來判斷。如果函數的二階導數總是非負,即f′′(x)≥0f″(x)≥0 ,則f(x)f(x)是凸函數
對於多元函數f(X)f(X),我們可以通過其Hessian矩陣(Hessian矩陣是由多元函數的二階導數組成的方陣)的正定性來判斷。如果Hessian矩陣是半正定矩陣,則是f(X)f(X)凸函數