02-凸函數
凸優化從入門到放棄完整教程地址:https://www.cnblogs.com/nickchen121/p/14900036.html
一、基本性質和例子
[凸函數] 一個函數 \(f: R^n\rightarrow R\) 是凸的,如果定義域 \(dom\,f\) 是凸集,並且對於所有 \(x,y\in f, \theta\leq 1\) ,我們有 \(f(\theta x+(1-\theta)y)\leq \theta f(x)+(1-\theta)f(y).\)
注:如果不能理解,從二維角度去理解
幾何解釋:點 \((x,f(x))\) 和 \((y,f(y))\) 之間的線段在 \(f\) 對應的圖像上方。
- 函數 \(f\) 是嚴格凸的,如果以上不等式在 \(x\ne y\) ,且 \(0<\theta <1\) 時也成立.
- 函數 \(f\) 是凹的,當 \(-f\) 是凸的,嚴格凹,當 \(-f\) 是嚴格凸的。
- 仿射函數既是凸的也是凹的,反過來,既凹又凸的函數是仿射的。
- 一個函數是凸的當且僅當對任意 \(x\in dom\,f\) 和任意 \(v\) ,函數 \(g(t)=f(x+tv)\) 是凸的, \(\{t|x+tv\in dom\,f\}.\)注:其實只是修改了自變量的表示,又由於自變量的集合是凸集,線性表示后仍然是凸集
[擴展值] 將凸函數擴展到整個 \(R^n\) ,通常令它在定義域之外取 \(\infty\) 。如果 \(f\) 是凸函數那么它的拓展為 \(\widetilde{f} : R^n\rightarrow R \cup \{\infty\}\) ,
\(\widetilde{f}(x)=\left \{\begin{aligned} f(x)\;\; x\in domf\\ \infty\;\; x\not\in domf \end{aligned}\right.\)
[一階條件] 令函數 \(f\) 是可微的(也就是它的梯度 \(\nabla f\) 在開集 \(domf\) 的每個點上都存在)。那么 \(f\) 是凸的,當且僅當 \(domf\) 是凸的,並且對所有的 \(x,y\in domf\) 有:
\(f(y)\geq f(x)+\nabla f(x)^T(y-x).\)
注:其實同樣可以從二維角度的考慮,無非就是 \(dy\),也就是函數圖像永遠在某一點的切上上,同時 \(f(x)+\nabla f(x)^T(y-x)\) 相當於 \(f\) 在 \(x\) 的一階泰勒近似,如果你對泰勒展開公式熟悉,更好理解,因為泰勒展開是無窮階的,只不過此處做了省略
在每個點上,函數圖像都高於在該點的切線。
解釋:\(y\) 的仿射函數 \(f(x)+\nabla f(x)^T(y-x)\) 是 \(f\) 在靠近 \(x\) 處的一階泰勒近似。上述不等式表達了這個一階泰勒近似是函數的全局下限(global underestimator),反過來,如果函數的一階泰勒近似總是函數的全局下限,那么這個函數是凸的。
- 如果 \(\nabla f(x)=0\) ,那么對於所有 \(y\in domf\) ,有 \(f(y)\geq f(x)\) , 也就是在 \(x\) 處 \(f\) 取到全局最小值( \(x\) is a global minimizer of \(f\) )。
- \(f\) 是嚴格凸的,當且僅當 \(domf\) 是凸的,且對於所有 \(x,y\in domf, x\ne y\) 有 \(f(y)>f(x)+\nabla f(x)^T(y-x).\)
- \(f\) 是凹的,當且僅當 \(domf\) 是凸的,並且 \(f(y)\leq f(x)+\nabla f(x)^T(y-x),\)\(\forall x,y\in domf.\)
[二階條件] 設函數 \(f\) 是二階可微的,也就是它在開集 \(domf\) 的每個點上都存在二階導數 \(\nabla^2 f\) 。那么 \(f\) 是凸的,當且僅當它的二階導數是半正定的:
注:同樣在二維角度理解,二階導大於 0,則一階導單調遞增,則在一階導為 0 的左邊是小於 0 的,右邊大於 0 的,也就是說原函數在一階導為 0 的左邊是單調遞減的,在右邊是單調遞增的,凸
\(\forall x\in domf\) , \(\nabla^2f(x)\succeq 0\) .
幾何解釋:函數圖像在每個定義域的每個點上都有正的曲率(curvature)。
- 函數 \(f\) 是凹的,當且僅當 \(domf\) 是凸的,並且 \(\nabla^2f(x)\preceq 0\) , \(\forall x\in domf\)
- 如果 \(\forall x\in domf\) , \(\nabla^2f(x)\succ 0\) ,那么 \(f\) 是嚴格凸的。反過來不成立,例如 \(f(x)=x^4\) 是嚴格凸的,但是在 \(x=0\) 處二階導數為 \(0\) .
[例]
注:以下判斷,簡單的函數可以畫圖確定,復雜的可以通過求二階導確定
在 \(R\) 上:
- \(e^{ax} , \forall a\in R\) , 在 \(R\) 上凸。
- \(x^a,\) 當 \(a\geq 1\) 或 \(a\leq 0\) ,在 \(R_{++}\) 上凸,當 \(0\leq a\leq 1\) 時凹。
- \(|x|^p\) , \(p\geq 1\) ,在R上凸。
- \(log\;x\) ,在 \(R_{++}\) 上凸 。
- 負熵 \(x log \; x\) ,在 \(R_+\) 和 \(R_{++}\) 上凸。
在 \(R^n\) 上:
- 范數,凸
- 最大值函數,凸
- Quadratic-over-linear 函數: \(f(x,y)=x^2/y\) , \(domf=R\times R_{++}=\{(x,y)\in R^n| y>0\}\) ,凸。
- \(f(x)=log(e^{x_1}+...+e^{x_n})\) ,凸
- 幾何平均 \(f(x)=(\prod^n_{i=1}x_i)^{1/n}\) ,在 \(R^n_{++}\) 上凹。
- \(f(X)=log\; detX\) ,在 \(S^n_{++}\) 上凹。
[下水平集 sublevel set] 函數 \(f:R^n\rightarrow R\) 的一個 \(\alpha\) -下水平集是
注:下水平集其實就是對函數做了一個水平切割,或者說對定義域做了切割
\(C_{\alpha}=\{x\in domf | f(x)\leq \alpha\}\) .
- 凸函數的下水平集是凸集,對於所有的 \(\alpha\) 。反過來不對,例如 \(f(x)=-e^x\) 在 \(R\) 上不是凸的,但是它的所有下水平集都是凸集。
- 凹函數的下水平集是凸集。
[上境圖 epigraph] 一個函數 \(f:R^n\rightarrow R\) 的圖像是 \(\{(x,f(x))|x\in dom f\}\) . 它是 \(R^{n+1}\) 的子集。定義函數 \(f\) 的
上境圖: \(epi\; f = \{(x,t)| x\in dom f , f(x)\leq t\}\) .
下境圖: \(hypo\;f = \{(x,t)| t\leq f(x)\}\) .
注:上、下境圖,其實就是對函數做了一個水平切割。有可能說凸函數的下境圖是一個凸集,但是這種說法沒有意義,因為上、下境圖的水平切割是沒有固定值的
- 函數是凸的當且僅當它的上境圖是一個凸集。
- 函數是凹的當且僅當它的下境圖是一個凸集。
[Jensen不等式] 基本不等式 \(f(\theta x+(1-\theta)y)\leq \theta f(x)+(1-\theta)f(y)\) 有時被叫做Jensen不等式。
注:Jensen 不等式其實就是凸函數的定義
- 它可以拓展到多個點的凸組合:
如果 \(f\) 是凸的, \(x_1,...,x_k\in domf, \theta_1,...,\theta_k \geq 0\) , \(\theta_1+...+\theta_k=1\) 那么
\(f(\theta_1x_1+...+\theta_kx_k)\leq \theta_1 f(x_1)+...+\theta_k f(x_k)\) .
- 還可以拓展到無限,積分和期望:
積分:如果 \(p(x)\geq 0\) 在 \(S\subseteq domf\) 上, \(\int_{S} p(x) dx =1\) ,那么 \(f(\int_{S} p(x) dx)\leq \int_S f(x) p(x) dx\) .
期望:如果 \(x\) 是隨機變量 \(x\in dom f\) ,且 \(f\) 是凸函數,那么有 \(f(Ex)\leq E f(x)\) .
二、保留凸性的運算
注:以下保凸運算其實可以使用定義,也就是用 Jensen 不等式證明,注意保留的是凸函數的性質,而不是保留了凸集的性質,不要和凸集的概念搞混了
[非負加權和] 如果 \(f_1,...,f_m\) 是凸函數,他們的集合是一個凸錐——凸函數的非負加權和 \(f=w_1f_1+...+w_mf_m, (w_1,...,w_m\geq 0)\) 是凸的。
注:非負加權和其實可以看做是多個做非負伸縮的凸函數進行了加和
- 還可以拓展到積分:如果 \(f(x,y)\) 對於x是凸的,對於每個 \(y\in A\) ,且w(y)\geq 0, \(\forall y\in A\) ,那么函數 \(g(x)=\int_A w(y)f(x,y)dy\) 對於 \(x\) 是凸的。
[與仿射函數的復合] 令 \(f:R^n\rightarrow R\) , \(A\in R^{n\times m}\) , \(b\in R\) 。定義 \(g:R^m\rightarrow R\) 為
\(g(x)=f(Ax+b)\) , \(domg=\{a| Ax+b\in domf\}\) .
那么如果 \(f\) 是凸函數, \(g\) 也是凸函數。
[逐點最大 pointwise maximum] 如果 \(f_1,f_2\) 是凸函數,那么他們的逐點最大 \(f\) ,定義為
\(f(x)=max\{f_1(x),f_2(x)\}\) , 定義域 \(domf=domf_1\cap domf_2\)
也是凸集。可以拓展到多個凸函數的逐點最大。
[逐點上確界 pointwise supremum] 如果對於每個 \(y\in A\) , \(f(x,y)\) 關於 \(x\) 是凸的,那么函數
\(g(x)=\underset {y\in A}{sup} \,f(x,y)\)
關於 \(x\) 是凸的。 \(g\) 的定義域是
\(dom g=\{x|(x,y)\in dom f, \forall y\in A, \underset{y\in A}{sup}f(x,y)<\infty\}\) .
- 類似地,一組凹函數的逐點下確界是凹函數。
- \(epi\, g =\bigcap _ {y\in A}epi \, f(\cdot,y)\) .
[最小化] 如果 \(f\) 關於 \((x,y)\) 是凸函數,並且 \(C\) 是非空凸集,那么函數
\(g(x)=\underset{g\in C}{inf}\, f(x,y)\)
是關於 \(x\) 的凸函數,對於所有的 \(x\) 有 \(g(x)>-\infty\) 的定義域是 \(domf\) 到 \(x\) 軸的投影:
\(dom g=\{x| (x,y)\in domf, for \,some\,y\in C\}\) .
[函數的透視] 函數 \(f: R^n\rightarrow R\) , \(f\) 的透視函數為
\(g:R^{n+1}\rightarrow R\) , \(g(x,t)=tf(x/t)\) ,
\(domg=\{(x,t)| x/t\in dom f, t>0\}\)
透視運算保存凸性:如果函數 \(f\) 是凸的,那么它的透視函數 \(g\) 也是凸的;如果 \(f\) 是凹的,那么 \(g\) 也是凹的。
三、共軛函數
[函數的共軛 conjugate] 令 \(f:R^n\rightarrow R\) 函數 \(f^* : R^n\rightarrow R\) 定義為
\(f^*(y)=\underset{x\in domf}{sup} (y^Tx-f(x))\) , 叫做函數 \(f\) 的共軛。
注:共軛函數的本質,其實就是通過一階導,對求 \(x\) 的最小值問題轉化為了求解截距最大值問題,如果我們把共軛函數寫成這樣 \(g(x_0) = -x_0 \frac{\partial f}{ \partial x} (x_0) + f(x_0),x_0\in domf\),這樣看是不是親切很多,其實就是切線截距公式,而前面的 \(\underset{{x\in domf}}{sup}\) 就是求最大值咯
共軛函數的定義域 由使得上述上確界有限的 \(y, y\in R^n\) 組成。也就是說在 \(domf\) 上差 \(y^Tx-f(x)\) 是有界的。如圖:
- 共軛函數 \(f^*\) 是凸的,因為它是關於 \(y\) 的凸函數的逐點上確界,這一點為真不論 \(f\) 是否是凸的。
[Fenchel不等式] 由共軛函數的定義,我們有
\(f(x)+f^*(y)\geq x^T y\) , \(\forall x,y\) ,叫做Fenchel不等式。
例如對於 \(f(x)=(1/2)x^TQx\) , \(Q\in S^n_{++}\) 有 \(x^Ty\leq (1/2)x^TQx+(1/2)y^TQ^{-1}y.\)
[共軛的共軛] 如果函數 \(f\) 是凸且閉的,那么 \(f^{**}=f\) .
[可微函數] 可微函數 \(f\) 的共軛,也叫做 \(f\) 的 Legendre變換。令 \(f\) 是凸且可微的, \(domf=R^n\) ,任意使 \(y^Tx-f(x)\) 取最大值的 \(x^*\) 都滿足 \(y=\nabla f(x^*)\) 。
反過來如果 \(x^{*}\) 滿足 \(y=\nabla f(x^*)\) ,那么 \(x^{*}\) 使得 \(y^Tx-f(x)\) 最大化。因此如果 \(y=\nabla f(x^*)\) 我們有:
\(f^*(y)=x^{*T} \nabla f(x^*)-f(x^*).\) 注:這里就講到了 \(y^T\) 其實就是一階導
這允許我們能為任何 \(y\) 通過得到 \(f^*(y)\) 來解出梯度方程 \(y=\nabla f(z)\) 。
- 另一種表示,令 \(z\in R^n\) 是任意的,定義 \(y=\nabla f(z)\) , 那么有 \(f^*(y)=z^T\nabla f(z)-f(z)\) .
注:下面就是共軛函數的一些特殊性質咯
[伸縮變換,與仿射變換的復合] 對於 \(a>0,b\in R\) ,函數 \(g(x)=af(x)+b\) 的共軛是
\(g^*(y)=af^*(A^{-1}y)-b^TA^{-T}y\) . 定義域 \(domg^*=A^Tdomf^*.\)
[獨立函數的和] 如果 \(f(u,v)=f_1(u)+f_2(v)\) , \(f_1,f_2\) 都是凸函數,且有共軛 \(f_1^*,f_2^*,\) 那么 \(f^*(w,z)=f_1^*(w)+f_2^*(z).\)
也就是,獨立凸函數的和的共軛,是函數的共軛的和。
四、擬凸函數
[擬凸 Quasiconvex] 函數 \(f: R^n\rightarrow R\) 是擬凸的,如果它的定義域和所有下水平集 \(S_{\alpha}=\{x\in domf | f(x)\leq \alpha\}\) , \(\alpha \in R\) 都是凸的。
注:這里需要注意的是下水平集是凸集,而不是凸函數,其實就是利用了下境圖的概念去理解,就很好理解,就是一個函數可能不是凸,但是它的最小值在凸的那一部分,那我做個水平切割只要凸的那一部分就好了
- 一個函數是擬凹(quasiconcave)的,如果 \(-f\) 是擬凸的,也就是每個上水平集 \(\{x| f(x)\geq \alpha\}\) 是凸的。
- 如果一個函數既擬凸又擬凹,那么叫做擬線性(quasilinear)。如果一個函數是擬線性的那么它的定義域和每個下水平集 \(\{x| f(x)=\alpha\}\) 都是凸的.
[基本性質---不等式] 凸和擬凸有很多對應的性質,例如Jesen不等式的擬凸版本:一個函數 \(f\) 是擬凸的,當且僅當 \(domf\) 是凸的,且對任意 \(x\) , \(0\leq \theta\leq 1\) 有
\(f(\theta x+(1-\theta)y)\leq max\{f(x),f(y)\}.\)
注:擬凸函數的 Jensen 不等式就是說明了函數被函數兩端的最大值控制着
也就是定義域某一段上的函數值,不超過這段兩端的函數值的最大值,如圖:
[ \(R\) 上的擬凸函數] 考慮連續函數 \(f:R\in R\) 是擬凸的,當且僅當滿足以下至少一個條件:
- \(f\) 是非減的
- \(f\) 是非增的
- 存在一個點 \(c\in domf\) 使得對於 \(t\leq c (t\in domf)\) , \(f\) 是非增的,且當 \(t\geq c (t\in domf)\) , \(f\) 是非減的。
\(c\) 是一個全局最小點:
[可微擬凸函數---一階條件] 令 \(f: R^n\rightarrow R\) 是可微的,那么 \(f\) 是擬凸的當且僅當 \(domf\) 是凸的,並且 \(\forall x,y\in domf\) 有
\(f(y)\leq f(x) \Rightarrow \nabla f(x)^T(y-x)\leq 0.\)
注:這個一階條件就是規定了 \(y-x\) 和 \(\nabla f(x)\) 的夾角為鈍角,從下圖可以看出,也就是說 \(y\) 的等高線一定在 \(x\) 的等高線之內,也就是說明了 \(f(y) \leq f(x)\)
[可微擬凸函數---二階條件] 令 \(f\) 是二次可微的,如果 \(f\) 是擬凸的,那么 \(\forall x\in domf, y\in R^n\) 有
\(y^T\nabla f(x)=0\Rightarrow y^T\nabla^2 f(x)y\geq 0.\)
- 對於 \(R\) 上的擬凸函數 \(f\) ,條件簡化為 \(f'(x)=0\Rightarrow f''(x)\geq 0.\) 注:也就是說在斜率為 \(0\) 的坡的任意點上,二階導數都是非負的。
[保留擬凸性的運算]
- 非負加權最大值: $f=max{w_1f_1,...,w_mf_m} ,w_i\geq 0, $$f_i$ 是擬凸函數。這個性質可以推廣到逐點上確界。
- 復合:如果 \(g:R^n\rightarrow R\) 是擬凸函數, \(h:R\rightarrow R\) 是非減的,那么 \(f=h\circ g\) 是擬凸的。擬凸函數和仿射函數或線性-分數函數的復合也是一個擬凸函數。
- 最小化: \(f(x,y)\) 是擬凸函數, \(C\) 是一個凸集,那么函數 \(g(x)=\underset{y\in C }{inf}f(x,y)\) 是擬凸的。
[用一族凸函數表示] 用凸函數的不等式來表示擬凸函數 \(f\) 的下水平集。找一族凸函數 \(\phi_t:R^n\rightarrow R , t\in R\) 滿足 \(f(x)\leq t\Leftrightarrow \phi_t(x)\leq 0.\)
也就是,擬凸函數 \(f\) 的 \(t\)-下水平集是凸函數 \(\phi_t\) 的 \(0\)-下水平集。
五、對數凹/對數凸函數
注:個人理解,因為對數凸不能證明什么,對數凸只是在某些情況讓一個函數更易於進行優化,例如擬凸函數 \(f=e^{x^2}\),對數之后就是凸函數 \(\log f = -x^2\),讓一個擬凸函數變成凸函數,性質更好
[對數凹/凸 log-concave/log-convex] 函數 \(f:R^n\rightarrow R\) 是對數凹的,如果 \(f(x)>0, \forall x\in domf\) 是凹的。
\(f\) 是對數凸的當且僅當 \(1/f\) 是對數凹的。
允許 \(f\) 取 \(0\) , \(log\,f(x)=-\infty\) ,此時 \(f\) 是對數凹的,如果拓展值函數 \(log\,f\) 是凹的。
[用不等式表示] 函數 \(f:R^n\rightarrow R\) 帶有凸定義域,並且 \(f(x)>0,\forall x\in domf\) 有:
\(log(f(\theta x+(1-\theta)y))\geq log(f(x)^{\theta}f(y)^{1-\theta})=f(\theta x+(1-\theta)y)\geq logf(x)^{\theta}f(y)^{1-\theta}.\)
注:從變異的 Jensen 不等式可以看出,其實對數凸就是對 Jensen 不等式做了對數變化
- 特別地,對數凹函數在兩點的中點上的值,大於等於兩點上函數值的幾何平均數。
[二次可微的對數凹/對數凸函數] 令 \(f\) 是二次可微的, \(domf\) 是凸集,那么有
\(\nabla^2 log f(x)=\frac{1}{f(x)}\nabla^2 f(x)-\frac{1}{f(x)^2}\nabla f(x)\nabla f(x)^T.\)
- \(f\) 是對數凸的,當且僅當 \(\forall x\in domf\) 有:
\(f(x)\nabla^2 f(x)\succeq \nabla f(x)\nabla f(x)^T.\)
- \(f\) 是對數凹的,當且僅當 \(\forall x\in domf\) 有:
\(f(x)\nabla^2 f(x)\preceq \nabla f(x)\nabla f(x)^T.\)
[加法,乘法,積分] 對數凸性和對數凹性對於加法和正標量乘法封閉。
- 如果 \(f(x,y)\) 對於所有的 \(y\in C\) 關於 \(x\) 對數凸, 那么 \(g(x)=\int_C f(x,y) dy\) 是對數凸的
[對數凹函數的積分] 在某些特殊情況中積分保留對數凹性。如果 \(f:R^n\times R^m\rightarrow R\) 是對數凹的,那么 \(g(x)= \int f(x,y)dy\) 是關於 \(x\) 的對數凹函數。
- 這說明對數凹性在卷積下封閉,也就是如果 \(f,g\) 是 \(R^n\) 上的對數凹函數,那么卷積 \((f*g)(x)=\int f(x-y)g(y)dy\) 也是對數凹函數。
六、關於廣義不等關系的凸性
注:廣義不等式的凸性,其實就是把 Jensen 不等式擴展到錐上定義了
單調性和凸性的推廣。
[單調性] 令 \(K\subseteq R^n\) 是一個正常錐(proper cone) ,有對應的廣義不等關系 \(\preceq_K\) 。
- 一個函數 \(f:R^n\rightarrow R\) 叫做\(K\) -非減的,如果
\(x\preceq_K y\Rightarrow f(x)\leq f(y).\)
- \(f\) 是\(K\) -增的,如果
\(x\prec_K y, x\ne y\Rightarrow f(x)<f(y).\)
類似可以定義 \(K\) -非增函數,和 \(K\) -減函數。
[單調性的梯度條件] 一個定義域是凸集的可微函數 \(f\) ,是 \(K\) -非增的,當且僅當對於所有的 \(x\in domf\) 有 \(\nabla f(x)\succeq_{K^*} 0\) .
更嚴格的情況,如果 \(\nabla f(x)\succ_{K^*} 0\) 對於所有 \(x\in domf\) 成立,那么說 \(f\) 是 \(K\) -增的。
[凸性] 令 \(K\subseteq R^m\) 是一個正常錐,有對應的廣義不等關系 \(\preceq_K\) 。
- 函數 f: \(R^n\rightarrow R^m\) 是 \(K\) -凸的,當且僅當對於所有 \(x,y, 0\leq \theta \leq 1\) 有
\(f(\theta x+(1-\theta) y)\preceq_K \theta f(x)+(1-\theta)f(y).\)
- 函數 \(f\) 是嚴格 \(K\) -凸的,如果對於所有 \(x\ne y, 0< \theta< 1\) 有
\(f(\theta x+(1-\theta) y)\prec_K \theta f(x)+(1-\theta)f(y).\)
[ \(K\) -凸的對偶刻畫] 一個函數 \(f\) 是 \(K\) -凸的當且僅當對於每個 \(w\succeq_{K^*} 0\) ,實值函數 \(w^Tf\) 是凸的。 \(f\) 是嚴格 \(K\) -凸的當且僅當對於每個非零 \(w\succeq_{K^*} 0\) 函數 \(w^Tf\) 是嚴格凸的。
[可微 \(K\) -凸函數] 一個可微函數 \(f\) 是 \(K\) -凸的當且僅當它的定義域是凸集,並且對於所有的 \(x,y\in domf\) 有
\(f(y)\succeq_K f(x)+Df(x)(y-x).\)
此處 \(Df(x)\in R^{m\times n}\) 是函數 \(f\) 關於 \(x\) 的導數或 Jacobian 矩陣。
函數 \(f\) 是嚴格 \(K\) -凸的,當且僅當對於所有 \(x,y\in domf ,x\ne y\) 有
\(f(y)\succ_K f(x)+Df(x)(y-x).\)
[復合定理 composition theorem] 凸函數的非減凸函數是凸的。如果 \(g:R^n\rightarrow R^p\) 是 \(K\) -凸的, \(h: R^p\rightarrow R\) 是凸的,且 \(h\) 的值拓展 \(\widetilde{h}\) 是 \(K\) -非減的,那么 \(h\circ g\) 是凸的。
參考文獻:Stephen Boyd, Lieven Vandenberghe: Convex Optimization