Files
josh-blog-source/source/_posts/2024-06-14-josh-cvx-2-1.md
T

20 KiB
Raw Blame History

title, mathjax, comments, copyright, toc, categories, tags, abbrlink, date
title mathjax comments copyright toc categories tags abbrlink date
Josh's Note — 凸优化<br>Part 2.1 凸函数—基本性质和例子 true true true
enable number wrap expand_all max_depth
true true true true 4
Josh 的学习笔记
凸优化
凸函数
数学
凸优化
凸优化
凸函数
320f661c 2024-06-14 20:29:26

1. 定义

$ \newcommand{\TT}{\mathrm{T}} \def\dom{\mathop{\bf dom}} \def\diag{\mathop{\bf diag}} $  函数 f:\mathbf{R}^n\to\mathbf{R} 是凸的,如果 \dom f 是凸集,且对于任意 x,y\in\dom f 和任意 $0\leqslant\theta\leqslant1$,有

$$\begin{equation}\label{DefinitionOfConvexFunction} f(\theta x+(1-\theta)y)\leqslant\theta f(x)+(1-\theta)f(y) \end{equation}$$

  从几何意义上看,上述不等式意味着点 (x,f(x)) 和 (y,f(y)) 之间的线段,即从 x 到 y 的弦(chord),在函数 f 的图像上方(如图 1所示)。称函数 f 是严格凸(strictly convex)的,如果式 \eqref{DefinitionOfConvexFunction} 中的不等式当 x\neq y 以及 0<\theta<1 时严格成立。称函数 f 是凹(concave)的,如果函数 -f 是凸的,称函数 f 是严格凹(strictly concave)的,如果 -f 严格凸。

图 1. 凸函数示意图。图上任意两点之间的弦(即线段)都在函数图像之上。{width=400px}

  对于仿射函数,不等式 \eqref{DefinitionOfConvexFunction} 总成立,因此所有的仿射函数(包括线性函数)是既凸且凹的。反之,若某个函数是既凸又凹的,则其是仿射函数。函数是凸的,当且仅当其在与其定义域相交的任何直线上都是凸的。换言之,函数 f 是凸的,当且仅当对于任意 x\in\dom f 和任意向量 $v$,函数 g(t)=f(x+tv) 是凸的(其定义域为 ${t\mid x+tv\in\dom f}$)。这个性质非常有用,因为它容许我们通过将函数限制在直线上来判断其是否是凸函数。

  对凸函数的分析(analysis)已经相当地透彻,这里不再继续深入。例如有这样一个简单的结论,.凸函数在其定义域相对内部是连续的;它只可能在相对边界上不连续。

2. 扩展值延伸

  通常可以定义凸函数在定义域外的值为 $\infty$,从而将这个凸函数延伸至全空间 $\mathbf{R}^n$。如果 f 是凸函数,我们定义它的扩展值延伸(extended-value extension)$\tilde{f}:\mathbf{R}^n\to\mathbf{R}\cup{\infty}$如下


\tilde{f}(x)=\begin{cases}
  f(x)&x\in\textbf{dom}f\\\infty&x\not\in\textbf{dom}f
\end{cases}

延伸函数 \tilde{f} 是定义在全空间 \mathbf{R}^n 上的,取值集合为 $\mathbf{R}\cup{\infty}$。我们也可以从延伸函数 \tilde{f} 的定义中确定原函数 f 的定义域,即 $\dom f={x\mid\tilde{f}(x)<\infty}$。

  这种延伸可以简化符号描述,此时我们就不需要明确描述定义域或者每次提到 f(x) 时都限定“对于所有的 $x\in\dom f$”。以基本不等式 \eqref{DefinitionOfConvexFunction} 为例,对于延伸函数 \tilde{f}, 可以描述为:对于任意 x 和 $y$,以及 $0<\theta<1$,有


\tilde{f}(\theta x+(1-\theta)y)\leqslant\theta\tilde{f}(x)+(1-\theta)\tilde{f}(y)

