本文将利用线性代数的知识推导出常见临近点算子的解,具体包括:
- 投影算子
- 一范数
- 二次多项式
- 核范数
临近点算子的标准形式
p r o x λ f ( v ) = arg min x ( f ( x ) + ( 1 / 2 λ ) ∥ x − v ∥ 2 2 ) = arg min x J ( x ) prox_{\lambda f}(v)=\arg\min_x\left(f(x)+(1/2\lambda)\|x-v\|_2^2\right)=\arg\min_xJ(x) proxλf(v)=argxmin(f(x)+(1/2λ)∥x−v∥22)=argxminJ(x)
投影算子
f
=
I
C
f=I_C
f=IC为凸集
C
C
C上的示性函数,则:
p
r
o
x
λ
I
C
(
v
)
=
Π
C
(
v
)
=
arg
min
x
∈
C
∥
x
−
v
∥
2
prox_{\lambda I_C}(v)=\Pi_C(v)=\arg\min_{x\in C}\|x-v\|_2
proxλIC(v)=ΠC(v)=argx∈Cmin∥x−v∥2
即解为凸集
C
C
C上与点
v
v
v距离最小的点(投影点)。
示性函数的定义为
I
C
(
x
)
=
{
0
,
x
∈
C
+
∞
,
x
∉
C
I_C(x)=\left\{ \begin{aligned} 0 &, x\in C\\ +\infty&, x\notin C \end{aligned}\right.
IC(x)={0+∞,x∈C,x∈/C
由示性函数的定义可知,
x
x
x必然在
C
C
C的内部,示性函数的临近点算子是显然的。
二次函数
f
(
x
)
=
(
1
/
2
)
x
T
P
x
+
q
T
x
+
r
f(x)=(1/2)x^TPx+q^Tx+r
f(x)=(1/2)xTPx+qTx+r
p
r
o
x
λ
f
(
v
)
=
(
I
+
λ
P
)
−
1
(
v
−
λ
q
)
prox_{\lambda f}(v)=(I+\lambda P)^{-1}(v-\lambda q)
proxλf(v)=(I+λP)−1(v−λq)
二次函数是可微的,因此可以先求偏导数,然后利用最优化条件将偏导数置零。
∇
x
J
(
x
)
=
P
x
+
q
+
1
/
λ
(
x
−
v
)
=
0
\nabla_x J(x)=Px+q+1/\lambda (x-v)=0
∇xJ(x)=Px+q+1/λ(x−v)=0
整理后得到:
(
I
+
λ
P
)
x
=
v
−
λ
q
(I+\lambda P)x=v-\lambda q
(I+λP)x=v−λq
两边求逆即可。
一范数
f
=
∥
⋅
∥
1
f=\|\cdot\|_1
f=∥⋅∥1
p
r
o
x
λ
f
(
v
)
=
(
v
−
λ
)
+
−
(
−
v
−
λ
)
+
=
{
v
i
−
λ
,
v
i
≥
λ
0
,
∣
v
i
∣
≤
λ
v
i
+
λ
,
v
i
≤
−
λ
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.
proxλf(v)=(v−λ)+−(−v−λ)+=⎩⎪⎨⎪⎧vi−λ0vi+λ,vi≥λ,∣vi∣≤λ,vi≤−λ
由于一范数具有可分性,因此可以将原始的向量优化问题转换为标量优化问题,直接将
x
x
x表示标量
x
i
x_i
xi,
v
v
v表示
v
i
v_i
vi,得到:
J
(
x
)
=
∣
x
∣
+
(
1
/
2
λ
)
(
x
−
v
)
2
J(x)=|x|+(1/2\lambda)(x-v)^2
J(x)=∣x∣+(1/2λ)(x−v)2
此时可以通过讨论
x
≥
0
,
x
<
0
x\ge0, x<0
x≥0,x<0来化为简单的二次函数优化问题。
核范数
核范数在矩阵
X
X
X上定义,为所有奇异值绝对值的和,即奇异值组成的向量的一范数。
∥
X
∥
∗
=
∑
i
∣
λ
i
∣
\|X\|_*=\sum_i |\lambda_i|
∥X∥∗=i∑∣λi∣
关于核范数的临近点算子的优化目标为:
J
(
X
)
=
∥
X
∥
∗
+
(
1
/
2
λ
)
∥
X
−
V
∥
F
2
J(X)=\|X\|_*+(1/2\lambda)\|X-V\|_F^2
J(X)=∥X∥∗+(1/2λ)∥X−V∥F2
解为:
p
r
o
x
λ
∥
⋅
∥
∗
=
V
d
i
a
g
(
p
r
o
x
λ
f
(
σ
s
(
A
)
)
)
U
prox_{\lambda \|\cdot\|_*}=Vdiag(prox_{\lambda f}(\sigma_s(A)))U
proxλ∥⋅∥∗=Vdiag(proxλf(σs(A)))U
其中
U
σ
s
V
U\sigma_sV
UσsV为
A
A
A的SVD分解。