【笔试面试】防止或减轻过拟合的方法

过拟合是指模型在训练集上表现很好,但是验证集和测试集上表现一般,泛化能力差。

过拟合出现的可能原因:

  • 样本规模:样本数量太少、不足以覆盖业务场景
  • 噪声干扰:样本存在大量噪声,模型将噪声的特征也学到了
  • 模型能力:模型复杂度过高

解决办法

  • 对于样本较少的情况,可以考虑进行数据增强来生成一些数据,这样也可以减小噪声数据的占比

  • 正则化策略,在目标函数或者代价函数后面加上一个正则项。常见的有L1和L2正则化。

    img img

    (左图为L1正则化,右图为L2正则化)

    L1正则化(拉普拉斯分布)是指权值向量 W W W中各个元素的绝对值之和,L1正则化有利于得到稀疏模型

    • 稀疏模型避免了模型冗余,只保留与响应变量最相关的解释变量,简化了模型;

    • L1正则化有助于生成一个稀疏权值矩阵,如左图同时满足约束条件:

      min ⁡ w ∑ n = 1 N ( h w ( x i ) − y i ) 2 \min _{w} \sum_{n=1}^{N}\left(h_{w}\left(x_{i}\right)-y_{i}\right)^{2} minwn=1N(hw(xi)yi)2
      s.t. ∣ w 1 ∣ + ∣ w 2 ∣ ≤ η \quad\left|w_{1}\right|+\left|w_{2}\right| \leq \eta w1+w2η

      的点一般在矩形顶点位置,也就是权重为0的位置

    • 可以理解为通过加入L1正则化实现了降维(一些特征的权重变成了0)

    L2正则化(高斯分布)是指权值向量 W W W中各个元素的平方和然后再求平方根倾向于让权值尽可能小

    • 参数值小的模型比较简单,或者理解为更“平滑”,如果模型的某个权重系数特别大,那么某个特征的任何轻微变动都将对结果产生严重影响。
    • L2正则化会限制住 w w w的大小,但是不会让 w w w分量变成0,如右图。
  • Dropout策略(Dropout在input layer 乘以伯努利随机概率,如果p =0.5,那么y就有50%的概率会变成0 )

    • 取平均,相当于每次都随机产生了一个“新的模型”,不同的模型可能产生不能的过拟合,一般会得到n个不同的结果,此时我们可以采用 “n个结果取均值”或者“多数取胜的投票策略”去决定最终结果。
      • 类似的思路:Boosting基本思想: 通过改变训练数据的概率分布(训练数据的权值分布),学习多个弱分类器,并将它们线性组合,构成强分类器。
    • 减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。
    • Dropout主要用于全连接网络,而且一般认为设置为0.5或者0.3,而在卷积网络隐藏层中由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积网络隐藏层中使用较少
  • **集成学习(模型融合)**将弱分类器融合之后形成一个强分类器也可以减轻过拟合。

    • Bagging(套袋法):从原始样本集中抽取训练集(Bootstraping方法抽取 ),k个子训练集共得到k个模型,对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。

    • Boosting方法,boosting每次对训练集进行转换后重新训练出基模型,最后再综合所有的基模型预测结果。主要算法有 AdaBoost 和 GBDT。

      AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数 f f f来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)

  • 降低模型复杂度以降低其拟合能力

  • Early Stoping,比如验证集指标超过10个epoch都没有提升就提前停止

  • 其他:通过数据清洗减少重复样本和脏数据的占比;用hard negative mining(难例挖掘),只用负样本的一部分参与训练等

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值