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

本文探讨了L2和L1正则化如何改变损失函数中的最优x值。L2使最优x保持非零,而L1在适当条件下可能导致零值稀疏。通过实例和导数分析,揭示了两者对参数稀疏性和极值点的不同影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设损失函数L和某个参数 x 的关系如图所示:

在这里插入图片描述

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

现在使用 L2 正则化,新的损失函数 L+Cx2L+Cx^2L+Cx2 如图中蓝色线所示:(加了一个大于等于0的数字,图像变化)

在这里插入图片描述

最优的 x 点在黄色处,但 x 非零。

f(x)=L+Cx2f′(x)=L′+2Cxf′(x)=0f(x) = L+C x^2 \\ f'(x) = L' + 2Cx \\ f'(x)=0f(x)=L+Cx2f(x)=L+2Cxf(x)=0

当导数等于0的时候,因为 L′L'L在x等于0时不等于0,因此x等于0时导数方向不变,即最优点不是0。

而如果使用L1正则化,则新的损失函数 L+C∣x∣L+C|x|L+Cx ,图像如下

在这里插入图片描述

f(x)=L+C∣x∣f′(x)={L′−C,x<0L′+C,x>0.f′(x)=0f(x) = L+C|x| \\ f'(x) = \begin{cases} L'-C,x<0 \\L'+C,x>0 \end{cases}. \\ f'(x)=0f(x)=L+Cxf(x)={LC,x<0L+C,x>0.f(x)=0

导数为0的时候,可知函数在x=0的两段导函数不同,即有可能存在导函数不同号的情况,即x=0的点是个极值点。

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

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

参考

https://www.zhihu.com/question/37096933

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值