(当 \theta=0 或 \theta=1 时不等式总成立。)当然此时我们应当利用扩展运算和序来理解这个不等式。若 x 和 y 都在 $\dom f$内,上述不等式即为不等式 $\eqref{DefinitionOfConvexFunction}$;如果有任何一个在 \dom f 外,上述不等式的右端为$\infty$,不等式仍然成立。再看一个这种表示的例子,设 f_1 和 f_2 是 \mathbf{R}^n 上的两个凸函数。逐点和函数 f=f_1+f_2 的定义域为 $\dom f=\dom f_1\cap\dom f_2$,对于任意 $x\in\dom f$,有 $f(x)=f_1(x)+f_2(x)$。利用扩展值延伸我们可以简单地描述为,对于任意 $x$,$\tilde{f}(x)=\tilde{f}_1(x)+\tilde{f}_2(x)$。在这个方程里,函数 f 的定义域被自动定义为 $\dom f=\dom f_1\cap\dom f_2$,因为当 x\not\in\dom f_1 或者 x\not\in\dom f_2 时,$\tilde{f}(x)=\infty$。在此例中,我们就可以利用扩展运算来自动定义定义域。

  在不会造成歧义的情况下,我们用同样的符号来表示一个凸函数及其延伸函数。即假设所有的凸函数都隐含地被延伸了,也就是在定义域外都被定义为 $\infty$。

举例 凸集的示性函数。设 C\subseteq\mathbf{R}^n 是一个凸集,考虑(凸)函数 $I_C$,其定义域为 $C$,对于所有的 $x\in C$,有 $I_C(x)=0$。换言之,此函数在集合 C 上一直为零。其扩展值延伸可以描述如下


\tilde{I}_C(x)=\begin{cases}0&x\in C\\\infty&x\not\in C.\end{cases}

凸函数 \tilde{I}_C 被称作集合 C 的示性函数(indicator function)。

利用示性函数 $\tilde{I}_C$,可以更加灵活地定义符号描述。例如,对于在集合 C 上极小化函数 $f$(假设其定义在整个 \mathbf{R}^n 空间)的问题,我们可以给出等价的问题,即在 \mathbf{R}^n 上极小化函数 $f+\tilde{I}_C$。事实上,函数 $f+\tilde{I}_C$(按照我们的约定)等价于定义在集合 C 上的函数 $f$。

  类似地,可以通过定义凹函数在定义域外都为 -\infty 对其进行延伸。

3. 一阶条件

  假设 f 可微(即其梯度$\nabla f$在开集 $\dom f$内处处存在),则函数 f 是凸函数的充要条件是 \dom f 是凸集且对于任意 $x,y\in\dom f$,下式成立

$$\begin{equation}\label{FirstOrderCondition} f(y)\geqslant f(x)+\nabla f(x)^\TT (y-x) \end{equation}$$

图 2 描述了上述不等式。

图 2. 如果函数 f 是凸的且可微,那么对于任意 $x,y\in\dom f$,有 $f(x)+\nabla f(x)^\TT(y-x)\leqslant f( y)$。{width=500px}

  由 f(x)+\nabla f(x)^\TT (y-x) 得出的仿射函数 y 即为函数 f 在点 x 附近的 Taylor 近似。不等式 \eqref{FirstOrderCondition} 表明,对于一个凸函数,其一阶 Taylor 近似实质上是原函数的一个全局下估计(global underestimator)。反之,如果某个函数的一阶 Taylor 近似总是其全局下估计,那么这个函数是凸的。

  不等式 \eqref{FirstOrderCondition} 说明从一个凸函数的局部信息(local information)(即它在某点的函数值及导数),可以得到一些全局信息(global information)(如它的全局下估计)。这也许是凸函数的最重要的信息,由此可以解释凸函数以及凸优化问题的一些非常重要的性质。下面是一个简单的例子,由不等式 \eqref{FirstOrderCondition} 可以知道,如果 $\nabla f(x)=0$,那么对于所有的 $y\in\dom f$,存在 $f(y)\geqslant f(x)$,即 x 是函数 f 的全局极小点。

  严格凸性同样可以由一阶条件刻画:函数 f 严格凸的充要条件是 \dom f 是凸集且对于任意 $x,y\in\dom f$,$x\neq y$,有

$$\begin{equation}\label{StrictFirstOrderCondition} f(y)>f(x)+\nabla f(x)^\TT (y-x) \end{equation}$$

  对于凹函数,亦存在与之对应的一阶条件:函数 f 是凹函数的充要条件是 \dom f 是凸集且对于任意 $x,y\in\dom f$,下式成立


