过拟合 (overfit) 与欠拟合 (underfit) 问题是机器学习过程中经常遇到的问题。L2正则化、Dropout正则化等等是解决过拟合问题最常使用的方法


一、过拟合与欠拟合

要解释过拟合,需要借用一张Andrew Ng的课件:

  • 三幅图中的左图,模型过于简单,偏差较大,无法很好的拟合非线性的分类问题,出现欠拟合(underfit)问题,一般需要增加网路层数,增加隐藏层神经元个数来解决。这种问题一般表现为训练集与验证集损失函数值都较大;
  • 右图,过于贴合训练集,方差较大,称作过拟合(overfit)问题,过拟合问题一般表现为训练集损失函数值较小,但是验证集的损失函数较大。即训练出的模型太过死板,而无法解决训练集以外的数据;
  • 中间表示刚好的情况,一般训练集与验证集损失函数值都较小

要通俗且形象地解释的话,欠拟合就像是考前复习不足的人,书都没看全,自然很难考好。而过拟合现象就像是书呆子,将做过的题目全都背下,但缺乏举一反三的能力,碰到做过的题,那么他就会做,但是改个问法就傻了。

考驾照,驾考时教练一般会让你看准许多的记号,然后机械地打方向盘,然而这样即使拿到的驾照,也无法立即上路,这就是过拟合问题。

二、L2正则化

L2正则化就是在原来的损失函数上,再加上一项参数的二范式

第二项又称作弗罗贝尼乌斯范数(Frobenius norm)的平方

将新的损失函数对参数求梯度得

使用梯度下降更新参数

其中α、λ是两个超参数,α是学习率,而λ负责调节L2正则化过程

  • λ=0时,表示不使用正则化
  • λ越大,在训练过程中则会压制参数的变大,使参数尽量变小

三、L2正则化为什么有效

通俗的解释,产生过拟合问题的根本原因是模型试图记住的参数太多,导致其举一反三的能力减弱,而通过L2正则化,导致很多的参数会变得很小,对模型的影响力降低,相当于降低了模型的复杂程度,提高了泛化能力。

还有一种比较通俗的解释,来自Andrew Ng

我们的所常用的激活函数sigmoid、tanh是长这样的

如果控制参数较小,那么中间层输出的参数也会很小,就会集中在中间导数相对于稳定的位置,也就是限制了分类模型过分的扭曲。

原文地址

过拟合与欠拟合问题?

www.ph0en1x.space

L2正则化解决过拟合问题?

www.ph0en1x.space


推荐阅读:
相关文章