何为正则化
正则化就是给模型加上的一个“项”,我们先来看一个图
对于这么一个模型,它在训练数据集上取得的成绩很好,但是有一个问题存在,模型太过于复杂了,往往这样的一个模型将它放在实际问题当中发挥的效果不会很好,方差过大不稳定,这就导致过拟合的现象发生,于是我们引入正则项,对模型加以限制,对复杂模型进行惩罚,因此又叫惩罚项*
这里的R就是我们需要引入的正则化项,我们在计算损失函数添加正则化项可以有效的避免过拟合的风险
L1、L2正则化
L1正则化项的形式为
R
(
θ
)
=
∂
Σ
∣
w
∣
R(θ) = ∂Σ|w|
R(θ)=∂Σ∣w∣
通
过
对
我
们
的
参
数
w
取
绝
对
值
通过对我们的参数w取绝对值
通过对我们的参数w取绝对值
L2正则化的形式为
R
(
θ
)
=
∂
w
2
R(θ) = ∂w^2
R(θ)=∂w2
通
过
对
我
们
的
w
取
平
方
通过对我们的w取平方
通过对我们的w取平方
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正则的损失函数
J
=
L
+
R
J = L + R
J=L+R
假
定
在
二
维
情
况
下
时
,
R
=
w
0
2
+
w
1
2
假定在二维情况下时,R =w_0^2+w_1^2
假定在二维情况下时,R=w02+w12
正则化前面的系数∂
,可以控制 R
图形的大小。∂
过小,R
的半径则很大,就越容易达到损失函数的最小值(中心点),会发生过拟合现象;∂
过大,R
的半径则很小,即对模型参数惩罚过重,模型的能力也就越弱,会发生欠拟合现象。
值得一提的是:参数w越小,模型越平滑(泛化能力越强),以至于当数据偏移时数据y值不会发生剧烈的偏移