一种点到特定高维平面的距离的优化算法
该算法来自于Efficient Projections onto the ℓ1-Ball for Learning in High Dimensions论文,优化问题为:
m i n m i z e w 1 2 ∥ w − v ∥ 2 2 s . t . ∑ i = 1 m w i = z , w i ≥ 0 \underset{\bm{w}}{minmize}\frac{1}{2}\|\bm{w}-\bm{v}\|_2^2\ s.t.\sum_{i=1}^mw_i=z,w_i\geq0 wminmize21∥w−v∥22 s.t.i=1∑mwi=z,wi≥0
其中 w \bm{w} w和 v \bm{v} v均为向量。
解决方法如下:
step1
构造拉格朗日函数
L
(
w
,
δ
)
=
1
2
∥
w
−
v
∥
2
2
+
θ
(
∑
i
=
1
n
w
i
−
z
)
−
δ
⋅
w
,
s
.
t
.
δ
i
≥
0
L(w,\delta)=\frac{1}{2}\|\bm{w}-\bm{v}\|^2_2+\theta(\sum_{i=1}^nw_i-z)-\bm{\delta}\cdot\bm{w},s.t. \ \delta_i\geq0
L(w,δ)=21∥w−v∥22+θ(i=1∑nwi−z)−δ⋅w,s.t. δi≥0
step2
关于
w
i
w_i
wi求偏导,令导数为0,可以得到
w
i
w_i
wi的计算式:
w
i
=
v
i
−
θ
+
δ
i
w_i=v_i-\theta+\delta_i
wi=vi−θ+δi
同时根据KKT方程可以得知,若
w
i
>
0
w_i>0
wi>0则必有
δ
i
=
0
\delta_i=0
δi=0;
所以若
w
i
>
0
w_i>0
wi>0,则
w
i
=
v
i
−
θ
w_i=v_i-\theta
wi=vi−θ。
step3
引入一个定理:
定理1:对于最开始的优化问题,若
w
\bm{w}
w是最优解向量,那么对任意的下标
i
,
j
i,j
i,j若满足
v
i
>
v
j
v_i>v_j
vi>vj,那么若
w
i
=
0
w_i=0
wi=0则
w
j
=
0
w_j=0
wj=0。(论文中所给的定理)
由这个定理可以得出一种方法:若将
v
\bm{v}
v按照从大到小的形式重新排列,并且
w
\bm{w}
w根据
v
\bm{v}
v的重排进行相应的重排,那么可以知道若
w
i
=
0
w_i=0
wi=0,则
i
i
i下标以后的所有值均为0。设重排后的向量为
w
(
1
)
w^{(1)}
w(1)和
v
(
1
)
v^{(1)}
v(1)代入等式约束中可以求出
θ
\theta
θ的值,即由
∑
i
=
1
n
w
i
(
1
)
=
∑
i
=
1
ρ
w
i
(
1
)
=
z
\sum_{i=1}^n w^{(1)}_i=\sum_{i=1}^\rho w^{(1)}_i=z
∑i=1nwi(1)=∑i=1ρwi(1)=z可得到
θ
=
1
ρ
(
∑
i
=
1
ρ
v
i
(
1
)
−
z
)
\theta=\frac{1}{\rho}(\sum_{i=1}^{\rho} v^{(1)}_{i}-z)
θ=ρ1(∑i=1ρvi(1)−z),其中
ρ
\rho
ρ为重排后
w
\bm{w}
w中大于0的元素的个数,即最后一个大于0的元素对应的下标。
而得到
θ
\theta
θ后可以得到
w
i
=
m
a
x
{
v
i
−
θ
,
0
}
w_i=max\{v_i-\theta,0\}
wi=max{vi−θ,0}。
step4
接下来需要确定一个最优的
ρ
\rho
ρ,方法一是
ρ
\rho
ρ从1到n进行枚举,可以认为是一个
O
(
n
2
)
O(n^2)
O(n2)的复杂度。
方法二给出第二个定理:
定理二:若
w
\bm{w}
w为最优解向量,那么可以得到
ρ
\rho
ρ的计算式为:
ρ
(
z
,
μ
)
=
m
a
x
{
j
∈
[
n
]
:
v
j
(
1
)
−
1
j
(
∑
r
=
1
j
v
r
(
1
)
−
z
)
>
0
}
\rho(z,\mu)=max\{j\in[n]:v^{(1)}_j-\frac{1}{j}(\sum_{r=1}^jv^{(1)}_r-z)>0\}
ρ(z,μ)=max{j∈[n]:vj(1)−j1(r=1∑jvr(1)−z)>0}
根据定理二的式子可以得出求
ρ
\rho
ρ可以采用二分的方法,这样复杂度可以降到
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)。
因而整理下所有的思路为:
输入:向量
v
\bm{v}
v和值
z
>
0
z>0
z>0。
- 首先将向量 v \bm{v} v降序排列为 v ( 1 ) \bm{v}^{(1)} v(1): v 1 ( 1 ) > = v 2 ( 1 ) > = ⋯ > = v n ( 1 ) v^{(1)}_1>=v^{(1)}_2>=\cdots>=v^{(1)}_n v1(1)>=v2(1)>=⋯>=vn(1)。
- 二分寻找 ρ ( z , μ ) = m a x { j ∈ [ n ] : v j ( 1 ) − 1 j ( ∑ r = 1 j v r ( 1 ) − z ) > 0 } \rho(z,\mu)=max\{j\in[n]:v^{(1)}_j-\frac{1}{j}(\sum_{r=1}^jv^{(1)}_r-z)>0\} ρ(z,μ)=max{j∈[n]:vj(1)−j1(∑r=1jvr(1)−z)>0}。
- 计算 θ = 1 ρ ( ∑ i = 1 ρ v i ( 1 ) − z ) \theta=\frac{1}{\rho}(\sum_{i=1}^{ \rho}v^{(1)}_i-z) θ=ρ1(∑i=1ρvi(1)−z)。
- 得到输出: w i = m a x { v i − θ , 0 } w_i=max\{v_i-\theta,0\} wi=max{vi−θ,0}。