f(y)\leqslant f(x)+\nabla f(x)^\TT (y-x)

3.1 一阶凸性条件的证明

  为了证明式 $\eqref{FirstOrderCondition}$,先考虑 n=1 的情况:我们证明可微函数 f:\mathbf{R}\to\mathbf{R} 是凸函数的充要条件是对于 \dom f 内的任意 x 和 $y$,有

$$\begin{equation}\label{FirstOrderConditionWhenNEquals1} f(y)\geqslant f(x)+f'(x)(y-x) \end{equation}$$

  首先假设 f 是凸函数,且 $x,y\in\dom f$。因为 \dom f 是凸集(某个区间),对于任意 $0<t\leqslant1$,我们有 $x+t(y-x)\in\dom f$,由函数 f 的凸性可得


f(x+t(y-x))\leqslant(1-t)f(x)+tf(y)

将上式两端同除 t 可得


f(y)\geqslant f(x)+\frac{f(x+t(y-x))-f(x)}{t}

令 $t\to 0$,可以得到不等式 $\eqref{FirstOrderConditionWhenNEquals1}$。

  为了证明充分性,假设对$\dom f$(某个区间)内的任意 x 和 $y$,函数满足不等式 $\eqref{FirstOrderConditionWhenNEquals1}$。选择任意 $x\neq y,0\leqslant\theta\leqslant1$,令 $z=\theta x+(1-\theta)y$。两次应用不等式 \eqref{FirstOrderConditionWhenNEquals1} 可得


f(x)\geqslant f(z)+f'(z)(x-z),\quad f(y)\geqslant f(z)+f'(z)(y-z)

将第一个不等式乘以$\theta$,第二个不等式乘以$1-\theta$,并将二者相加可得


\theta f(x)+(1-\theta)f(y)\geqslant f(z)

从而说明了函数$f$是凸的。

  现在来证明一般情况,即 $f:\mathbf{R}^n\to\mathbf{R}$。设 $x,y\in\mathbf{R}^n$,考虑过这两点的直线上的函数 $f$,即函数 $g(t)=f(ty+(1-t)x)$,此函数对 t 求导可得 $g'(t)=\nabla f(ty+(1-t)x)^\TT(y-x)$。

  首先假设函数 f 是凸的,则函数 g 是凸的,由前面的讨论可得 $g(1)\geqslant g(0)+g^{\prime}(0)$,即


f(y)\geqslant f(x)+\nabla f(x)^\TT (y-x)

再假设此不等式对于任意 x 和 y 均成立,因此若 ty+(1-t)x\in\dom f 以及 $\tilde{t}y+(1-\tilde{t})x\in\dom f$,有


f(ty+(1-t)x)\geqslant f(\tilde{t}y+(1-\tilde{t})x)+\nabla f(\tilde{t}y+(1-\tilde{t})x)^\TT (y-x)(t-\tilde{t})

即 $g(t)\geqslant g(\tilde{t})+g^{\prime}(\tilde{t})(t-\tilde{t})$,说明了函数 g 是凸的。

4 二阶条件

  现在假设函数 f 二阶可微,即对于开集 \dom f 内的任意一点,它的 Hessian 矩阵或者二阶导数 \nabla^2f 存在,则函数 f 是凸函数的充要条件是,其 Hessian 矩阵是半正定阵:即对于所有的 $x\in\dom f$,有


\nabla^2f(x)\succeq0

对于 \mathbf{R} 上的函数,上式可以简化为一个简单的条件 $f^{\prime\prime}(x)\geqslant0$(\dom f 是凸的,即一个区间),此条件说明函数 f 的导数是非减的。条件 \nabla^2f(x)\succeq0 从几何上可以理解为函数图像在点 x 处具有正(向上)的曲率。

  类似地,函数 f 是凹函数的充要条件是,\dom f 是凸集且对于任意 x\in $\dom f$,\nabla ^{2}f( x) \preceq 0。严格凸的条件可以部分由二阶条件刻画。如果对于任意的 x\in\dom f 有 $\nabla^2f(x)\succ0$,则函数 f 严格凸。反过来则不一定成立:例如,函数 $f:\mathbf{R}\to\mathbf{R}$,其表达式为 $f(x)=x^4$,它是严格凸的,但是在 $x=0$处,二阶导数为零。

