何为正则化
正则化就是给模型加上的一个“项”,我们先来看一个图
对于这么一个模型,它在训练数据集上取得的成绩很好,但是有一个问题存在,模型太过于复杂了,往往这样的一个模型将它放在实际问题当中发挥的效果不会很好,方差过大不稳定,这就导致过拟合的现象发生,于是我们引入正则项,对模型加以限制,对复杂模型进行惩罚,因此又叫惩罚项*
这里的R就是我们需要引入的正则化项,我们在计算损失函数添加正则化项可以有效的避免过拟合的风险
L1、L2正则化
L1正则化项的形式为
L2正则化的形式为
L(θ)是原始的损失函数,∂∑|w|是L1正则化项,∂是正则化系数。L1正则化项是带有绝对值符号的函数,因此加了L1正则化项的损失函数是不完全可微的。当我们在原始损失函数L后添加L1正则化项后,相当于对L(θ)做了一个约束。令R=∂∑|w|,则J=L+R,我们知道梯度下降算法的目的是使损失函数最小化,那么我们的任务变成在R约束下求出L取最小值的解。假设在二维的情况,即只有两个权值w1和w2,此时R=|w1|+|w2|。损失函数的梯度等值线如图1中的实线等高椭圆所示,梯度的最小值为其中心点,如果没有加任何限制项,则模型学习过程就是每次沿着梯度等高线垂直的方向寻找极值点。
图1
上图中L与R在R的一个顶点处(0,w2)相交,这个顶点就是损失函数J的最优解。可以直观想象,因为L函数有很多“突出的角”(二维情况下四个,多维情况下更多),L与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型。
Tip: L1正则的另一种用途
L1正则除了防止过拟合还有一个好处可以用来挑选特征,what!挑选特征?没错,因为L1正则可以更容易的得到稀疏矩阵,权值为0,相当于剔除对于模型贡献不大的特征,减少了模型训练的压力,
同L1的道理,求解带L2正则的损失函数
正则化前面的系数∂,可以控制 R图形的大小。∂过小,R的半径则很大,就越容易达到损失函数的最小值(中心点),会发生过拟合现象;∂过大,R的半径则很小,即对模型参数惩罚过重,模型的能力也就越弱,会发生欠拟合现象。
值得一提的是:参数w越小,模型越平滑(泛化能力越强),以至于当数据偏移时数据y值不会发生剧烈的偏移