正则化方法
一、正则化的主要方法有:
- L2正则化
- dropout
- 数据增广
- early stopping
- Bagging
- 在样本中增加噪声
L2正则化是一种常用的正则化方法,也被称为权重衰减。它通过在损失函数中添加一个正则化项,来惩罚模型的复杂度,从而防止过拟合。L2正则化的正则化项是模型参数的平方和,即:
L2正则化项 = λ * ||w||^2
其中,λ是正则化强度超参数,w是模型参数。
L2正则化的作用是使得模型参数更加平滑,避免出现过于复杂的模型。在神经网络中,L2正则化可以通过在反向传播时对梯度进行调整来实现。
模型复杂度是由模型的参数量和参数的大小范围所决定的
L1、L2正则化是降低参数的大小范围
Dropout是降低参数量,这样神经元的输入会随机的被失活,下一层神经元不会完全的依赖某一个神经元的输入,这样每个神经元的权重都会降低,这样模型的复杂度也会随之降低,这样Dropout也起到了L2正则化的作用。
L1通常用于增加稀疏性,L2一般用于减小“复杂度”,且L2有唯一解
如果用标准的梯度下降法或是随机梯度下降,那么L2正则化和权重衰减是等价的。这也是我在视频里讲到的。如果是用Adam这样的优化后的算法,那么权重衰减和L2正则化就不等价了, 这个时候用权重衰减效果更好
如何解决过拟合问题?L1、L2正则化及Dropout正则化讲解_哔哩哔哩_bilibili
理解二:
二、正则化的概念
凡是能解决模型泛化误差而不是训练误差的方法,都被称为正则化。
模型的泛化误差主要是由模型过拟合引起的,所以正则化的各种方法用于解决模型过拟合的问题。
三、避免模型过拟合----L1正则化和L2正则化
L1和L2正则化的核心思想就是限制模型参数的取值范围。 模型取值范围大同样可以训练出一个泛化能力强的模型,那为什么要限制模型参数的取值范围呢?
模型取值范围大同样可以训练出一个泛化能力强的模型,但是出现过拟合的几率也大大提升了(可以选择的范围大,自然就选了一整套相互配合起来可以让损失最小的参数,但是这些参数有可能只是在迎合训练集)。另一方面,参数取得太大会放大输入模型的样本之中的噪声,让输出结果失真。
综上所述,无论是从参数取值范围大会提高过拟合几率的角度来看,还是从参数太大会放大噪声的角度来看,参数取值范围太大都是非常不利的,所以需要对范围进行限制。
明白了L1和L2正则化的核心思想就是限制模型参数的取值范围之后,来解决下一个问题:如何减小模型参数的取值范围?
首先,理解一下L1和L2正则化中的L1和L2是什么意思。L1和L2就是L1范数和L2范数。L1范数是我们非常熟悉的曼哈顿距离,L2范数也是非常熟悉的欧式距离。对于一个向量 ω 而言,其L1范数和L2范数分别是:
在损失函数之中,在尾项之中加入L2正则项,为梯度下降加入减小权重的目标,就可以在减小损失的同时减小权重。假设原本的损失函数是ι ( ω , b ),改正之后的损失函数是:
其中,λ \lambdaλ是一个超参数,用来控制正则项的惩罚力度。越大,则最终权重会越小。
L1范数和L2范数作为正则项的区别在于,L1范数可以带来稀疏性。从L1范数的图像之中可以看出,L1正则化之后的损失函数想要最小
化,ω的取值相比起L2正则化更容易接近或者落在坐标轴上,这意味着会将某些权重的值设置为0或者接近于0,权重消失或者接近于消失,就是所谓“带来稀疏性”。
由于λη是小于1的,所以每一次梯度下降的时候,权重都会衰减。
故L2正则化也称为权重衰减。
参考二原文链接:https://blog.csdn.net/weixin_52808620/article/details/130599748