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

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

                            

  • 相关阅读:
    前端- css
    前端- html -总结
    2016.9.15 黑客编程之无限启动
    2016.9.14 JavaScript入门之七面向对象和函数
    2016.9.13 JavaScript入门之六基础函数
    2016.9.1 JavaScript入门之五
    2016.9.9 网络工程师之路由器技术
    2016.8.14 网络工程师之网关协议
    2016.8.27 JavaScript入门之四
    2016.8.22 JavaScript入门之三
  • 原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10573191.html
Copyright © 2011-2022 走看看