本文转载自:https://blog.csdn.net/u010366427/article/details/51879112
笔记是根据《Convex Optimization》写的,对应第3章。
3 凸函数
3.1 基本性质及例子
满足如下条件的从n维映射到1维的函数称凸函数:
f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)
其中0≤θ≤10≤θ≤1。凸函数的一维导数有如下性质:
f(y)≥f(x)+∇f(x)T(y−x)f(y)≥f(x)+∇f(x)T(y−x)
可以注意到其实等号右边是ff在xx上的一阶泰勒展开式。另外,凸函数的二阶导数大于或等于0。凸函数举例如下:
1) 指数函数eaxeax
2) 幂函数xaxa,其中xx大于或等于0,当aa不属于0-1范围内时为凸函数,否则为凹函数
3) 绝对值的幂函数|x|a|x|a,其中a>1a>1
4) 对数函数logxlogx
5) 负熵xlogxxlogx
6) 范数
7) 最大值函数max(x)max(x)
8) 二次-线性分式函数f(x,y)=x2/yf(x,y)=x2/y,yy大于0
9) 指数和的对数f(x)=log(ex1+ex2+,…,+exn)f(x)=log(ex1+ex2+,…,+exn).这其实是一个soft-max
10) 几何平均f(x)=(∏ni=1xi)1/nf(x)=(∏i=1nxi)1/n
11) 行列式的对数log|A|log|A|,其中AA矩阵正定
另外还有两个概念。下水平集:即函数值小于某个阈值对应的定义域。上镜图:即{(x,t)|t≥f(x)}{(x,t)|t≥f(x)},这是一片函数之上的区域。同时,凸函数满足jensen不等式。
3.2 保凸运算
1)非负加权和,即把多个函数乘上一个非负的权重加起来。
2)复合仿射
g(x)=f(Ax+b)g(x)=f(Ax+b)
如果ff是凸的,则gg是凸的。如果ff是凹的,gg也是凹的。即对自变量仿射后保凸。
3)逐点最大,即多个函数中相同自变量取其中最大者,该运算保凸。
4)复合
设f(x)=h(g(x))f(x)=h(g(x)),则有如下情况:
如果hh是凸函数且非减,gg是凸函数,则ff是凸函数。
如果hh是凸函数且非增,gg是凹函数,则ff是凸函数。
如果hh是凹函数且非减,gg是凹函数,则ff是凹函数。
如果hh是凹函数且非增,gg是凸函数,则ff是凹函数。
ff的拓展函数与上相同。
5)下界
g(x)=inf(y∈C)f(x,y)g(x)=inf(y∈C)f(x,y)
如果ff在(x,y)(x,y)中是凸的,则gg也是凸的。
6)透视函数
g(x,t)=tf(x/t)g(x,t)=tf(x/t)
其中tt大于0.如果f是凸的,则gg是凸的,如果ff是凹的,gg也是凹的。
3.3 共轭函数
共轭函数表达式是:
f∗(y)=supx(yTx−f(x))f∗(y)=supx(yTx−f(x))
其中supsup是求上界。其含义是,给定yy时平面yTxyTx到f(x)f(x)的最大距离。下图的虚线即平面yTxyTx,yTxyTx到f(x)f(x)的最大距离出现在f(x)f(x)斜率为yy的切线上。任何函数的共轭函数都是凸的,因为从表达式中可以看到f∗(y)f∗(y)是yy的仿射。
共轭函数的求法是令xy−f(x)xy−f(x),带入f(x)f(x)的表达式中并对xx求导,使求导结果等于0(即求f(x)f(x)与xyxy距离的最值),把xx的结果回代进f∗(y)=xy−f(x)f∗(y)=xy−f(x)即可。
3.4 拟凸函数
如果一个函数的下水平集(sublevel sets)是凸集,则该函数是拟凸函数。例如:
1) 对数函数logxlogx
2) 上取整函数ceil(x)=inf{z∈Z|z≥x}ceil(x)=inf{z∈Z|z≥x}
3) 向量的长度
4) f(x1,x2)=x1x2f(x1,x2)=x1x2,由于该矩阵的Hessian矩阵不是正定,也不是负定,但是其下水平集是凸集。
5) 线性分式f(x)=(aTx+b)/(cTx+d)f(x)=(aTx+b)/(cTx+d)
对于一个函数来说,如果满足其非减,或非增,或存在一个点函数小于该点非增,大于该点非减,则该函数为拟凸的。
3.5 对数凸函数
如果函数的值域大于0,并且logf(x)logf(x)是凸的,则该函数成对数凸函数。对数凹函数同理。例如:
1) 仿射函数
2) 幂函数f(x)=xaf(x)=xa,其中xx大于0且aa小于等于0.若aa大于等于0则为对数凹函数
3) 指数函数
4) 高斯分布的累积分布函数
5) Gamma函数
6) 矩阵的行列式
7) 矩阵的行列式除以迹
需要注意,两个对数凸函数相乘依然是对数凸函数,相加却未必。两个对数凸函数的卷积运算是对数凸函数。对数凸函数的积分运算是对数凸函数。