一、凸函数定义
凸函数的定义是:若函数
f
(
x
)
f(x)
f(x)满足对于定义域内的任意两点
x
1
和
x
2
x1和x2
x1和x2,以及任意实数
λ
∈
(
0
,
1
)
\lambda \in (0, 1)
λ∈(0,1),都有
f
(
λ
x
1
+
(
1
−
λ
)
x
2
)
≤
λ
f
(
x
1
)
+
(
1
−
λ
)
f
(
x
2
)
f(\lambda x_1 + (1-\lambda) x_2) \leq \lambda f(x_1) + (1-\lambda) f(x_2)
f(λx1+(1−λ)x2)≤λf(x1)+(1−λ)f(x2),则称
f
(
x
)
f(x)
f(x)为凸函数(向下凸)。
这个定义强调了函数在任意两点间的值都小于或等于连接这两点的线段上的值的加权平均。这表明,如果我们在函数图像上取任意两点并连接这两点,那么这条连线将位于这两点之间的函数图像的上方或重合。
如图所示,函数在任意两点间的值都小于或等于连接这两点的线段上的值的加权平均。
我们作凸函数曲线的任意割线
A
B
AB
AB,该割线与函数曲线相交的两个点
x
x
x坐标分别是
x
A
,
x
B
x_A,x_B
xA,xB都有:在
(
x
A
,
x
B
)
(x_A,x_B)
(xA,xB)区间,函数曲线全部位于该割线的下方。
在该函数曲线上任意一点做切线,则函数曲线必全部位于该切线的上方。
容易理解,若函数 f ( x ) f(x) f(x)为凸函数,那么 − f ( x ) -f(x) −f(x) 为凹函数。所以,讨论清楚了凸函数,等价于讨论清楚了凹函数。
凹函数的定义是:若函数 f ( x ) f(x) f(x)满足对于定义域内的任意两点 x 1 和 x 2 x1和x2 x1和x2,以及任意实数 λ ∈ ( 0 , 1 ) \lambda \in (0, 1) λ∈(0,1),都有 f ( λ x 1 + ( 1 − λ ) x 2 ) ≥ λ f ( x 1 ) + ( 1 − λ ) f ( x 2 ) f(\lambda x_1 + (1-\lambda) x_2) \ge \lambda f(x_1) + (1-\lambda) f(x_2) f(λx1+(1−λ)x2)≥λf(x1)+(1−λ)f(x2),则称 f ( x ) f(x) f(x)为凸函数(向下凸)。
二、凸函数与凹函数示例
凸函数示例:
-
二次函数:所有形如 f ( x ) = a x 2 + b x + c f(x)=ax^2+bx+c f(x)=ax2+bx+c的二次函数,其中 a > 0 a \gt 0 a>0,都是凸函数。例如, f ( x ) = 3 x 2 − 2 x + 1 f(x)=3x^2-2x+1 f(x)=3x2−2x+1
-
指数函数:形如 f ( x ) = e x f(x)=e^x f(x)=ex的指数函数在实数域上是凸函数。
-
对数函数:形如 f ( x ) = l o g ( x ) f(x)=log(x) f(x)=log(x)的对数函数,在 x > 0 x \gt 0 x>0的区间上是凹函数,但在 x < 0 x \lt 0 x<0的区间上是凸函数。
-
绝对值函数:绝对值函数 f ( x ) = ∣ x ∣ f(x)=|x| f(x)=∣x∣,在实数域上是分段定义的,但在其定义域内的每一段上都是凸函数。
-
平方函数:任何形如 f ( x ) = x 2 f(x)=x^2 f(x)=x2的平方函数都是凸函数。
凹函数示例:
- 负二次函数:所有形如 f ( x ) = − a x 2 + b x + c f(x)=-ax^2+bx+c f(x)=−ax2+bx+c的二次函数,其中 a > 0 a \gt 0 a>0,都是凹函数。
- 倒数函数:形如 f ( x ) = 1 x f(x)=\frac{1}{x} f(x)=x1的倒数函数,在 x > 0 x \gt 0 x>0的区间上是凹函数
- 双曲正割函数:形如 f ( x ) = c o s h ( x ) f(x)=cosh(x) f(x)=cosh(x)的双曲正割函数是凹函数。
注意:
-
凸函数和凹函数的定义依赖于函数的二阶导数。如果一个函数的二阶导数在整个定义域内都是非负的,那么它是凸函数;如果二阶导数是非正的,那么它是凹函数。
-
有些函数在定义域的某些区间上是凸的,在其他区间上可能是凹的,或者在某些点上既不是凸也不是凹。
-
凹函数有时也被称为“concave”函数。
-
函数的凸性和凹性是局部性质,需要在函数的定义域内考虑。
-
通过观察函数图像的曲率,可以直观地识别凸函数和凹函数:凸函数的图像向外弯曲,而凹函数的图像向内弯曲。
三、凸集(convex set)
-
定义:
如果一个集合 C C C中任意两点 x x x 和 y y y之间的线段完全包含在 C C C中,即对于任意的 λ \lambda λ满足 0 ≤ λ ≤ 1 0 \leq \lambda \leq 1 0≤λ≤1,都有 λ x + ( 1 − λ ) y ∈ C \lambda x + (1-\lambda)y \in C λx+(1−λ)y∈C,那么这个集合 C C C被称为凸集。 -
几何解释:
在几何上,凸集可以被理解为没有凹陷部分的集合。任何两点间的直线段都完全位于集合内部。 -
代数解释:
如果集合 C C C中任意两个元素 x x x 和 y y y,以及任意的 λ \lambda λ满足 λ x + ( 1 − λ ) y \lambda x + (1-\lambda)y λx+(1−λ)y 也在 C C C中,那么 C C C是凸集。 -
示例:
- 所有实数构成的集合 R n R^n Rn是一个凸集。
- 所有非负实数构成的集合
[
0
,
∞
]
[0,\infty]
[0,∞]也是一个凸集
-
重要性质:
- 凸集放大 α \alpha α 倍仍为凸集
- 凸集相交仍为凸集
- 凸集的元素求和仍为凸集
- 凸集的元素相减仍为凸集
-
凸集与凸函数的关系:
如果函数 f : C → R f : C \rightarrow R f:C→R的定义域 C C C是凸集,并且对于 C C C中任意两点 x x x 和 y y y 以及任意的 λ \lambda λ满足 0 ≤ λ ≤ 1 0 \leq \lambda \leq 1 0≤λ≤1,都有 λ x + ( 1 − λ ) y ≤ λ f ( x ) + ( 1 − λ ) f ( y ) \lambda x + (1-\lambda)y \leq \lambda f(x) + (1-\lambda)f(y) λx+(1−λ)y≤λf(x)+(1−λ)f(y),那么 f f f是一个凸函数。
-
凸集在优化中的应用:
在优化问题中,如果可行域是一个凸集,那么任何局部最小点也是全局最小点,这使得凸优化问题更容易求解。
四、凸优化
凸优化,或叫做凸最优化,凸最小化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。凸优化问题有一些非常有用的属性,比如局部最优解也是全局最优解,这使得凸优化问题相对容易求解。
凸优化问题通常具有以下特点:
- 目标函数是凸函数:这意味着函数的二阶导数(如果存在)是非负的,或者在更一般的凸分析中,函数在任意两点间的线段上的所有点的函数值都位于这两点函数值的连线上。
- 约束集是凸集:这意味着如果约束集中有两个点,那么这两点之间的所有点也都在约束集内。
凸优化问题可以形式化为以下标准形式:
m
i
n
i
m
i
z
e
f
(
x
)
s
u
b
j
e
c
t
t
o
g
i
(
x
)
≤
0
,
i
=
1
,
.
.
.
,
m
h
j
(
x
)
=
0
,
j
=
1
,
.
.
.
,
p
\begin{align} minimize && f(x)\\ subject \quad to && g_i(x) \leq 0,\quad i=1,...,m \\ && h_j(x)=0,\quad j=1,...,p \end{align}
minimizesubjecttof(x)gi(x)≤0,i=1,...,mhj(x)=0,j=1,...,p
其中,
f
(
x
)
f(x)
f(x)是目标函数,
g
i
(
x
)
(
0
≤
i
≤
m
)
g_i(x) (0 \leq i \leq m)
gi(x)(0≤i≤m) 是不等式约束函数,是一个凸函数,
h
j
(
x
)
(
0
≤
j
≤
p
)
h_j(x)(0 \leq j \leq p)
hj(x)(0≤j≤p)是等式约束函数,是一个仿射函数,所有这些函数都是凸函数,
x
x
x是决策变量。
凸优化问题的求解方法包括:
- 梯度下降法:适用于目标函数可微且梯度容易计算的情况。
- 次梯度下降法:适用于目标函数可微但可能不可导的情况。
- 牛顿法:适用于目标函数是二次可微的情况。
- 内点法:适用于有约束的优化问题。
- 对偶方法:利用对偶问题的性质来求解原问题。