机器学习之问题+易混淆概念学习笔记(九)过拟合及其解决办法

问题+易混淆概念

1、什么是过拟合?

过拟合可以理解为我们的模型对测试样本实例学习得太好了,即把一些样本的特殊的属性(特征)当做所有样本都具有的特征。在西瓜书里讲到,当我们的模型去训练如何判断一个东西是不是叶子时,我们样本中叶子如果都是锯齿状的话,如果模型产生过拟合了,会认为叶子都是锯齿状的,而不是锯齿状的就不是叶子了。再举个简单的例子,当判断是男生还是女生时,如果样本实力中的男生都是短发,女生都是长发,模型根据头发是短发就判断其为男生的话,就会造成过拟合。解决的办法是引入更多的实例。也可以参考下面介绍的方法。

在机器学习和深度学习中,过拟合是一个十分常见问题,一旦模型出现了过拟合,可能这个模型就无法适用于业务场景中。所以为了降低产生过拟合的风险,机器学习中常采用的几种方法供大家参考。

  1. 引入正则化

    常用的正则化的方法有L1、L2,在矩阵理论和数值分析里我们称之为1范数和2范数。L1正则与L2正则的思想就是不能够一味的去减小损失函数,你还得考虑到模型的复杂性,保证模型简单化,通过限制参数的大小,来限制其产生较为简单的模型,这样就可以降低产生过拟合的风险。用机器学习的话表述为,在保证经验误差(测试误差而非泛化误差)最小的同时,保证结构风险最小化。其中,再L1正则化时,更容易获得稀疏解,这是为什么呢?通过下图说明。

    è¿éåå¾çæè¿°


    假设我们模型只有 \large w\textup{1},w\textup{2}两个参数,上图中左图中黑色的正方形是L1正则项的等值线,而彩色的圆圈是模型损失的等值线;右图中黑色圆圈是L2正则项的等值线,彩色圆圈是同样模型损失的等值线。因为我们引入正则项之后,我们要在模型损失和正则化损失之间折中,因此我们去的点是正则项损失的等值线和模型损失的等值线相交处。通过上图我们可以观察到,使用L1正则项时,两者相交点常在坐标轴上,也就是 \large w\textup{1},w\textup{2}  中常会出现0;而L2正则项与等值线常相交于象限内,也即为 \large w\textup{1},w\textup{2} 非0。因此L1正则项时更容易得到稀疏解的。
    而使用L1正则项的另一个好处是:由于L1正则项求解参数时更容易得到稀疏解,也就意味着求出的参数中含有0较多。因此它自动帮你选择了模型所需要的特征。L1正则化的学习方式是一种嵌入式特征学习方式,它选取特征和模型训练时一起进行的。正则化的思想十分简单明了。由于模型过拟合极有可能是因为我们的模型过于复杂。因此,我们需要让我们的模型在训练的时候,在对损失函数进行最小化的同时,也需要让对参数添加限制,这个限制也就是正则化惩罚项。

  2. Dropout
    Dropout是在深度学习中降低过拟合风险的常见方法,它是由大牛Hinton老爷子提出的。老爷子认为在神经网络产生过拟合主要是因为神经元之间的协同作用产生的。因此老爷子在神经网络进行训练的时候,让部分神经元失活,这样就阻断了部分神经元之间的协同作用,从而强制要求一个神经元和随机挑选出的神经元共同进行工作,减轻了部分神经元之间的联合适应性。

  3. 提前终止训练
    在对模型进行训练时,我们可以将我们的数据集分为三个部分,训练集、验证集、测试集。我们在训练的过程中,可以每隔一定量的step,使用验证集对训练的模型进行预测,一般来说,模型在训练集和验证集的过拟合损失变化如下图所示: 

    可以看出,模型在验证集上的误差在一开始是随着训练集的误差的下降而下降的,拟合程度提高,误差减小。当超过一定训练步数后,模型在训练集上的误差虽然还在下降,但是在验证集上的误差却不在下降了,模型的拟合程度低,误差较大。此时我们的模型就过拟合了。观察图形趋势,在验证集曲线上的转折点对应的训练次数,就是我们的模型对于训练集过拟合的开始点,因此我们可以观察我们训练模型在验证集上的误差,一旦当验证集的误差不再下降时,我们就可以提前终止我们训练的模型。

  4. 增加样本数
    在实际的项目中,你会发现,上面讲述的那些技巧虽然都可以减轻过拟合的风险,但是却都比不上增加样本量来的更实在。为什么增加样本可以减轻过拟合的风险呢?这个要从过拟合是啥来说。过拟合可以理解为我们的模型对样本量学习的太好了,把一些样本的特殊的特征当做是所有样本都具有的特征。个简单的例子,当判断是男生还是女生时,如果样本实力中的男生都是短发,女生都是长发,模型根据头发是短发就判断其为男生的话,就会造成过拟合。解决的办法是引入更多的实例,增加短发女生或者长发男生的样本实例。因此其实上述的那些技巧虽然有用,但是在实际项目中,你会发现,其实大多数情况都比不上增加样本数据来的实在。

  5. 总结
    减小过拟合的方法概括起来就是减小模型复杂度和增加样本实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值