首先我们先说明下L1和L2正则化的公式。
L1正则化公式:
C = C 0 + λ n ∑ w ∣ w ∣ C=C_{0}+\frac{\lambda}{n} \sum_{w}|w| C=C0+nλw∑∣w∣
L2正则化公式:
C = C 0 + λ 2 n ∑ w w 2 C=C_{0}+\frac{\lambda}{2 n} \sum_{w} w^{2} C=C0+2nλw∑w2
C0代表原始的代价函数
首先先说一下他们的相同点,就是都可以防止过拟合。那么什么是过拟合呢?我们先用一张图来简单描述下。
上面这张图就很很好的展现了数据呈现过拟合的例子,为了学习到每一个数据的分布,最终形成的拟合函数的波动非常大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
而正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。
L1正则化
先看下L1正则化是如何解决这个问题的。
C = C 0 + λ n ∑ w ∣ w ∣ C=C_{0}+\frac{\lambda}{n} \sum_{w}|w| C=C0+nλw∑∣w∣
首先我们对L1公式参数进行求导:
∂ C ∂ w = ∂ C 0 ∂ w + λ n sgn ( w ) \frac{\partial C}{\partial w}=\frac{\partial C_{0}}{\partial w}+\frac{\lambda}{n} \operatorname{sgn}(w) ∂w∂C=∂w∂C0+nλsgn(w)
上式中sgn(w)表示w的符号。那么权重w的更新规则为:
w → w ′ = w − η λ n sgn ( w ) − η ∂ C 0 ∂ w w \rightarrow w^{\prime}=w-\frac{\eta \lambda}{n} \operatorname{sgn}(w)-\eta \frac{\partial C_{0}}{\partial w} w→w′=w−nηλsgn(w)−η∂w∂C0
比原始的更新规则多出了 η λ n sgn ( w ) \frac{\eta \lambda}{n} \operatorname{sgn}(w) nηλsgn(w)这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠近,使网络中的权重尽可能为0,也就相当于减小了网络复杂度(减小了参数的波动),防止过拟合。
当我们只考虑二维的情况下,即只有两个权值 w 1 w_{1} w1和 w 2 w_{2} w2.此时我们可以将L1正则化和损失函数
在二维平面上画下来。
我们设 J 0 J_{0} J0是损失函数, L L L为L1正则化函数。图中等值线是 J 0 J_{0} J0的等值线,黑色方形是 L L L函数的图形。在图中,当 J 0 J_{0} J0等值线与 L L L图形首次相交的地方就是最优解。上图中 J 0 J_{0} J0与 L L L的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w),可以直观想象,因为 L L L函数有很多『突出的角』(二维情况下四个,多维情况下更多), J 0 J_0 J0与这些角接触的机率会远大于与 L L L其它部位接触的机率,所以在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。
而正则化前面的系数 λ / n {\lambda}/{n} λ/n,可以控制 L L L图形的大小。 λ / n {\lambda}/{n} λ/n越小, L L L的图形越大(上图中的黑色方框); λ / n {\lambda}/{n} λ/n越大, L L L的图形就越小,可以小到黑色方框只超出原点范围一点点,这是最优点的值(w1,w2)=(0,w)中的 w w w可以取到很小的值。
L2正则化
那么L2正则化是如何解决这个问题的。
C = C 0 + λ 2 n ∑ w w 2 C=C_{0}+\frac{\lambda}{2 n} \sum_{w} w^{2} C=C0+2nλw∑w2
先对L2进行参数求导:
可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响:
w → w − η ∂ C 0 ∂ w − η λ n w = ( 1 − η λ n ) w − η ∂ C 0 ∂ w \begin{aligned} w & \rightarrow w-\eta \frac{\partial C_{0}}{\partial w}-\frac{\eta \lambda}{n} w \\ &=\left(1-\frac{\eta \lambda}{n}\right) w-\eta \frac{\partial C_{0}}{\partial w} \end{aligned} w→w−η∂w∂C0−nηλw=(1−nηλ)w−η∂w∂C0
在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1−ηλ/n ,因为η、λ、n都是正的,所以 ( 1 − η λ n ) \left(1-\frac{\eta \lambda}{n}\right) (1−nηλ)小于1,它的效果是减小 w w w,这也就是权重衰减(weight decay)的由来。
也是从图像来解释下。
二维平面下 L 2 L2 L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此 J 0 J_0 J0与 L L L相交时使得 w 1 w_{1} w1或 w 2 w_2 w2 等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。
L1正则化和L2正则化的区别
相同点上面已经说过了,都可以用于缓解过拟合。
不同点:
- L1可以让一部分特征的系数缩小到0,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。
- L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况
参考文献
1.机器学习中正则化项L1和L2的直观理解
2.L1和L2正则化区别
3.正则化为什么可以防止过拟合