简单来说,正则化就是对损失函数增加额外一种约束的方法,主要用来进行特征选择和改善模型的过拟合现象
常用的正则化方法有L0正则、L1正则、L2正则、随机正则
- L0正则:在损失函数后增加一个惩罚项,这个惩罚项计算参数的L0范数
- L1正则:在损失函数后增加一个惩罚项,这个惩罚项计算参数的L1范数
- L2正则:在损失函数后增加一个惩罚项,这个惩罚项计算参数的L2范数的平方
- 随机正则:随机让某些权重系数为零,在神经网络中表现为让某些神经元失活
注:正则化中的参数不包括截距(偏置)参数
范数的概念如下:
范数是一种用来度量某个向量空间(或矩阵)中的每个向量的长度或大小的手段,P范数的定义如下:
∥
x
∥
p
=
∑
i
∣
x
i
∣
p
p
\left \| \boldsymbol{x} \right \|_p = \sqrt[p]{\sum_{i}\left | x_i \right |^p}
∥x∥p=pi∑∣xi∣p
对于一个向量W,0~1范数的概念如下:
- 0范数,向量中非零元素的个数。
- 1范数,向量中元素的绝对值之和。
- 2范数,就是通常意义上的模(平方和开根号)。
1. 使用正则化能够防止模型过拟合
我们首先要理解什么是过拟合,以下图为例:

图中的红线为过拟合的曲线,而中间的黑线才是我们先要得到的拟合曲线,而得到为了黑线我们可以使用以下2种方法:
- 减小拟合函数中的参数个数(简化拟合函数)
- 限制拟合参数的弯曲程度
方法1
L0正则化使用L0范数来限制参数个数,从而避免模型过拟合;
随机正则化通过随机将某些函数参数置为0,从而简化网络结构,达到避免模型过拟合的目的,常用的方法有:
- 使用Relu或Gelu激活函数,将某些参数置为0
- 使用dropout网络结构,使某些神经单元失活,从而使某些参数为0
方法2
要限制曲线的弯曲程度,你要保证拟合函数在较小的区间内,导数的变化相对平稳;对于某一点的倒数来说,自变量可大可小,那么想要最小化导数值就必须使参数的值尽可能的小
而L1和L2正则化正好可以最小化参数向量中每个参数值,进而达到免模型过拟合的目的
但是两者也有不同:
- L1正则化:容易使某些参数值为0,因为L1正则化可以令某些参数为0,因此L1正则化也有降维的作用
- L2正则化:只是使所有参数都不同程度的缩小
上述两种方法都能有在参数向量维度较大时,增加参数向量的稀疏性,从而降低结构风险
L2正则化比L1正则化得到的值更加稳定,两组不同的参数计算出的 L1正则化后的损失函数值可能相同
注:
经验风险=损失函数值
结构风险=经验风险+模型复杂度=损失函数值+正则化值
2. 使用正则化进行特征提取
可以通过L0正则化、L1正则化、L2正则化、随机正则化方法,提取参数值较大的系数对应的特征
参考文章:

158

被折叠的 条评论
为什么被折叠?