举例 二次函数。考虑二次函数 $f:\mathbf{R}^n\to\mathbf{R}$,其定义域为 $\dom f=\mathbf{R}^n$,其表达式为


f(x)=(1/2)x^\TT Px+q^\TT x+r

其中 $P\in\mathbf{S}^{n},q\in\mathbf{R}^{n},r\in\mathbf{R}$。因为对于任意 $x,\nabla^2f(x)=P$,所以函数 f 是凸的,当且仅当 $P\succeq0$($f$是凹的当且仅当$P\preceq0$)。

对于二次函数,严格凸比较容易表达:函数 f 是严格凸的,当且仅当 $P\succ0$(函数是严格凹的当且仅当 $P\prec0$)。

注释 在判断函数的凸性和凹性时,不管是一阶条件还是二阶条件,\dom f 必须是凸集这个前提条件必须满足。例如,考虑函数 $f(x)=1/x^2$,其定义域为 \ dom f=\{x\in $\mathbf{R}\mid x\neq0}$,对于所有 x\in\dom f 均满足 $f^\prime\prime(x)>0$,但是函数 f(x) 并不是凸函数。

5. 例子

  前文已经提到所有的线性函数和仿射函数均为凸函数(同时也是凹函数),并描述了凸和凹的二次函数。本节绘出更多的凸函数和凹函数的例子。首先考虑 \mathbf{R} 上的一些函数,其自变量为 $x$。

  • 指数函数。对任意 $a\in\mathbf{R}$,函数 e^ax 在 \mathbf{R} 上是凸的。
  • 幂函数。当 a\geqslant1 或 a\leqslant0 时,x^a 在 \mathbf{R}_{++} 上是凸函数,当 0\leqslant a\leqslant1 时,x^a 在 \mathbf{R}_{++} 上是凹函数。
  • 绝对值幂函数。当 p\geqslant1 时,函数 $|x|^p$在 \mathbf{R} 上是凸函数。
  • 对数函数。函数 \log x 在 \mathbf{R}_{++} 上是凹函数。
  • 负熵。函数 x\log x 在其定义域上是凸函数。(定义域为 \mathbf{R}_{++} 或者 $\mathbf{R}_+$,当 x=0 时定义函数值为 0。)

  我们可以通过基本不等式 \eqref{DefinitionOfConvexFunction} 或者二阶导数半正定或半负定来判断上述函数是凸的或是凹的。以函数 f(x)=x\log x 为例,其导数和二阶导数为


f'(x)=\log x+1,\quad f''(x)=1/x

即对于 $x>0$,有 $f^\prime\prime(x)>0$。所以负熵函数是(严格)凸的。

下面给出 \mathbf{R}^n 上的一些例子。

范数。 \mathbb{R}^n 上的任意范数均为凸函数。

最大值函数。函数 f(x)=\max\{x_1,\cdots,x_n\} 在 \mathbb{R}^n 上是凸的。

二次-线性分式函数。函数 $f(x,y)=x^2/y$,其定义域为


\dom f= \mathbf{R} \times \mathbf{R} _{+ + }= \{ ( x, y) \in \mathbf{R} ^{2}\mid y> 0\}

是凸函数(如图 3所示)。

图 3. 函数 f(x, y) = x^2/y 的图像。{width=400px}

指数和的对数。函数 f(x)=\log\left(e^{x_1}+\cdots+e^{x_n}\right) 在 $\mathbf{R}^n$上是凸函数。这个函数可以看成最大值函数的可微(实际上是解析)近似,因为对任意 $x$,下面的不等式成立


\max\{x_{1},\cdots,x_{n}\}\leqslant f(x)\leqslant\max\{x_{1},\cdots,x_{n}\}+\log n

(第二个不等式当 x 的所有分量都相等时是紧的。)图 4 描述了当 n=2 时 f 的图像。

图 4. 函数 f(x, y) = log(e^x + e^y) 的图像。{width=400px}

几何平均。几何平均函数$f(x)=\left(\prod_i=1^nx_i\right)^{1/n}$在定义域 dom $f=\mathbf{R}_++^n$上是凹函数。

