【机器学习】L1、L2正则化
一、引言
正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时,它已经很好地学习了训练数据,甚至是训练数据中的噪声,所以可能无法在新的、未见过的数据上表现良好。
如下图的分类问题:
其中, x 1 x_1 x1和 x 2 x_2 x2为特征, f f f为拟合模型, w 1 w_1 w1和 w 2 w_2 w2为模型权重, b b b为模型偏执。左图拟合模型公式最高阶次为1,即一条直线,对应欠拟合;中图拟合模型公式最高阶次为2,即一条简单的曲线;右图拟合模型公式最高阶次为4甚至更高,即一条复杂的曲线,对应过拟合。
可以看出,欠拟合时模型未有效学习数据中的信息,错分样本很多;过拟合时模型学习过于充分,甚至连包裹在红色类中的两个明显的噪声都被学习了,训练样本不会被错分,但无法保证对没见过的测试样本进行有效划分。所以我们更希望得到中间的这种模型。
一般神经网络结构较为复杂,学习能力强,所以更容易过拟合。对比中图和右图,我们容易发现模型阶次越高,分类超平面弯曲越多,高阶项前系数越大,弯曲程度越大,所以减少过拟合其实就是要减少模型的阶次或弱化高阶项。 L1正则化和L2正则化就是减少模型复杂度的两个典型方法。
一、L1正则化
L1正则化,也称为LASSO正则化,将模型权重系数的绝对值之和添加到损失函数中。它能够将模型中某些权重置0使对应的特征不再发挥作用以达到降低模型复杂度的目的。
假设原本模型的分类损失为标准交叉熵,则加上L1正则化项后如下:
J
(
w
)
=
−
1
N
∑
i
=
1
N
y
i
log
p
i
+
λ
∑
j
=
1
M
∣
w
j
∣
J(w)=-\frac{1}{N}\sum_{i=1}^Ny_i\log p_i+\lambda\sum_{j=1}^M|w_j|
J(w)=−N1i=1∑Nyilogpi+λj=1∑M∣wj∣
其中, y i y_i yi和 p i p_i pi是样本 x i x_i xi的真实标签和预测概率, w j w_j wj为权重系数, λ \lambda λ用来平衡学习和正则化程度。
直观来看,有了后面这一项,在优化损失时, ∣ w j ∣ |w_j| ∣wj∣会一定程度的减小,从而达到弱化高阶项的作用(其实低阶项也会被弱化,但分类超平面的复杂度主要受高阶项控制)。其实,L1正则化能够达到使模型稀疏化的作用,即有些权重被置0。
我们简化上面的损失函数只有一个权重系数,写作
J
(
w
)
=
L
(
w
)
+
λ
∣
w
∣
J(w)=L(w)+\lambda|w|
J(w)=L(w)+λ∣w∣,假设
L
(
w
)
L(w)
L(w)在
w
=
0
w=0
w=0时的导数如下:
∂
L
(
w
)
∂
w
∣
w
=
0
=
d
0
\frac{\partial L(w)}{\partial w}\bigg|_{w=0}=d_0
∂w∂L(w)
w=0=d0
于是有:
∂
J
(
w
)
∂
w
∣
w
=
0
−
=
d
0
−
λ
,
∂
J
(
w
)
∂
w
∣
w
=
0
+
=
d
0
+
λ
\frac{\partial J(w)}{\partial w}\bigg|_{w=0^-}=d_0-\lambda,~\frac{\partial J(w)}{\partial w}\bigg|_{w=0^+}=d_0+\lambda
∂w∂J(w)
w=0−=d0−λ, ∂w∂J(w)
w=0+=d0+λ
如果 λ \lambda λ较大,会使损失函数的导数在 w = 0 w=0 w=0的左右两侧异号,则该点极可能是一个极小值点,在优化时,很可能将 w w w优化至 0 0 0。对于多个 w w w的情况,与之类似,但只是一部分 w w w取0即可达到极小值。部分 w w w置0,则对应的特征将不再发挥作用,从而使模型稀疏化。
综上,L1正则化能够通过使模型稀疏化达到降低模型复杂度的作用。这种稀疏化特性使它能够作为一种特征选择策略,适合在高维且特征相关性不强的场景中使用。
二、L2正则化
L2正则化,也称为 Ridge 正则化,将模型系数的平方值之和添加到损失函数中。与 L1 正则化不同,L2 正则化不会强制系数恰好为零,而是鼓励系数变小。
仍然假设原本模型的分类损失为标准交叉熵,则加上L2正则化项后如下:
J
(
w
)
=
−
1
N
∑
i
=
1
N
y
i
log
p
i
+
λ
∑
j
=
1
M
w
j
2
J(w)=-\frac{1}{N}\sum_{i=1}^Ny_i\log p_i+\lambda\sum_{j=1}^Mw^2_j
J(w)=−N1i=1∑Nyilogpi+λj=1∑Mwj2
同样地,我们简化上面的损失函数只有一个权重系数,写作
J
(
w
)
=
L
(
w
)
+
λ
w
2
J(w)=L(w)+\lambda w^2
J(w)=L(w)+λw2,假设
L
(
w
)
L(w)
L(w)在
w
=
0
w=0
w=0时的导数如下:
∂
L
(
w
)
∂
w
∣
w
=
0
=
d
0
\frac{\partial L(w)}{\partial w}\bigg|_{w=0}=d_0
∂w∂L(w)
w=0=d0
有:
∂
L
(
w
)
∂
w
∣
w
=
0
=
d
0
+
2
λ
w
∣
w
=
0
=
d
0
\frac{\partial L(w)}{\partial w}\bigg|_{w=0}=d_0+2\lambda w\big|_{w=0}=d_0
∂w∂L(w)
w=0=d0+2λw
w=0=d0
可见,L2正则化项的加入不影响 w = 0 w=0 w=0处损失函数的导数,也就不容易在 w = 0 w=0 w=0处形成极小值。相应地, w w w就不容易被优化为0。对于多个 w w w的情况,所有 w j w_j wj都不为0,却又希望损失 J ( w ) J(w) J(w)小,就会将各个 w j w_j wj优化的很小,也就使高阶项发挥的作用变小,从而降低了模型复杂度。
综上,L2正则化能够通过将各项权重系数优化的很小达到降低模型复杂度的目的。它能够减少单个特征的在模型中的作用,避免某个特征主导整个预测方向。L2正则化项是可微的,优化计算效率更高,适合处理低维且特征间具有强相关性的场景。
致谢:
本博客仅做记录使用,无任何商业用途,参考内容如下:
(强推|双字)2022吴恩达机器学习Deeplearning.ai课程
L1 和 L2 正则化解释、何时使用它们以及实际示例
原文地址:https://blog.csdn.net/beginner1207/article/details/139027559
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!