L1正则化解决模型过拟合问题

什么是L1正则化

在机器学习任务中,对于一个参数模型,优化参数时一定伴随着损失函数的建立与优化。

通常不加入L1正则化的损失函数为
JL1(w)=L(w) J_{L1}(w) = L(w)
加入L1正则化的损失函数为
JL1(w)=L(w)+λw J_{L1}(w) = L(w) + \lambda|w|
所以L1正则化就是在原来损失函数的基础上,再加上模型参数的权重绝对值即可。通常L1正则也叫 lasso回归
(其中等号右边的前半部分称为经验风险,后半部分称为结构风险,有兴趣了解的也可以自行查阅相应资料)。



L1正则化防止过拟合的原理

为什么新的损失函数可以防止模型的过拟合呢?

我们经常在一些文章或者博客中看到L1防止过拟合的方式是因为L1正则化有特征选择的作用,容易产生稀疏解,即可以使得重要特征的参数不为0,而使得一些不重要特征的参数变为0将其抛弃掉。

那么究竟为什么L1具有特征选择的作用,是如何将不重要特征的参数学习的结果为0的呢?

我们在优化更新参数w的时候,一般需要对损失函数求解一阶导数,对原始损失函数求解在w=0处的一阶导数为:
δLδw=d0 \frac{\delta L}{\delta w} = d_{0}
则引入L1正则项后,求解w=0的一阶导数为:
δJL1(w)δww=0=d0λ \frac{\delta J_{L1}(w)}{\delta w} |_{w=0^-}= d_{0} - \lambda
δJL1(w)δww=0+=d0+λ \frac{\delta J_{L1}(w)}{\delta w} |_{w=0^+}= d_{0} + \lambda

可见引入L1正则后,在0处的导数有一个突变,从d0−λ变到d0+λ

d0−λd0+λ异号,则在0处会是一个极小值点,因此,参数优化时很有可能优化到该极小值点上,即w=0处。当有多个参数时也是类似的情况,因此用L1正则化容易产生稀疏解。

上面我们知道L1正则化可以通过让模型学习更多稀疏解,而使得更多的参数变为0,当一个模型中有很多0值参数时,其模型复杂度会变得更小,从而给予模型防止过拟合的能力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章