为什么引入正则化regularization?这牵扯到一个关键问题:过拟合
当只有一次项的时候,拟合程度不够,当存在五次方项的时候就存在过拟合现象,假设函数很好的fit给定的数据,但是不利于数据的预测(泛化性不够)
如何解决过拟合?
- 减少特征值的数量
- 正则化:不改变特征值的数量,减小该特征前的系数θj\theta_jθj以削弱该特征对预测结果的影响,当我们有大量影响较小的特征的时候,正则化就很有用,换句话说,我们可以认为加入L2正则项后,估计参数长度变短了,这在数学上被称为特征缩减(shrinkage)。
给损失函数加上的正则化项可以有多种形式,正则化的一般形式:
12∑i=1N[yi−wTϕ(xi)]2+λ2∑j=11M∣wj∣q\frac{1}{2}\sum_{i=1}^N[y_i-w^T\phi(x_i)]^2+\frac{\lambda}{2}\sum_{j=1}\frac{1}{M}|w_j|^q21∑i=1N[yi−wTϕ(xi)]2+2λ∑j=1M1∣wj∣q
其中 MMM 是参数个数,也是模型维数;qqq 是正则项的阶数,L2的q=2
最小化目标函数时,可以看做在控制损失函数不变的情况时令正则项最小化,几何意义如下所示:蓝色圈表示没有限制的损失函数随着www迭代寻找着最小化的过程的E(w)E(w)E(w)函数等高线(同个圆上的损失函数值相同),蓝色圈和橙色圈之和就是目标函数值,目标函数最小化的点往往出现在蓝圈和橙圈相交的点即目标函数最小化的参数值w∗w^*w∗。
可以看到,L1正则化的最优参数值恰好是w2=0w_2=0w2=0的时候,意味着我们剔除了模型中一个特征(系数为0等价于剔除该特征),从而达到了降低模型复杂度的目的。在这个意义上L1正则化效果要优于L2正则化,但L1存在拐点不是处处可微,从而L2正则化有更好的求解特性。
L1正则化更适用于特征选择,而L2正则化更适用于防止模型过拟合。这一区别可以从梯度下降的角度入手:
首先考虑L1正则化的目标函数 J^=J+λ2M∑j=1M∣wj∣\hat J = J+\frac{\lambda}{2M}\sum_{j=1}^M|w_j|J^=J+2Mλ∑j=1M∣wj∣,进行梯度下降时,对 wkw_kwk 求偏导:
∂J^∂wk=∂J∂wk±λ2M\frac{\partial \hat J}{\partial w_k}=\frac{\partial J}{\partial w_k}\pm \frac{\lambda}{2M}∂wk∂J^=∂wk∂J±2Mλ,正负号由 wkw_kwk 的正负决定,对 wkw_kwk 进行更新:
wk=wk−α∂J∂wk±αλ2Mw_k=w_k-\alpha \frac{\partial J}{\partial w_k}\pm \alpha \frac{\lambda}{2M}wk=wk−α∂wk∂J±α2Mλ
其中前半部分是未加正则项时的梯度下降,整体就是在前者的基础上加减一个常数,在加减过程中很容易得到 wk=0w_k=0wk=0 的情况,因此L1正则化会让特征变得稀疏,起到特征选择的作用。
而L2正则化的目标函数为 J^=J+λ2M∑j=1Mwj2\hat J = J+\frac{\lambda}{2M}\sum_{j=1}^Mw_j^2J^=J+2Mλ∑j=1Mwj2,求偏导:
∂J^∂wk=∂J∂wk+λMwk\frac{\partial \hat J}{\partial w_k}=\frac{\partial J}{\partial w_k}+\frac{\lambda}{M}w_k∂wk∂J^=∂wk∂J+Mλwk,进行梯度下降:
wk=wk−α∂J∂wk−αλMwk=(1−αλM)wk−α∂J∂wkw_k=w_k-\alpha \frac{\partial J}{\partial w_k}- \alpha \frac{\lambda}{M}w_k=(1-\alpha\frac{\lambda}{M})w_k-\alpha \frac{\partial J}{\partial w_k}wk=wk−α∂wk∂J−αMλwk=(1−αMλ)wk−α∂wk∂J
可以看出每次更新时,会对特征系数进行一个比例的缩放,而不是加减一个常数,这会让系数趋向变小而不会变为 0,这会让模型变得更简单,防止过拟合,而不会起到特征选择的作用。