机器学习 正则化l1怎么用_机器学习 | 正则化之L1与L2

正则化:把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提高泛化能力。

损失函数由原来的E(X,Y)变为E(X,Y)+alpha||w||,w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),||·||一般是L1或者L2范数,alpha是一个可调的参数,控制着正则化的强度。

当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge。

e7a997ca23ce06743c91c0f6ddeaa7ad.png

L1正则化/Lasso

aae079000115afdd8f7c55eb9bea2942.png为什么具有稀疏性?

L1正则化将系数向量的的L1范数作为惩罚项加到损失函数上,由于正则项非零,这就迫使那些弱的特征所对应的系数变成0。因此L1正则化往往会使学到的模型很稀疏(系数w经常为0),这个特性使得L1正则化成为一种很好的特征选择方法。

33921aa76487be1db6fe13f15ee34c69.png

上图中的模型是线性回归,有两个特征,要优化的参数分别是w1和w2,蓝色线就是优化过程中遇到的等高线,一圈代表一个目标函数值,圆心就是样本观测值(假设一个样本),半径就是误差值,受限条件就是红色边界(就是正则化那部分),二者相交处,才是最优参数。可见右边的最优参数只可能在坐标轴上,所以就会出现0权重参数,使得模型稀疏。

另一个角度——L1正则化本身的导数性质

这个角度从权值的更新公式来看权值的收敛结果。

首先来看看L1和L2的梯度(导数的反方向):

d028dc57c89eb06411233a5bc5f1663d.png

所以(不失一般性,我们假定:wi等于不为0的某个正的浮点数,学习速率η为0.5):

L1的权值更新公式为:

wi = wi - η * 1 = wi - 0.5 * 1

492f5561de6829ba1031b28fddeae1b2.png权值每次更新都固定减少一个特定的值(比如0.5),那么经过若干次迭代之后,权值就有可能减少到0。

L2的权值更新公式为:

wi = wi - η * wi = wi - 0.5 * wi

492f5561de6829ba1031b28fddeae1b2.png权值每次都等于上一次的1/2,那么,虽然权值不断变小,但是因为每次都等于上一次的一半,所以很快会收敛到较小的值但不为0。

L2正则化/Ridge regression

aae079000115afdd8f7c55eb9bea2942.png为什么L2得到的系数更平滑?

L2正则化将系数向量的L2范数添加到了损失函数中。由于L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差异,最明显的一点就是,L2正则化会让系数的取值变得平均对于关联特征,这意味着他们能够获得更相近的对应系数。还是以Y=X1+X2为例,假设X1和X2具有很强的关联,如果用L1正则化,不论学到的模型是Y=X1+X2还是Y=2X1,惩罚都是一样的,都是2*alpha但是对于L2来说,第一个模型的惩罚项是2alpha,但第二个模型的是4*alpha。可以看出,系数之和为常数时,各系数相等时惩罚是最小的,所以才有了L2会让各个系数趋于相同的特点。

0fdc19758e3392d036d7c5a8b51ff097.png

94bdc20a8bb63a72e7e4ca0db165383a.png再次说明稀疏性

想象现在只有两个参数 theta1 theta2 要学, 蓝色的圆心是误差最小的地方, 而每条蓝线上的误差都是一样的. 正则化的方程是在黄线上产生的额外误差(也能理解为惩罚度), 所以在蓝线和黄线交点上的点能让两个误差的合最小. 这就是 theta1 和 theta2 正则化后的解。要提到另外一点是, 使用 L1 的方法, 我们很可能得到的结果是只有 theta1 的特征被保留, 所以很多人也用 L1 正则化来挑选对结果贡献最大的重要特征.

aae079000115afdd8f7c55eb9bea2942.png为什么L1的解不稳定?

L1 的解并不是稳定的. 比如用批数据训练, 每次批数据都会有稍稍不同的误差曲线:

7fddf948a0e9ea22cbe54f1ae52d5b9f.png

可以看出,L2正则化对于特征选择来说一种稳定的模型,不像L1正则化那样,系数会因为细微的数据变化而波动。批数据训练时,每次每批数据都会有不同的误差曲线。针对不同误差曲线,L1的解可能会有变化。L2不怎么变化。

回过头来看看3个互相关联的特征的例子,分别以10个不同的种子随机初始化运行10次,来观察L1和L2正则化的稳定性。

49868034e6eb152054639d7138345672.png

通过实例可以看出,不同的数据上线性回归得到的模型(系数)相差甚远,但对于L2正则化模型来说,结果中的系数非常的稳定,差别较小,都比较接近于1,能够反映出数据的内在结构

为什么正则化可以防止过拟合

正则化限制了参数的大小,可以使得参数变小或变为0,但是为什么w“变小”可以防止overfitting?

一个所谓“显而易见”的解释就是:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。

过拟合的时候,拟合函数的系数往往非常大,为什么?

过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

L1和L2损失

79da8fad127fe716eefae784077ff64c.png

MSE对误差取了平方,如果存在异常值,那么这个MSE就很大。

MAE更新的梯度始终相同,即使对于很小的值,梯度也很大,可以使用变化的学习率。MSE就好很多,使用固定的学习率也能有效收敛。

总而言之,处理异常点时,L1损失函数更稳定,但它的导数不连续,因此求解效率较低。L2损失函数对异常点更敏感,但通过令其导数为0,可以得到更稳定的封闭解。


cce121b92239d35b2eff7c8549f9dc08.png欢迎转发,评论,喜欢~

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页