L1正则化求导问题
在实现机器学习算法时,最常用的是L2正则化,因为L2正则化有连续可微的性质,易求导。但L1能产生稀疏解,而且稀疏解的泛化能力会比较好,不过由于L1正则化并不是处处连续的,所以优化的时候会有一定难度。
对于目标函数不是连续可微的情况,可以用次梯度来进行优化,但次梯度存在两个问题:
次梯度定义:次梯度,次导数
此时可以用 Proximal Algorithm 对L1进行求解。
Proximal Algorithm
定义如下:
设 f:Rn→R∪{+∞} 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={x∈Rn|f(x)<+∞} d o m f = { x ∈ R n | f ( x ) < + ∞ }
即,
f f 的取值范围为有限个的一组点。
上镜图(epigraph)意为在函数图像之上。一个用途是用来联系凸集合凸函数的。即,一个函数为凸函数,当且仅当其上镜图是凸集。
proximal operator Prox f:Rn→Rn f : R n → R n 的定义:
proxf(v)=argminx(f(x)+12‖x−v‖22) p r o x f ( v ) = arg min x ( f ( x ) + 1 2 ‖ x − v ‖ 2 2 )
或者 或 者
proxλf(v)=argminx(f(x)+12λ‖x−v‖22) 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 ) ,如图:
图片来自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:
- Gradient Step 定义 vt v t 是沿着 f(x) f ( x ) 梯度方向找到的一个点:
vt=xt−γ▽f(xt) v t = x t − γ ▽ f ( x t )
- 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
- z=proxλϕ(vt) z = p r o x λ ϕ ( v t )
- break if f(z)⩽f(vt)+▽fT(vt)(v2−z)+12λ‖vt−z‖2 f ( z ) ⩽ f ( v t ) + ▽ f T ( v t ) ( v 2 − z ) + 1 2 λ ‖ v t − z ‖ 2
- λ=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)+(x−x0)T▽f(x0)+12γ‖x−x0‖2+ϕ(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)+(x−x0)T▽f(x0)+12γ‖x−x0‖2+ϕ(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 入门