zoukankan      html  css  js  c++  java
  • 深度学习(九)过拟合和欠拟合

    过拟合和欠拟合是在网络训练中常常碰到的问题

    • 过拟合(overfit):训练误差小,但是对于测试集上的误差很大。可能模型过于复杂,训练中只”记住”了训练样本,然而其泛化误差却很高。
    • 欠拟合(underfit):训练误差很大,无法找到合适的函数描述数据集

    下面介绍这两种情况下常用的一些trick方法

    1. 如何防止过拟合

      过拟合的原因基本是特征维度太多,模型过复杂,参数太多,训练数据太少,噪声过多等,导致拟合的函数在训练集上效果好而测试集效果差。从它出现的原因出发,我们可以考虑的方法有以下几种:

      • 数据增强Data Augmentation & 增加噪声数据,将源数据数量变多
      • 使用合适的网络模型,减少网络的层数、神经元个数等均可以限制网络的拟合能力
      • Dropout(把网络某层的输出节点随机丢弃掉一部分,从而创造新的样本)

      • weight正则化 (就是在损失函数中增加范L1范数/L2范数,而weight decay是正则化的系数)

          i. L1范数 所有参数的绝对值之合

            L1范数可以使得某些参数为0,也就实现特征稀疏,也可认为是特征选择

          ii. L2范数 所有参数的平方和再求平方根

            L2范数使得参数较小且接近于0,参数越小,模型就越小,就越不容易出现过拟合

          L1趋向于产生少量特征,而其他特征都为0,而L2趋向于选择更多特征,这些特征趋向于0

      • 提前终止(early stopping)过拟合出现之前停止模型的学习过程

      2. 如何防止欠拟合

      模型没有很好捕捉到数据特征,不能很好的拟合数据

      • 添加更多特征
      • 减少正则化参数
  • 相关阅读:
    执行sudo命令时command not found的解决办法
    CentOS7编译安装libc++和libc++abi
    CentOS 7 编译安装clang+llvm
    如何使用 Issue 管理软件项目?
    西门子 S7-300 PLC 从入门到精通的100个经典问题
    PLC_SIM 出现I/O访问错误-技术论坛-工业支持中心-西门子中国
    C# Lambda表达式
    C# Task中的Func, Action, Async与Await的使用
    C#委托的介绍(delegate、Action、Func、predicate)
    委托 你怎么看?
  • 原文地址:https://www.cnblogs.com/lightsun/p/9489446.html
Copyright © 2011-2022 走看看