Proximal Algorithm 入门
这里作为我的博客备份,因为markdown解析各家标准并不能做到完全一致,特别是针对一些数学公式,如有排版问题,请访问原文Proximal Algorithm 入门 获得更好的排版体验
正则化是机器学习方法实践中用于避免overfitting的主要方法,给优化目标加上基于L1、L2的正则项是常用的正则化方法。之前自己在实现一些机器学习方法时一直是使用L2的方法,因为L2正则项有连续可微的性质,在求导时特别方便,而基于L1的正则项(lasso)并不是处处连续的,因此在优化时有一定的难度。
虽然L1解起来有一定的难度,但是它的好处也比较明显,L1能够产生稀疏解(sparsity),而通常稀疏解的泛化能力会比较好,之前也听说过Proximal Algorithm是求解L1的很好的方法,粗看了一次也没能搞懂,后面就偷懒一直没有去学习这个方法,前段时间有机会参加CCF-ADL70的学习班,听了James Kwok的报告,讲的非常清楚,收获颇丰,Proximal Algorithm方法也在报告的内容之中,查阅一些文献总结一些粗浅认识,成了此文。
为什么L1能够产生稀疏解
为了追求更好的模型效果,往往使用更复杂的模型,模型的维度都是非常大的,非常容易造成过拟合(overfitting)的现象,实践中发现使用L1可以产生稀疏解,而稀疏解的模型不容易过拟合,泛化能力更好。
那么为什么使用L1就可以产生稀疏的解,而使用L2就不会呢,可以看下面一个小例子:
minz∈RL=λ|z|+γ2(z−x)2
当\(z>0\)时有:
∂L∂z=λ+γ(z−x)=0
z=x−λγ(z>0)
当\(z<0\)时有:
∂L∂z=−λ+γ(z−x)
z=x+λγ