正则化为什么可以降低过拟合

正则化为什么可以降低过拟合

在进行机器学习的模型训练的时候,如果我们的训练数据不够,或者迭代的次数太多等等原因,可能会使我们的训练误差非常小,但是对测试集的误差会很大,我们把这称为过拟合,如图:
在这里插入图片描述
为了防止overfitting,可以用的方法有很多比如:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout,这里我们只对L1,L2正则化为什么可以降低过拟合做出说明:

L2正则化(权重衰减)

L2正则化就是在代价函数后面再加上一个正则化项:
在这里插入图片描述
C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。
L2正则化项是怎么避免过拟合(overfitting)的呢?我们推导一下看看,先求导:
在这里插入图片描述
可以发现L2正则化项对b的更新没有影响,但是对于w的更新有影响.
w运用梯度下降算法得到:
在这里插入图片描述
因为η、λ、n都是大于0的,所以相比于没有使用L2范数,w的值变小了,所以L2范数的作用就是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。

到目前为止,我们只是解释了L2正则化项有让w“变小”的效果,但是还没解释为什么w“变小”可以防止过拟合(overfitting)?

抽象的解释就是:更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀)。好吧这个解释也不能很好的说服我,下面我将用图片给大家解释一下:
在这里插入图片描述
如图:过拟合的时候,拟合函数的系数往往非常大,为什么?如上图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。

而L2正则化是通过约束参数的范数使其不要太大(也就是降低w,使系数减小),所以可以在一定程度上减少过拟合情况。

我在用几幅图片让大家更详细的理解L2范数

在这里插入图片描述
如图:
这里的w表示一个二维参数(w1,w2),中间的五角星表示最优的参数w1,w2使训练误差最小,而其他的圆形或菱形分别是L1或L2范数对w的约束。可以看到在这些约束下得到的w已经不是全局最优w了,所以训练误差增大了,而测试误差减小了。

猜你喜欢

转载自blog.csdn.net/qq_43631663/article/details/84295090
今日推荐