zoukankan      html  css  js  c++  java
  • 如何防止过拟合

    一、什么是过拟合?

    简单的说,就是对模型过度训练,把"训练数据学的太好了"。如下图所示:

    通过上图可以看出,随着训练的进行,训练损失逐渐减小,而验证损失先降后升,此时便发生了过拟合。即模型的复杂度升高,但是泛化能力却降低。

    降低过拟合的方法:数据集扩增(Data augmentation)、正则化(Regularization)、Dropout

    一、数据集扩增

    "拥有更多的数据胜过一个好的模型"。数据的增加对模型训练大有益处,当然收集与标注数据费时费力,我们可以在已有的数据上动动脑筋,以得到更多的数据。

    1. 简单的来说就是进行数据增强,使得数据看起来更多元化一些。这样模型每次处理样本的时候,都会以不同于前一次的角度看待样本。这就提高了从每个样本中学习参数的难度。

    2. 增加噪声数据:

      对于输入:和数据增强的目的相同,但是也会让模型对可能遇到的自然扰动产生鲁棒性

      对于输出:让训练更加多元化

    注意:在这两种情况中,你需要确保噪声数据的量级不能过大。否则最后你获取的输入信息都是来自噪声数据,或者导致模型的输出不正确。这两种情况也会对模型的训练过程带来一定的干扰。

    二、正则化方法

    在进行代价函数优化时,加上一个正则项,一般有L1正则和L2正则。

    • L1惩罚项的目的是将权重的绝对值最小化
    • L2惩罚项的目的是将权重的平方值最小化

    L1:

    L2:

    L1正则化的模型叫做Lasso回归,L2正则化的模型叫做Ridge回归(岭回归)

    下图是python中Lasso回归的损失函数,加号后面一项为L1正则化项

    下图是python中岭回归的损失函数,加号后面一项为L2正则化项

    说明如下:

    • L1正则化是指权值向量w中各个元素的绝对值之和。L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择(1-范数)
    • L2正则化是指权值向量w中各个元素的平方和然后在求平方根(其实就是权重的2范数)

    L1正则化另一个优点是它能进行特征选择,也就是说它可以让一部分无用特征的系数缩小到0,从而帮助模型找出数据集中最相关的特征。缺点是通常它在计算上不如L2正则化项高效。

    三、Dropout

    在训练中随机的让一部分神经元无效。如图所示:

                            

  • 相关阅读:
    【CSDN博客之星评选】我为什么坚持写博客
    关于纯css布局的概况
    IIS服务器下301跳转是怎么样实现的?
    如何使用数据库保存session的方法简介
    PHP如何通过SQL语句将数据写入MySQL数据库呢?
    PHP中文函数顺序排列一数组且其序数不变
    angular实时显示checkbox被选中的元素
    oracle查询正在执行的语句以及正被锁的对象
    angular中ng-repeat去重
    接口自动化测试框架--http请求的get、post方法的实现
  • 原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10573191.html
Copyright © 2011-2022 走看看