本文主要是介绍漫步最优化十四——凸函数与凹函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我一直都在流浪,
可我却不曾见过海洋。
我努力微笑坚强,
用寂寞筑成一道围墙。
如果恨你,就没发忘记你,
如果不够悲伤,就无法飞翔。
那就让我孤独到底,直到忘记了呼吸。
——畅宝宝的傻逼哥哥
通常在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值,对于一些特殊的函数,凸函数与凹函数,任何局部极值也是全局极致,因此如果目标函数是凸的或凹的,那么优化算法就能保证是全局的。
定义1: 集合 Rc⊂En 是凸集,如果对每对点 x1,x2⊂Rc ,每个实数 α,0<α<1 ,点
位于 Rc ,即 x∈Rc 。
效果上,如果任何两点 x1,x2∈Rc 用直线相连, x1,x2 之间线上的每个点都在 Rc 中,那么 Rc 是凸的。如果存在点不在 Rc 中,那么该集合是非凸的,凸集合如图1所示。
凸的概念也可以用到函数上。
定义2:
- 我们称定义在凸集 Rc 上的函数 f(x) 为凸的,如果对每对 x1,x2∈Rc 与每个实数 α,0<α<1 ,不等式
f[αx1+(1−α)x2]≤αf(x1)+(1−α)f(x2)
满足。如果 x1≠x2
满足,那么 f(x) 是严格凸的。
- 如果 φ(x) 定义在凸集 Rc 上且 f(x)=−φ(x) 是凸的,那么 φ(x) 是凹的。如果 f(x) 是严格凸的,那么 φ(x) 是严格凹的。
上述定义中的不等式,左边是点 x1,x2 之间某处的 f(x) 值,而右边是基于线性插值得到的 f(x) 的近似,因此如果任何两点的线性插值大于函数的值,那么该函数就是凸的,图2a,b中的函数为凸的,2c为非凸的。
图1
定理1: 如果
其中 a,b≥0,f1(x),f2(x) 是凸集 Rc 上的凸函数,那么 f(x) 是集合 Rc 上的凸函数。
证明: 因为 f1(x),f2(x) 是凸函数, a,b≥0 ,所以对于 x=αx1+(1−α)x2 ,我们有
其中 0<α<1 ,因此
因为
所以上面的不等式可以写成
即 f(x) 是凸函数。
图2
定理2: 如果 f(x) 是凸集 Rc 上的凸函数,那么对每个实数 K 而言,集合
都是凸集。
证明: 如果 x1,x2∈Sc ,那么根据 Sc 的定义, f(x1)≤K,f(x2)≤K ,因为 f(x) 是凸集,所以
或者
所以
即 Sc 是凸的。
定理2的图示如图3,其中集合 Sc 是凸集,如果 f(x) 在凸集 Rc 上是凸函数的话。
图3
另一种考虑凸的角度是测试 f(x) 的梯度与海森矩阵。
定理3: 如果 f(x)∈C1 ,那么 f(x) 在凸集 Rc 上是凸函数,当且仅当对所有 x,x1∈Rc
其中 g(x) 是 f(x) 的梯度。
证明: 这个定理的证明由两部分组成。首先我们证明如果 f(x) 是凸函数,那么不等式成立。然后证明如果不等式成立,那么 f(x) 是凸函数。首先如果 f(x) 是凸函数,那么对于所有 α,0<α<1
或者
当 α→0 ,由 f[x+α(x1−x)] 的泰勒级数可得
所以
接下来,如果不等式在 x,x2∈Rc 处成立,那么
从上面两式可得
或者
代入
可得
其中 0<α<1 ,因此 f(x) 是凸函数。
定理3说明 f(x) 在点 x 处基于 f(x) 导数的线性插值小于函数值,如图4所示。
定理4: 函数 f(x)∈C2 是凸集 Rc 上的凸函数,当且仅当 f(x) 的海森矩阵 H(x) 对 x∈Rc 是半正定的。
证明: 如果 x1=x+d ,其中 x1,x 是 Rc 中的任意点,那么由泰勒级数可得
其中 0≤α≤1 ,接下来如果 H(x) 在 Rc 中是半正定的,那么
所以
所以由定理3可知 f(x) 是凸函数。
如果 H(x) 在 Rc 任何处都是半正定的,那么存在点 x 与方向 d 使得
所以
根据定理3可知 f(x) 是非凸的,所以当且仅当 H(x) 在 Rc 任何地方是半正定时 f(x) 是凸函数。
图4
对于严格凸函数,上面的定理修改如下:
定理5:
- 如果 f(x) 是凸集 Rc 上的严格凸函数,那么对每个实数 K 而言,集合
Sc={x:x∈Rc,f(x)<K}
都是凸集。
- 如果 f(x)∈C1 ,那么 f(x) 在凸集 Rc 上的严格凸函数,当且仅当对所有 x,x1∈Rc
f(x1)>f(x)+g(x)T(x1−x)
其中 g(x) 是 f(x) 的梯度。
- 函数 f(x)∈C2 是凸集 Rc 上的凸函数,当且仅当 f(x) 的海森矩阵 H(x) 对 x∈Rc 是正定的。
如果 φ(x) 定义在凸集 Rc 上,且 f(x)=−φ(x) 是严格凸函数,那么 φ(x) 是严格凹函数且其海森矩阵是负定的。反过来,如果 φ(x) 的海森矩阵是负定的,那么 φ(x) 是严格凹的。
这篇关于漫步最优化十四——凸函数与凹函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!