机器学习 l1 相比于 l2 为什么容易获得稀疏解?

此部分博客是我在知乎上摘录下来的,感谢知乎大神的用心回答。

一、通俗易懂的解释

 

作者:王赟 Maigo
链接:https://www.zhihu.com/question/37096933/answer/70426653
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

假设费用函数 L 与某个参数 x 的关系如图所示:

preview


则最优的 x 在绿点处,x 非零。

 

现在施加 L2 regularization,新的费用函数(L + Cx^2)如图中蓝线所示:

最优的 x 在黄点处,x 的绝对值减小了,但依然非零。

 

而如果施加 L1 regularization,则新的费用函数(L + C|x|)如图中粉线所示:

最优的 x 就变成了 0。这里利用的就是绝对值函数的尖峰。

 

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

上面只分析了一个参数 x。事实上 L1 regularization 会使得许多参数的最优值变成 0,这样模型就稀疏了。

 

二、公式化的一般解释(这部分也是参考的知乎上的,作者十方)

 

设原先的损失函数是C0,那么在L0和L1条件下的损失函数对参数w求导得到:

另外,下面的也是来自知乎:

首先你要知道L1范式和L2范式是怎么来的,然后是为什么要把L1或者L2正则项加到代价函数中去.
L1,L2范式来自于对数据的先验知识.如果你认为,你现有的数据来自于高斯分布,那么就应该在代价函数中加入数据先验P(x),一般由于推导和计算方便会加入对数似然,也就是log(P(x)),然后再去优化,这样最终的结果是,由于你的模型参数考虑了数据先验,模型效果当然就更好.
哦对了,如果你去看看高斯分布的概率密度函数P(x),你会发现取对数后的log(P(x))就剩下一个平方项了,这就是L2范式的由来--高斯先验.
同样,如果你认为你的数据是稀疏的,不妨就认为它来自某种laplace分布.不知你是否见过laplace分布的概率密度函数,我贴出一张维基上的图,

laplace分布是尖尖的分布,是不是很像一个pulse?从这张图上,你应该就能看出,服从laplace分布的数据就是稀疏的了(只有很小的概率有值,大部分概率值都很小或为0).
那么,加入了laplace先验作为正则项的代价函数是什么?
再看看laplace分布的概率密度函数(还是来自维基百科),

看到没,如果取对数,剩下的是一个一次项|x-u|,这就是L1范式.
所以用L1范式去正则,就假定了你的数据是laplace分布,是稀疏的.

作者:amnesia
链接:https://www.zhihu.com/question/37096933/answer/70668476
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值