L1、L2正则化
一、什么是L1、L2正则化(Regularization)
参考文献:https://blog.****.net/jinping_shi/article/details/52433975
机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。
L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。
对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。
L1正则化是指权值向量w中各个元素的绝对值之和,通常表示为
L2正则化是指权值向量w
中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为。
L0正则化:非零参数的个数
二、正则化的作用是什么
- L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
- L2正则化产生平滑解,获得值很小的参数,可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合
1)L1、L2怎么防止过拟合的?
L1会自动地选择很少一部分变量构造模型,将一些参数变为0,也就意味着最终的近似解只依赖很少的变量。通过简化模型防止过拟合。
L2控制所有特征的权重,每个参数值都会很小。一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象
2)参数值越小代表模型越简单吗?
L2拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,专业一点的说法是『抗扰动能力强』。
3)L0正则可以做特征选择吗
从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果,具体操作时选择参数非零的特征即可。但因为L0正则化很难求解,是个NP难问题,因此一般采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。
三、为什么L1可以产生稀疏解、L2可以产生平滑解
几何角度直观理解
参考文献
https://www.zhihu.com/question/37096933?sort=created
关于上面的等价,类似于拉格朗日乘子法,把约束变成无约束。
平方误差项在等值线的中心取到最小。
等值线越往外越大。
正则化项约束了参数不能随心所欲的取,即必须满足约束,解必须在蓝色区域内,而同时要使得等值线的值尽可能小,因此,最优解一定是在等值线与边界首次相交的地方。
等值线与角接触的机率会远大于与其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型。
L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此等值线与L2等值线相交时使得w1或w2等于零的机率小了许多。
西瓜书上 p253图
凸优化角度理解
参考文献
https://www.zhihu.com/question/37096933?sort=created
是一个极小值点只要保证施加L1后处左右两边导数异号就行。原函数用表示,则施加后处左右两边导数分别是和,只要就能保证异号。
是一个极小值点,对于,需要保证费用函数在0处的导数为0。
感受两个条件的强弱,就知道为什么更容易得到稀疏解了。
先验知识角度理解
参考文献
https://www.zhihu.com/question/37096933?sort=created
L1,L2范式来自于对参数的先验知识,模型参数考虑了数据先验,模型效果当然就更好。
参数w 的分布来自于高斯分布,那么就应该在代价函数中加入数据先验P(x),一般由于推导和计算方便会加入对数似然,也就是log(P(x))。如果你去看看高斯分布的概率密度函数P(x),你会发现取对数后的log(P(x))就剩下一个平方项了,这就是L2范式的由来–高斯先验.
参数w的分布是稀疏的,不妨就认为它来自某种laplace分布.不知你是否见过laplace分布的概率密度函数,我贴出一张维基上的图,
laplace分布是尖尖的分布,是不是很像一个pulse?从这张图上,你应该就能看出,服从laplace分布的数据就是稀疏的了(只有很小的概率有值,大部分概率值都很小或为0).
再看看laplace分布的概率密度函数
如果取对数,剩下的是一个一次项|x-u|,这就是L1范式.
所以用L1范式去正则,就假定了你的参数是laplace分布,是稀疏的.