一种点到特定高维平面的距离的优化算法

一种点到特定高维平面的距离的优化算法


该算法来自于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 wminmize21wv22 s.t.i=1mwi=z,wi0
其中 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,δ)=21wv22+θ(i=1nwiz)δw,s.t. δi0

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=1jvr(1)z)>0}
根据定理二的式子可以得出求 ρ \rho ρ可以采用二分的方法,这样复杂度可以降到 O ( n l o g n ) O(nlogn) O(nlogn)

因而整理下所有的思路为:
输入:向量 v \bm{v} v和值 z > 0 z>0 z>0

  1. 首先将向量 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)
  2. 二分寻找 ρ ( 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}
  3. 计算 θ = 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)
  4. 得到输出: w i = m a x { v i − θ , 0 } w_i=max\{v_i-\theta,0\} wi=max{viθ,0}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值