深度学习(九)过拟合和欠拟合

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

  • 过拟合(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. 如何防止欠拟合

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

    • 添加更多特征
    • 减少正则化参数
posted @ 2018-08-17 18:53  大球和二憨  阅读(1877)  评论(0编辑  收藏  举报