本文将利用线性代数的知识推导出常见临近点算子的解,具体包括:
临近点算子的标准形式
proxλf(v)=argxmin(f(x)+(1/2λ)∥x−v∥22)=argxminJ(x)
投影算子
f=IC为凸集C上的示性函数,则:
proxλIC(v)=ΠC(v)=argx∈Cmin∥x−v∥2
即解为凸集C上与点v距离最小的点(投影点)。
示性函数的定义为
IC(x)={0+∞,x∈C,x∈/C
由示性函数的定义可知,x必然在C的内部,示性函数的临近点算子是显然的。
二次函数
f(x)=(1/2)xTPx+qTx+r
proxλf(v)=(I+λP)−1(v−λq)
二次函数是可微的,因此可以先求偏导数,然后利用最优化条件将偏导数置零。
∇xJ(x)=Px+q+1/λ(x−v)=0
整理后得到:
(I+λP)x=v−λq
两边求逆即可。
一范数
f=∥⋅∥1
proxλf(v)=(v−λ)+−(−v−λ)+=⎩⎪⎨⎪⎧vi−λ0vi+λ,vi≥λ,∣vi∣≤λ,vi≤−λ
由于一范数具有可分性,因此可以将原始的向量优化问题转换为标量优化问题,直接将x表示标量xi,v表示vi,得到:
J(x)=∣x∣+(1/2λ)(x−v)2
此时可以通过讨论x≥0,x<0来化为简单的二次函数优化问题。
核范数
核范数在矩阵X上定义,为所有奇异值绝对值的和,即奇异值组成的向量的一范数。
∥X∥∗=i∑∣λi∣
关于核范数的临近点算子的优化目标为:
J(X)=∥X∥∗+(1/2λ)∥X−V∥F2
解为:
proxλ∥⋅∥∗=Vdiag(proxλf(σs(A)))U
其中UσsV为A的SVD分解。