正则化

什么是正则化

泰勒公式

n是一个正整数,如果定义一个包含a的区间上的函数fa点处n+1次可导,那么对于区间上的任意x,都有:

f(x)=f(a)+f(a)1!(xa)+f(2)(a)2!(xa)2++f(n)(a)n!(xa)n+Rn(x)

其中的多项式称为函数在a点处的泰勒展开式,剩余的Rn(x)是泰勒展开式的余项,是(xa)n的高阶无穷小

范数

范数(norm)常被用于度量某个向量空间(或矩阵)中的每个向量的长度或大小。通用计算公式如下:

xp=(i|xi|p)1/p

常用的范数包括L0/L1/L2范数

  • 0-范数,计算向量中非零元素的个数
  • 1-范数,又称为L1范数,计算向量中各元素绝对值之和

X=|X|=|x1|+|x2|+...+|xn|

  • 2-范数,又称为L2范数,计算向量中各元素之间距离(欧式距离)之和

X2=x12+x22+...+xn2

正则化

在深度学习或机器学习中,一方面要提高算法泛化能力,另一方面要避免算法过拟合

正则化(regularization)指的是最小化算法结构风险,其目的就是为了防止算法过拟合,提高泛化能力

常用的方法包括

  • 权重惩罚(weight penalty
  • 提前停止策略(early stopping
  • 随机失活(dro最大值上限(max-upper constraintpout`)
  • 最大值上限(max-upper constraint

权重惩罚

根据泰勒公式可知,如果函数足够光滑的话,可以用泰勒展开式近似。对于非线性函数而言,可以替换成如下形式

h(x;θ)=w0+w1x+w2x2+...+wnxn

参数θ=(w0,w1,...,wn),一次项是w1xx次数高于2的项统称为高次项

一方面算法增加高次项能够提高拟合能力;另一方面高次项的系数变化对整个算法的影响更大,过高的系数会导致算法过拟合

为了防止算法过拟合,需要在损失函数中加上正则化项,常用的有L1/L2正则化

L1正则化使用L1范数加上超参数λ作为正则化项,目标函数实现如下:

obj(x;θ)=loss(x;θ)+λθ=loss(x;θ)+λ|θ|

求导如下:

φOφwi=φLφwi+λ

L2正则化使用L2范数(通常去除开根号)加上超参数λ作为正则化项,目标函数实现如下:

obj(x;θ)=loss(x;θ)+12λθ2=loss(x;θ)+12λθ2

求导如下

φOφwi=φLφwi+λwi

从导函数可知,使用L1范数作为正则化项会导致训练后的权重向量变得稀疏(sparse),即某些权重非常接近于0,因为每次梯度更新都会减去一个固定大小正则化梯度;使用L2范数作为正则化项会导致训练后的权重向量变得平均(diffuse),因为在梯度更新过程中,权重值越大,其减去的梯度也会更大

使用L1范数更有利于特征选择,使用L2范数能够抑制大权值对网络的影响,充分利用所有权重向量。在实践过程中,通常使用L2范数作为正则化项

不需要惩罚w0,因为它没有和输入数据进行乘法交互,不会放大拟合能力。在实际使用中,惩罚w0几乎不会导致性能显著下降

提前停止

提前停止是一个训练策略,最开始训练过程中,训练集和验证集的错误率都在下降,但训练多轮之后,模型可能会开始进一步学习噪声,此时训练集的错误率在下降但是验证集的错误率会提高。在这种情况下可以中止训练,通过调整超参数来防止模型过拟合

随机失活

针对网络结构模型,通过在训练过程中随机移除网络中的某些节点,能够防止网络的过拟合,提高泛化能力

随机失活的优势如下:

  1. 防止节点之间权重依赖性,提高节点自适应能力
  2. 实践证明,组合多个网络的模型能够有效提高泛化能力,随机失活操作相当于同时训练多个稀疏网络

最大值上限

最大值上限(max-upper constraint),也称为最大范数限制(max-norm constraint)用于避免权重过大,防止权重爆炸

设置一个最大值c通常设置为3或4,可通过验证集测试),计算每个神经元的权重向量w的L-2范数(平方和),如果||w||2>c,就缩放权重向量到||w||2=c

w=w(w2)c

相关阅读