对数-行列式。函数$f(X)=\log\det X$在定义域$\dom f=\mathbf{S}_{++}^n$上是凹函数。

  判断上述函数的凸性(或者凹性)可以有多种途径,可以直接验证不等式(3.1) 是否成立,亦可以验证其 Hessian 矩阵是否半正定,或者可以将函数转换到与其定义域相交的任意直线上,通过得到的单变量函数判断原函数的凸性。

范数。如果函数 f:\mathbf{R}^n\to\mathbf{R} 是范数,任取 $0\leqslant\theta\leqslant1$,有


f(\theta x+(1-\theta)y)\leqslant f(\theta x)+f((1-\theta)y)=\theta f(x)+(1-\theta)f(y)

上述不等式可以由三角不等式得到,当范数满足齐次性时,上述不等式取等号。

最大值函数。对任意 $0\leqslant\theta\leqslant1$,函数 f(x)=\max_ix_i 满足

$$\begin{aligned} f(\theta x+(1-\theta)y)&=\max_{i}(\theta x_{i}+(1-\theta)y_{i}) \ &\leqslant\theta\max_{i}x_{i}+(1-\theta)\max_{i}y_{i} \ &=\theta f(x)+(1-\theta)f(y) \end{aligned}$$

二次线性分式函数。为了说明二次-线性分式函数 f( x, y) = x^2/ y 是凸的,我们注意 到,对于 $y>0$,有


\nabla^2f(x,y)=\dfrac{2}{y^3}\left[\begin{array}{cc}
y^2&-xy\\-xy&x^2
\end{array}\right]=\dfrac{2}{y^3}\left[\begin{array}{c}
y\\-x
\end{array}\right]\left[\begin{array}{c}
y\\-x
\end{array}\right]^\TT \succeq0

指数和的对数。 指数和的对数函数的 Hessian 矩阵为


\nabla^{2}f(x)=\frac{1}{(\mathbf{1}^\TT z)^{2}}\left((\mathbf{1}^\TT z)\diag(z)-zz^\TT\right)

其中 $z=(e^{x_1},\cdots,e^{x_n})$。为了说明 $\nabla^2f(x)\succeq0$,我们证明对任意 $v$,有 $v^\TT \nabla^2f(x)v\geqslant0$,即


v^\TT \nabla^{2}f(x)v=\frac{1}{(\mathbf{1}^\TT z)^{2}}\left(\left(\sum_{i=1}^{n}z_{i}\right)\left(\sum_{i=1}^{n}v_{i}^{2}z_{i}\right)-\left(\sum_{i=1}^{n}v_{i}z_{i}\right)^{2}\right)\geqslant0

上述不等式可以应用 Cauchy-Schwarz 不等式 (a^\TT a)(b^\TT b)\geqslant(a^\TT b)^2 得到,此时向量 a 和 b 的分量为 a_i= v_i\sqrt {z_i}, $b_i= \sqrt {z_i}$。

几何平均。类似地,我们说明,几何平均函数 f(x)=\left(\prod_{i=1}^nx_i\right)^{1/n} 在定义域 $\dom f=\mathbf{R}_{++}^{n}$上是凹的。其 Hessian 矩阵 \nabla^2f(x) 可以通过下面两个式子给出


\frac{\partial^{2}f(x)}{\partial x_{k}^{2}}=-(n-1)\frac{\left(\displaystyle\prod_{i=1}^{n}x_{i}\right)^{1/n}}{n^{2}x_{k}^{2}},\quad\frac{\partial^{2}f(x)}{\partial x_{k}\partial x_{l}}=\frac{\left(\displaystyle\prod_{i=1}^{n}x_{i}\right)^{1/n}}{n^{2}x_{k}x_{l}}\quad\forall\:k\neq l

因此 \nabla^2f(x) 具有如下表达式

$$\nabla^{2}f(x)=-\frac{\displaystyle\prod_{i=1}^{n}x_{i}^{1/n}}{n^{2}}\left(n:\mathbf{diag}(1/x_{1}^{2},\cdots,1/x_{n}^{2})-qq^{T}\right)



其中,$q_i=1/x_i$。我们需要证明 $\nabla^2f(x)\preceq0$,即对于任意向量 $v$,有

v^TT \nabla^2f(x)v=-\frac{\displaystyle\prod_{i=1}^nx_i^{1/n}}{n^2}\left(n\sum_{i=1}^nv_i^2/x_i^2-\left(\sum_{i=1}^nv_i/x_i\right)^2\right)\leqslant0



