凸函数的理解以及一些等价定义

凸函数在凸优化中有重要的意义,所谓的凸优化,是指目标函数(objective function)和约束条件(constraint function)都是凸函数,然后在此基础上进行优化目标函数,今天就和大家讲一讲我对凸函数的一些理解。
首先,看一下凸函数的具体定义
函数 f : R n → R f:{R^n} \to R f:RnR是凸的,如果 d o m f dom f domf(即函数 f f f的定义域)是凸集,且对于任意 x , y ∈ d o m f x,y\in dom f x,ydomf和任意 0 ⩽ θ ⩽ 1 0 \leqslant \theta \leqslant 1 0θ1,有
f ( θ x + ( 1 − θ ) y ) ⩽ θ f ( x ) + ( 1 − θ ) f ( y ) (1) f\left( {\theta x + \left( {1 - \theta } \right)y} \right) \leqslant \theta f\left( x \right) + \left( {1 - \theta } \right)f\left( y \right)\tag1 f(θx+(1θ)y)θf(x)+(1θ)f(y)(1)
上述(1)式就是凸函数的数学上定义,接下来我们从几何角度去看凸函数的定义。
凸函数的理解以及一些等价定义_第1张图片
从几何意义上看,凸函数就是任意两点之间的弦(即这两点构成的线段)都在该函数图像(此处是指这两点之间的函数图像,而非全部的函数图像)的上方。
上述定义是从任意的两点去理解凸函数,因此我们可以称之为“两点法”。既然有两点法,那是不是有一点法多点法呢?这也就是我们接下来要讲的内容。
————————————————————————
一点法(即一阶条件和二阶条件):
同样是函数 f : R n → R f:{R^n} \to R f:RnR,假设 f f f可微(即其梯度 ∇ f \nabla f f在开集 d o m f dom f domf内处处存在),则函数 f f f是凸函数的充要条件是 d o m f dom f domf是凸集且对于任意的 x , y ∈ d o m f x,y\in domf x,ydomf,下式成立:
f ( y ) ⩾ f ( x ) + ∇ f ( x ) T ( y − x ) (2) f(y) \geqslant f(x) + \nabla f{(x)^T}(y - x)\tag2 f(y)f(x)+f(x)T(yx)(2)
上述(2)式是凸函数的等价定义,也是我们常说的凸函数的一阶条件,同样,我们从几何角度去看这个定义,如下图:
凸函数的理解以及一些等价定义_第2张图片该图的几何意义是:凸函数上的任意一点,我们作该点的切线,则该切线总是在函数图像的下方。因为在该定义下,我们只需要通过函数图像上的一点即可判断是否为凸函数,所以称“一点法”。
一点法”的另一个解释是凸函数的二阶条件:
函数 f : R n → R f:{R^n} \to R f:RnR,假设 f f f二阶可微,即对于开集 d o m f dom f domf内的任意一点,函数 f f fHessian矩阵或二阶导数 ∇ 2 f {\nabla ^2}f 2f存在,则函数 f f f为凸函数的充要条件是:其Hessian矩阵是半正定的,即 ∇ 2 f ≽ 0 {\nabla ^2}f \succcurlyeq 0 2f0从几何角度看,Hessian矩阵半正定表示在点 x x x处函数图像具有正(向上)的曲率。
三点法——只针对一维函数
函数 f : R → R f:R \to R f:RR a , b ∈ d o m f , a < b a,b \in domf,aa,bdomfa<b,对任意 x ∈ ( a , b ) x \in (a,b) x(a,b),若下式成立,则函数 f f f为凸函数: f ( x ) − f ( a ) x − a ⩽ f ( b ) − f ( a ) b − a ⩽ f ( b ) − f ( x ) b − x (3) \frac{{f\left( x \right) - f\left( a \right)}}{{x - a}} \leqslant \frac{{f\left( b \right) - f\left( a \right)}}{{b - a}} \leqslant \frac{{f\left( b \right) - f\left( x \right)}}{{b - x}}\tag3 xaf(x)f(a)baf(b)f(a)bxf(b)f(x)(3)我们同样从几何角度去分析,见下图:
凸函数的理解以及一些等价定义_第3张图片
因为在图像中,我们从 f ( a ) f(a) f(a) f ( x ) f(x) f(x) f ( y ) f(y) f(y)三个点进行分析的,所以称为“三点法”。
多点法(即上镜图)
函数函数 f : R n → R f:{R^n} \to R f:RnR的图像定义为:
{ ( x , f ( x ) ) ∣ x ∈ d o m f } \left\{ {\left( {x,f\left( x \right)} \right)\left| {x \in dom{\kern 1pt} f} \right.} \right\} {(x,f(x))xdomf}它是 R n + 1 R^{n+1} Rn+1空间的一个子集。函数 f : R n → R f:{R^n} \to R f:RnR的上镜图定义为 e p i f = { ( x , t ) ∣ x ∈ d o m f , f ( x ) ⩽ t } epif = \left\{ {\left( {x,t} \right)\left| {x \in dom{\kern 1pt} f,f\left( x \right) \leqslant t} \right.} \right\} epif={(x,t)xdomf,f(x)t}如果一个函数的上镜图是凸集,则该函数为凸函数(当该函数的亚图为凸集时,该函数为凹函数)。同样,我们从几何角度去分析这个定义:凸函数的理解以及一些等价定义_第4张图片
图中黑色的线表示函数 f f f,函数上面的部分(也就是红色向上的竖线描述的部分)即为函数的的上镜图。只要上镜图是凸集,则函数为凸函数(反之也成立)。因为上镜图中包含了很多的点,故称该等价定义为“多点法”。
———————————————————————————————
总结:“一点法”是指通过函数图像中的一点进行分析,即该点的切线总是在函数图像下方(即一阶条件)或该点的曲率总是正的(即二阶条件:Hessian矩阵是半正定的);“两点法”是凸函数的初始定义,即任意两点连线组成的 都在函数图像的上方(是指该两点之间的函数图像);“三点法”指针对一维函数,是指函数图像上不相等的任意三点(三点都在定义域内)满足(3)式的不等式;“多点法”是从函数的上镜图去理解,即一个函数的上镜图是凸集,则该函数是凸函数。
声明:以上纯粹是个人通过学习对凸函数的理解,所谓的“几点法”并不是教科书上或业内人士所公认的称谓,只是本人便于理解和记忆而归纳总结的。

你可能感兴趣的:(凸优化,机器学习)