凸優化(四)凸函式分析
1. 概述
\(\quad\)之前簡單介紹了凸函式的定義,相信大家對凸函式有了簡單的認識,但是這是遠遠不夠的,這次通過一些詳細的函式講解來介紹一下部分常見凸函式的特點。
2. 凸函式的四個定義:
(1)第一個定義:如果X為在實數向量空間的凸集。並且有對映\(f:X\rightarrow R\),如果\(f\)被稱為凸,則有\[\forall x_1,x_2\in X,\forall t\in[0,1]: f(tx_1+(1-t)x_2)\leq tf(x_1)+(1-t)f(x_2).\]如果F被稱為嚴格凸,那麼有:\[\forall x_1\ne x_2\in X,\forall t\in(0,1): f(tx_1+(1-t)x_2)\ngeq tf(x_1)+(1-t)f(x_2).\]
(2)第二個定義:有對映\[f:R^n\rightarrow R為凸\leftrightarrow dom f為凸$,$\forall x,y\in dom f,\forall v為任意方向,g(t)=f(x+tv)為凸\],\(dom g=\{t|x+tv\in dom f\}\)
(3)第三個定義:若\(f\)可微,對\(\forall x,y\in dom f,f(y)\geq f(x)+\nabla^Tf(y-x)\)
(4)第四個定義:二階條件,若\[f:R^n\rightarrow R$二階可微,則$f$為凸$\leftrightarrow dom f為凸,\nabla^2f(x)\geq0,\forall x\in dom f\]
這四個定義在不同地方均有用處,但在判斷函式是否為凸函式時最常用的是第四個。其中\(\nabla^2f(x)\)為Hessian矩陣,表示函式的二階偏導矩陣。
3. 常見凸函式:
(1)仿射函式:\(f(x)=Ax+b\),顯然,其二階導函式為\(\nabla^2f(x)=0\),所以仿射函式為凸函式。
(2)指數函式:\(f(x)=e^{ax},x\in R\),顯然\(f^{'}(x)=ae^{ax},f^{''}(x)=a^2e^{ax}\geq0\),所以指數函式是凸函式。
(3)冪函式:\(f(x)=x^a,x\in R_{++}\)
(4)負熵函式:\(f(x)=xln{x},x\in R_{++}\),還是求導,\(f^{'}(x)=lnx+1,f^{''}(x)=\frac{1}{x}\nleq0\),嗯,還是個嚴格凸函式。(也是個非常重要的函式!!)
(5)極大值函式(重中之重):現在來一個比較複雜卻非常常見的函式:\[f(x) = max\{x_1,x_2,...,x_n\}\]這個函式顯然是不可導的,那麼首先根據定義一來看一下是否為凸函式。取兩值\(x,y\in dom f\),構造凸組合的新值\(\theta x+(1-\theta)y,f(\theta x+(1-\theta)y)=max\{\theta x_i+(1-\theta)y_i\}\leq \theta max\{x_i,i=0,1..n\}+(1\theta)max\{y_i,i=0,1..n\}=\theta f(x)+(1-\theta)f(y)\),發現滿足凸函式定義,所以極大值函式時凸函式。但是啊,由於其無法求導,後續處理會出現各種問題。所以,這裡有一個解析逼近,就是用一個解析函式去逼近極大值函式。這個函式是這樣的\(log-sum-exp:\):\[f(x)=log(e^{x_1}+...+e^{x_n}),x\in R^n,且有性質max\{x_i\}\leq f(x)\leq max\{x_i\}+ln(n)\] \(\quad\) 那麼來證明一下這個函式也是凸函式吧!這裡就要用到凸函式的第四個定義了,輪到Hessian矩陣出場了。對上述函式求二次偏導得到如下關係(公式打得累死):
\(\frac{\partial^2f}{\partial{x_i}\partial{y_i}}=\frac{-e^{x_i}e^{x_j}}{(e^{x_1}+...e^{x_n})^2},i\neq j, \frac{\partial^2f}{\partial{x_i}\partial{y_i}}=\frac{-e^{x_i}e^{x_i}+e^{x_i}(e^{x_1}+...e^{x_n})}{(e^{x_1}+...e^{x_n})^2},i=j\tag{1}\)
這個式子看上去也很醜,那麼定義列向量\(z=[e^{x_1},...,e^{x_n}]^T\),那麼(1)式就變成了\[\frac{\partial^2f}{\partial{x_i}\partial{y_i}}=\frac{-e^{x_i}e^{x_j}}{(1^Tz)^2},i\neq j, \frac{\partial^2f}{\partial{x_i}\partial{y_i}}=\frac{-e^{x_i}e^{x_i}+e^{x_i}(1^Tz)} {(1^Tz)^2},i=j\],函式的Hessian矩陣可以寫成\[H(x)=\frac{1}{(1^Tz)^2}((1^Tz)diag(z)-zz^T),另後項矩陣為K,diag(z),為向量z展開的對角矩陣\]那麼大家還記得半正定矩陣如何證明麼?就是\(\forall V\in R^n,x^TAx\geq0\)成立,那麼A則為半正定矩陣。好,那麼開始構造!!\[V^TKV=(1^Tz)V^Tdiag(z)v-V^Tzz^TV=(\sum_iz_i)\sum_i(V_i^2z_i)-(\sum_iv_iz_i)^2\tag{2}\]另\(a_i=v_i\sqrt{z_i},b_i=\sqrt{z_i}\),那麼(2)式就變成了:\[(b^Tb)(a^Ta)-(a^Tb)^2\geq0\tag{3}\]此式成立,用到的性質為柯西-施瓦茨不等式,所以\(log-sum-exp\)函式為凸函式。
(6)行列式的對數:\(f(X)=\log det(X),dom f=S^n_{++}\),首先說明一下啊,當矩陣X只有一維時,那麼原函式則為\(\log x\),顯然是凹函式。所以我們是在已經知道其為凹函式的前提下證明它是凹函式的了~根據凸函式的第二個定義當\(\forall z\in S^n_{++},\forall t\in R^{n \times n},z+tv\in S^n_{++}=dom f\),構造凸組合的函式\(g(t)=f(z+tv)=\log det(z+tv)=\log det(z^{\frac{1}{2}}(I+tv^{-\frac{1}{2}}vz^{-\frac{1}{2}})z^{\frac{1}{2}})\tag{4}\)繼續化簡得到為:\[\log det\{z\}+\log det\{I+tz^{-\frac{1}{2}}vz^{-\frac{1}{2}}\}=\log det\{z\}+\sum^n_i\log(1+t\lambda_i),其中\lambda_i\geq0\tag{5}\]接著只要分析這個式子就可以,求導即可,得到:\(g^{'}(t)=\sum_i\frac{\lambda_i}{1+t\lambda_i},g^{''}(t)=\sum_i\frac{-\lambda_i^2}{(1+t\lambda_i)^2}\leq0\tag{6}\)到這裡證明就結束了,原函式為凹函式得證。
4. 總結:
\(\quad\)可見啊,分析函式凸性一般都是通過其\(Hessian\)矩陣來分析,但是對於部分凸函式的證明也不是簡單的,總體的計算過程也在越來越複雜,後面會逐步講解凸問題的理論與求解。但是在證明的過程中會發現,其理論也是一步一步建立起來的,弄懂了原理之後看問題就會舉一反三了。