--- title: Josh's Note — 凸优化
Part 2.1 凸函数—基本性质和例子 mathjax: true comments: true copyright: true toc: enable: true number: true wrap: true expand_all: true max_depth: 4 categories: - - Josh 的学习笔记 - 凸优化 - 凸函数 - - 数学 - 凸优化 tags: - 凸优化 - 凸函数 abbrlink: 320f661c date: 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](#图1)所示)。称函数 $f$ 是**严格凸**(*strictly convex*)的,如果式 $\eqref{DefinitionOfConvexFunction}$ 中的不等式当 $x\neq y$ 以及 $0<\theta<1$ 时严格成立。称函数 $f$ 是**凹**(*concave*)的,如果函数 $-f$ 是凸的,称函数 $f$ 是**严格凹**(*strictly concave*)的,如果 $-f$ 严格凸。 ![图 1. 凸函数示意图。图上任意两点之间的弦(即线段)都在函数图像之上。](../images/post/2024-06-14-josh-cvx-2-1/2024-06-14-josh-cvx-2-1-010-ConvexFunction.png){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) 描述了上述不等式。 ![图 2. 如果函数 $f$ 是凸的且可微,那么对于任意 $x,y\in\dom f$,有 $f(x)+\nabla f(x)^\TT(y-x)\leqslant f( y)$。](../images/post/2024-06-14-josh-cvx-2-1/2024-06-14-josh-cvx-2-1-020-FirstOrderCondition.png){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 **举例** **二次函数**。考虑二次函数 $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)所示)。 ![图 3. 函数 $f(x, y) = x^2/y$ 的图像。](../images/post/2024-06-14-josh-cvx-2-1/2024-06-14-josh-cvx-2-1-030-QuadraticOverLinearFunction.png){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](#图4) 描述了当 $n=2$ 时 $f$ 的图像。 ![图 4. 函数 $f(x, y) = log(e^x + e^y)$ 的图像。](../images/post/2024-06-14-josh-cvx-2-1/2024-06-14-josh-cvx-2-1-040-LogSumExo.png){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. 下水平集   函数 $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}$。   反过来不一定正确:某个函数的所有下水平集都是凸集,但这个函数可能不是凸函数。例如,函数 $f(x)=-e^x$ 在 $\mathbf{R}$ 上不是凸函数(实质上,它是严格凹函数),但是其所有下水平集均为凸集。   如果 $f$ 是凹函数,则由 $\{x\in\mathbf{dom}f\mid f(x)\geqslant\alpha\}$ 定义的 $\alpha$-上水平集也是凸集。下水平集的性质可以用来判断集合的凸性,若某个集合可以描述为一个凸函数的下水平集,或者一个凹函数的上水平集,则其是凸集。 > **举例** 对于 $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.