常見臨近點算子的求解

本文將利用線性代數的知識推導出常見臨近點算子的解,具體包括:

  • 投影算子
  • 一範數
  • 二次多項式
  • 核範數

臨近點算子的標準形式

proxλf(v)=argminx(f(x)+(1/2λ)xv22)=argminxJ(x)prox_{\lambda f}(v)=\arg\min_x\left(f(x)+(1/2\lambda)\|x-v\|_2^2\right)=\arg\min_xJ(x)

投影算子

f=ICf=I_C爲凸集CC上的示性函數,則:
proxλIC(v)=ΠC(v)=argminxCxv2prox_{\lambda I_C}(v)=\Pi_C(v)=\arg\min_{x\in C}\|x-v\|_2
即解爲凸集CC上與點vv距離最小的點(投影點)。
示性函數的定義爲
IC(x)={0,xC+,xCI_C(x)=\left\{ \begin{aligned} 0 &, x\in C\\ +\infty&, x\notin C \end{aligned}\right.
由示性函數的定義可知,xx必然在CC的內部,示性函數的臨近點算子是顯然的。

二次函數

f(x)=(1/2)xTPx+qTx+rf(x)=(1/2)x^TPx+q^Tx+r
proxλf(v)=(I+λP)1(vλq)prox_{\lambda f}(v)=(I+\lambda P)^{-1}(v-\lambda q)
二次函數是可微的,因此可以先求偏導數,然後利用最優化條件將偏導數置零。
xJ(x)=Px+q+1/λ(xv)=0\nabla_x J(x)=Px+q+1/\lambda (x-v)=0
整理後得到:
(I+λP)x=vλq(I+\lambda P)x=v-\lambda q
兩邊求逆即可。

一範數

f=1f=\|\cdot\|_1
proxλf(v)=(vλ)+(vλ)+={viλ,viλ0,viλvi+λ,viλprox_{\lambda f}(v)=(v-\lambda)_+-(-v-\lambda)_+= \left\{ \begin{aligned} v_i-\lambda &,v_i\ge\lambda \\ 0&, |v_i|\le\lambda \\ v_i+\lambda &,v_i\le-\lambda \end{aligned}\right.
由於一範數具有可分性,因此可以將原始的向量優化問題轉換爲標量優化問題,直接將xx表示標量xix_ivv表示viv_i,得到:
J(x)=x+(1/2λ)(xv)2J(x)=|x|+(1/2\lambda)(x-v)^2
此時可以通過討論x0,x<0x\ge0, x<0來化爲簡單的二次函數優化問題。

核範數

核範數在矩陣XX上定義,爲所有奇異值絕對值的和,即奇異值組成的向量的一範數。
X=iλi\|X\|_*=\sum_i |\lambda_i|
關於核範數的臨近點算子的優化目標爲:
J(X)=X+(1/2λ)XVF2J(X)=\|X\|_*+(1/2\lambda)\|X-V\|_F^2
解爲:
proxλ=Vdiag(proxλf(σs(A)))Uprox_{\lambda \|\cdot\|_*}=Vdiag(prox_{\lambda f}(\sigma_s(A)))U
其中UσsVU\sigma_sVAA的SVD分解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章