L1相较于L2的稀疏性

来源:互联网 发布:c语言取反运算 编辑:程序博客网 时间:2024/04/28 10:39

L1相较于L2的稀疏性

在机器学习中,常见的正则化项有L1(L=|w|)和L2(L=||w||2),并且也经常会看到L1相较于L2有较高的稀疏性,虽然记住了这句话的内容,但总是不理解其具体含义,也不理解为何又稀疏性,在研究了一番后,有了一些理解,因此分享给大家。
(本文部分内容和图片引用自:https://www.zhihu.com/question/37096933?sort=created)

什么是稀疏性

相信大家都听过一个名词——稀疏矩阵,在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵.
在矩阵中,如果矩阵元素0的数目非常多,则可以称之为稀疏矩阵。同理,L1的稀疏性,指的就是在加了L1正则项后,模型的解w,有很多分量都是0。

为何L1相较于L2能够得到稀疏解

首先,用几张图片来大致解释一下L1的稀疏性。
假设,我们有个Loss函数,L0=f(w),其特征是一维,大致的loss曲线如下图:
图1
可以发现极小值是在图中的绿色点处,w=0处并不是最优解。

在分别加了L1正则项和L2正则项后,他们的曲线图如下:
图2
其中蓝色的是加了L2正则项的loss曲线(L2=f(w)+ηw2),粉红色的是加了L1正则项的loss曲线(L1=f(w)+η|w|)。
观察图中曲线可以发现,加了L2正则项后,极小值处的解变小了,这说明正则项起到了效果,但是最优解是接近0但不等于0的值,因此不是稀疏解。而加了L1正则项后,极小值的解变为了0,因此L1相较于L2具有稀疏性。

事实上,两种正则化能不能把最优的w变成 0,取决于原先的loss函数在 0 点处的导数。如果本来导数不为 0,那么施加 L2 后导数依然不为 0,最优的 w 也不会变成 0。而施加 L1 时,只要 L1 项的系数 η 大于原先loss函数在 0 点处的导数的绝对值,w = 0 就会变成一个极小值点。

那么为何只要η大于loss的导数的绝对值,0就是一个极小值点呢?
下面从理论的角度来分析一下:
对于L1=f(w)+η|w|也即是L1=L0+η|w|求导可以得到如下:

L1w=L0w+ηsign(w)=L0w+η,w>0L0wη,w<0

w>0时,只要L0w+η>0,则函数单调递增,因此在w=0处最小。
w<0时,只要L0wη<0,则函数单调递减,因此在w=0处最小。
故,只要η 大于原先loss函数在 0 点处的导数的绝对值,那么w=0处就是一个极小值点。

原创粉丝点击