如何证明函数$f(x_1,x_2\cdots x_K)$关于$(x_1,x_2\cdots x_K)$是联合凸函数?
要证明函数$$f(x_1,x_2,\dots,x_K)=\log\left(a+\sum_{i=1}^K\frac{b_i}{c+x_i}\right)$$(其中$x_i\geq0$,$a>0,b_i>0,c>0$)是联合凸函数,咱们用Hessian矩阵半正定的判定方法就行——多元函数是凸函数当且仅当其Hessian矩阵在定义域内处处半正定。
步骤1:先算一阶偏导数
先定义一个辅助变量$S = a + \sum_{i=1}^K \frac{b_i}{c+x_i}$,显然$S>0$(所有项都是正数)。根据链式法则,对任意$x_i$的一阶偏导数为:
$$\frac{\partial f}{\partial x_i} = \frac{1}{S} \cdot \frac{\partial}{\partial x_i}\left(a+\sum_{j=1}^K\frac{b_j}{c+x_j}\right) = -\frac{b_i}{S(c+x_i)^2}$$
步骤2:计算二阶偏导数
接下来要算两种二阶偏导:Hessian矩阵的对角元(对同一变量求两次导)和非对角元(对不同变量交叉求导)。
对角元:$\frac{\partial^2 f}{\partial x_i^2}$
用商的导数法则对一阶偏导再求导:
$$
\begin{align*}
\frac{\partial^2 f}{\partial x_i^2} &= \frac{\partial}{\partial x_i}\left(-\frac{b_i}{S(c+x_i)^2}\right) \
&= \frac{b_i \cdot \left( \frac{\partial S}{\partial x_i}(c+x_i)^2 + S \cdot 2(c+x_i) \right)}{S2(c+x_i)4}
\end{align*}
$$
把$\frac{\partial S}{\partial x_i} = -\frac{b_i}{(c+x_i)^2}$代入进去,化简后得到:
$$\frac{\partial^2 f}{\partial x_i^2} = \frac{b_i\left(2S(c+x_i) - b_i\right)}{S2(c+x_i)4}$$
非对角元:$\frac{\partial^2 f}{\partial x_i \partial x_j} \ (i\neq j)$
当$i\neq j$时,$\frac{\partial S}{\partial x_j} = -\frac{b_j}{(c+x_j)^2}$,求导后得到:
$$
\begin{align*}
\frac{\partial^2 f}{\partial x_i \partial x_j} &= \frac{\partial}{\partial x_j}\left(-\frac{b_i}{S(c+x_i)^2}\right) \
&= \frac{b_i \cdot \frac{\partial S}{\partial x_j}}{S2(c+x_i)2} \
&= \frac{b_i b_j}{S2(c+x_i)2(c+x_j)^2}
\end{align*}
$$
步骤3:证明Hessian矩阵半正定
我们可以把Hessian矩阵$H$拆成两个部分的组合:
$$H = \frac{2}{S}D - \frac{1}{S2}vvT$$
这里:
- $D$是对角矩阵,每个对角元$D_{ii} = \frac{b_i}{(c+x_i)^3}$
- $v$是一个向量,每个分量$v_i = \frac{b_i}{(c+x_i)^2}$
要证明$H$半正定,只要证明对任意向量$z\in\mathbb{R}K$,都有$zT H z \geq 0$。把$H$代入进去:
$$z^T H z = \frac{2}{S}z^T D z - \frac{1}{S2}(zT v)^2$$
也就是要证明:
$$2S z^T D z \geq (z^T v)^2$$
变量替换+不等式推导
先做个变量替换,令$t_i = \frac{z_i}{c+x_i}$,这样:
- $z^T D z = \sum_{i=1}^K \frac{b_i}{(c+x_i)3}z_i2 = \sum_{i=1}^K \frac{b_i t_i^2}{c+x_i}$
- $z^T v = \sum_{i=1}^K \frac{b_i}{(c+x_i)^2}z_i = \sum_{i=1}^K \frac{b_i t_i}{c+x_i}$
再令$s_i = \frac{b_i t_i}{c+x_i}$,那么$z^T v = \sum s_i$,同时$z^T D z = \sum \frac{(c+x_i)s_i^2}{b_i}$。把这些代入要证明的不等式,就变成:
$$2S \sum \frac{(c+x_i)s_i^2}{b_i} \geq \left(\sum s_i\right)^2$$
把$S = a + \sum_{j=1}^K \frac{b_j}{c+x_j}$展开,左边可以拆成两项:
$$2a \sum \frac{(c+x_i)s_i^2}{b_i} + 2\left(\sum_{j=1}^K \frac{b_j}{c+x_j}\right)\left(\sum_{i=1}^K \frac{(c+x_i)s_i^2}{b_i}\right)$$
对于第二项,我们可以用基本不等式:对任意正数$p,q$,有$p s_i^2 + q s_j^2 \geq 2s_i s_j$。这里取$p=\frac{b_j(c+x_i)}{b_i(c+x_j)}, q=\frac{b_i(c+x_j)}{b_j(c+x_i)}$,不难发现$\sqrt{pq}=1$,所以:
$$2\left(\sum_{j=1}^K \frac{b_j}{c+x_j}\right)\left(\sum_{i=1}^K \frac{(c+x_i)s_i^2}{b_i}\right) \geq \left(\sum s_i\right)^2$$
再加上第一项$2a \sum \frac{(c+x_i)s_i^2}{b_i} \geq 0$(所有参数都是正数,平方项也非负),显然整个左边大于等于右边,原不等式成立,也就是$z^T H z \geq 0$。
结论
Hessian矩阵$H$在整个定义域内都是半正定的,所以函数$f(x_1,x_2,\dots,x_K)$是关于$(x_1,x_2,\dots,x_K)$的联合凸函数。
内容的提问来源于stack exchange,提问作者Frank Moses

