一、正则化的概念
凡是能解决模型泛化误差而不是训练误差的方法,都被称为正则化。
模型的泛化误差主要是由模型过拟合引起的,所以正则化的各种方法用于解决模型过拟合的问题。
二、避免模型过拟合——L1正则化&L2正则化
L1和L2正则化的核心思想就是限制模型参数的取值范围。 模型取值范围大同样可以训练出一个泛化能力强的模型,那为什么要限制模型参数的取值范围呢?
模型取值范围大同样可以训练出一个泛化能力强的模型,但是出现过拟合的几率也大大提升了(可以选择的范围大,自然就选了一整套相互配合起来可以让损失最小的参数,但是这些参数有可能只是在迎合训练集)。另一方面,参数取得太大会放大输入模型的样本之中的噪声,让输出结果失真。
综上所述,无论是从参数取值范围大会提高过拟合几率的角度来看,还是从参数太大会放大噪声的角度来看,参数取值范围太大都是非常不利的,所以需要对范围进行限制。
明白了L1和L2正则化的核心思想就是限制模型参数的取值范围之后,来解决下一个问题:如何减小模型参数的取值范围?
首先,理解一下L1和L2正则化中的L1和L2是什么意思。L1和L2就是L1范数和L2范数。L1范数是我们非常熟悉的曼哈顿距离,L2范数也是非常熟悉的欧式距离。对于一个向量 ω ⃗ \vec{\omega} ω 而言,其L1范数和L2范数分别是:
L 1 范数: ∣ ∣ ω ⃗ ∣ ∣ 1 = ∣ ω 1 ∣ + ∣ ω 2 ∣ + … + ∣ ω n ∣ L 2 范数: ∣ ∣ ω ⃗ ∣ ∣ 2 = ω 1 2 + ω 2 2 + … + ω n 2 L1范数:||\vec{\omega}||_1=|\omega_1|+|\omega_2|+…+|\omega_n| \\ L2范数:||\vec{\omega}||_2=\sqrt{\omega_1^2+\omega_2^2+…+\omega_n^2} L1范数:∣∣ω∣∣1=∣ω1∣+∣ω2∣+…+∣ωn∣L2范数:∣∣ω∣∣2=ω12+ω22+…+ωn2
在损失函数之中,在尾项之中加入L2正则项,为梯度下降加入减小权重的目标,就可以在减小损失的同时减小权重。假设原本的损失函数是 ι ( ω ⃗ , b ⃗ ) \iota(\vec{\omega},\vec{b}) ι(ω

文章介绍了正则化在解决模型过拟合问题中的作用,特别是L1和L2正则化。L1正则化通过引入L1范数导致模型权重稀疏,而L2正则化(权重衰减)通过L2范数限制权重大小,两者都是通过调整模型参数来提升泛化能力。文章还展示了在PyTorch中实现L2正则化的代码示例。
最低0.47元/天 解锁文章
1万+