这同样可以应用 Cauchy-Schwarz 不等式 $(a^TT a)(b^TT b)\geqslant(a^TT b)^2$ 得到,只需令向量 $a=1$,向量 $b$ 的分量 $b_i=v_i/x_i$。

**对数-行列式**。对于函数 $f(X)=\log\det X$,我们可以将其转化为任意直线上的单变量函数来验证它是凹的。令 $X=Z+tV$,其中 $Z,V\in\mathbf{S}^n$,定义 $g(t)=f(Z+tV)$,自变量 $t$ 满足 $Z+tV\succ0$。不失一般性,假设 $t=0$ 满足条件,即 $Z\succ0$。我们有

$$\begin{aligned}
g(t)&=\log\det(Z+tV)
\\
&=\log\det(Z^{1/2}(I+tZ^{-1/2}VZ^{-1/2})Z^{1/2})
\\
&=\sum_{i=1}^{n}\log(1+t\lambda_{i})+\log\det Z
\end{aligned}$$

其中 $\lambda_1,\cdots,\lambda_n$ 是矩阵 $Z^-1/2VZ^{-1/2}$ 的特征值。因此下式成立

g'(t)=\sum_{i=1}^{n}\frac{\lambda_{i}}{1+t\lambda_{i}},\quad g''(t)=-\sum_{i=1}^{n}\frac{\lambda_{i}^{2}}{(1+t\lambda_{i})^{2}}



因为 $g^{\prime\prime}(t)\leqslant0$,函数 $f$ 是凹的。

# 6. 下水平集

&emsp;&emsp;函数 $f: \mathbf{R} ^{n}\to \mathbf{R}$ 的 $\alpha$-下水平集定义为

C_{\alpha}={x\in\mathbf{dom}f\mid f(x)\leqslant\alpha}



对于任意 $\alpha$ 值,凸函数的下水平集仍然是凸集。证明可以由凸集的定义直接得到:如果 $x,y\in C_{\alpha }$,则有 $f( x) \leqslant \alpha$,$f( y) \leqslant \alpha$,因此对于任意$0\leqslant\theta\leqslant1$,$f(\theta x+(1-\theta)y)\leqslant\alpha$,即 $\theta x+(1-\theta)y\in C_{\alpha}$。

&emsp;&emsp;反过来不一定正确:某个函数的所有下水平集都是凸集,但这个函数可能不是凸函数。例如,函数 $f(x)=-e^x$ 在 $\mathbf{R}$ 上不是凸函数(实质上,它是严格凹函数),但是其所有下水平集均为凸集。

&emsp;&emsp;如果 $f$ 是凹函数,则由 $\{x\in\mathbf{dom}f\mid f(x)\geqslant\alpha\}$ 定义的 $\alpha$-上水平集也是凸集。下水平集的性质可以用来判断集合的凸性,若某个集合可以描述为一个凸函数的下水平集,或者一个凹函数的上水平集,则其是凸集。

> **举例**&emsp;对于 $x\in\mathbf{R}_+^n$,其几何平均和算术平均分别为
>
> $$
> G(x)=\left(\prod_{i=1}^{n}x_{i}\right)^{1/n},\quad A(x)=\frac{1}{n}\sum_{i=1}^{n}x_{i}
> $$
>
> (在 $G$ 中,定义 $0^{1/n}=0$)。算术几何平均不等式为 $G(x)\leqslant A(x)$。
>
> 设 $0\leqslant\alpha\leqslant1$,考虑集合
>
> $$
> \{x\in\mathbf{R}_{+}^{n}\mid G(x)\geqslant\alpha A(x)\}
> $$
>
> 即使得几何平均至少大于等于算术平均的 $\alpha$ 倍的集合。此集合是凸集,因为它是凹函数
$G(x)=\alpha A(x)$ 的 $0$-上水平集。事实上,这个每合是正齐次的,因此它是凸锥

# 参考文献

1. Stephen P. Boyd and Lieven Vandenberghe, *Convex optimization*. Cambridge, UK: Cambridge University Press, 2004.
2. Stephen P. Boyd and Lieven Vandenberghe, *凸优化*. 北京: 清华大学出版社, 2013.