L1正则化求导问题

L1正则化求导问题

在实现机器学习算法时,最常用的是L2正则化,因为L2正则化有连续可微的性质,易求导。但L1能产生稀疏解,而且稀疏解的泛化能力会比较好,不过由于L1正则化并不是处处连续的,所以优化的时候会有一定难度。
对于目标函数不是连续可微的情况,可以用次梯度来进行优化,但次梯度存在两个问题:

  • 求解慢
  • 通常不会产生稀疏解

次梯度定义:次梯度,次导数

此时可以用 Proximal Algorithm 对L1进行求解。

Proximal Algorithm

定义如下:
f:RnR{+} f : R n → R ∪ { + ∞ } 为凸函数,那么凸函数的 上镜图(epigraph) 定义为:

epi f={(x,t)Rn×R|f(x)<+} e p i   f = { ( x , t ) ∈ R n × R | f ( x ) < + ∞ }

是非空的闭凸集,其 effective domain
dom f={xRn|f(x)<+} d o m   f = { x ∈ R n | f ( x ) < + ∞ }

即, f f 的取值范围为有限个的一组点。

上镜图(epigraph)意为在函数图像之上。一个用途是用来联系凸集合凸函数的。即,一个函数为凸函数,当且仅当其上镜图是凸集。

proximal operator Prox f:RnRn f : R n → R n 的定义:

proxf(v)=argminx(f(x)+12xv22) p r o x f ( v ) = arg ⁡ min x ( f ( x ) + 1 2 ‖ x − v ‖ 2 2 )

或 者

proxλf(v)=argminx(f(x)+12λxv22) p r o x λ f ( v ) = arg ⁡ min x ( f ( x ) + 1 2 λ ‖ x − v ‖ 2 2 )

其中 2 ‖ ⋅ ‖ 2 为欧几里得范数, λ λ 视为参数即可(scaled function)。
由此可知, proximal operator 公式是在寻找一个距离点 v v 附近的点 x x ,使得 f(x) f ( x ) 尽可能小,并且 f(x)<=f(v) f ( x ) <= f ( v ) ,如图:
L1正则化求导问题_第1张图片

图片来自Proximal Algorithms By N. Parikh and S. Boyd

其中粗的黑线表示为作用域,细黑线表示函数f的等高线,蓝色的点是 v v ,红点是 x x 。函数域中的三点停留在域内,向函数的最小值移动,另外两点移动到域的边界,并朝函数的最小值移动。 参数 λ λ 控制 proximal operator 映射指向 f f 的最小值的程度,其中 λ λ 的较大值与最小值附近的映射点相关联,较小的值给出向最小值的较小移动。
假设目标函数为

y=f(x)+ϕ(x) y = f ( x ) + ϕ ( x )
其中 f(x) f ( x ) 连续可微, ϕ(x) ϕ ( x ) 不连续(比如L1正则化),这类目标函数在机器学习算法中很常见。迭代优化步骤如下:

  • repeat 直到收敛或达到最大迭代次数
    • for t = 1, 2, …, n:
      1. Gradient Step 定义 vt v t 是沿着 f(x) f ( x ) 梯度方向找到的一个点:
        vt=xtγf(xt) v t = x t − γ ▽ f ( x t )
      2. Proximal Operator Step 使用 proxλf(x) p r o x λ f ( x ) 优化 ϕ(x) ϕ ( x )
        xt+1=proxλϕ(vt) x t + 1 = p r o x λ ϕ ( v t )

proximal 算法中要求 f(x) ▽ f ( x ) 满足 lipschitz 条件其系数为 L L ,所以参数 λ λ 的取值范围为 λ(0,1L) λ ∈ ( 0 , 1 L ) ,若 L L 未知,可以使用line search:

  • repeat
    1. z=proxλϕ(vt) z = p r o x λ ϕ ( v t )
    2. break if f(z)f(vt)+fT(vt)(v2z)+12λvtz2 f ( z ) ⩽ f ( v t ) + ▽ f T ( v t ) ( v 2 − z ) + 1 2 λ ‖ v t − z ‖ 2
    3. λ=12λ λ = 1 2 λ
  • return xt+1=z x t + 1 = z

Proximal Algorithm和SGD

SGD 是把目标函数进行一阶泰勒展开,Proximal Algorithm 也是同样的,只不过Proximal Aglorithm 更为严格,要求目标函数 y(x)=f(x)+ϕ(x) y ( x ) = f ( x ) + ϕ ( x ) ,其中 f(x) ▽ f ( x ) 满足 Lipschitz continuity,有:

y(x)=f(x)+ϕ(x)f(x0)+(xx0)Tf(x0)+12γxx02+ϕ(x) y ( x ) = f ( x ) + ϕ ( x ) ⩽ f ( x 0 ) + ( x − x 0 ) T ▽ f ( x 0 ) + 1 2 γ ‖ x − x 0 ‖ 2 + ϕ ( x )

where γ(0,1L) w h e r e   γ ∈ ( 0 , 1 L )

寻找可以使 y(x) y ( x ) 最小化的 x x ,因为直接求解 y(x) y ( x ) 不容易求解,所以转为求使得 y(x) y ( x ) 上确界的最小的 x x ,即

x=argminxf(x0)+(xx0)Tf(x0)+12γxx02+ϕ(x) x = arg ⁡ min x ⁡ f ( x 0 ) + ( x − x 0 ) T ▽ f ( x 0 ) + 1 2 γ ‖ x − x 0 ‖ 2 + ϕ ( x )

凑方并增减常数项,得:

x=argminx(f(x)+12γxμ2) x = arg ⁡ min x ⁡ ( f ( x ) + 1 2 γ ‖ x − μ ‖ 2 )

where μ=x0γϕ(x0) w h e r e   μ = x 0 − γ ▽ ϕ ( x 0 )

由此可见,Proximal Aglorithm 是在目标函数F不满足处处可微条件时,可以转而去优化目标函数的上界的自然结果。


Reference

[1] Proximal Algorithms By N. Parikh and S. Boyd
[2] Proximal Algorithm 入门

你可能感兴趣的:(机器学习)