防止过拟合(overfitting)的方法

过拟合是什么?

  有一句话这么描述过拟合:“过拟合是指为了得到一致假设而使假设变得过度严格。”在深度学习领域常常表现在:训练好的模型在训练集上表现良好,而在测试集上效果很差,即存在过拟合的模型不是一个好模型。
  举个例子:给出一些特征让模型判别,特征有:两只胳膊两条腿直立行走有学习能力高级动物有胡子说汉语有教师资格证有个读高中的孩子

Normal fitting:判定这是一个,判断理由:有两只胳膊两条腿有学习能力,可以直立行走,是高级动物

overfitting:判定这是一个,判断理由:有两只胳膊两条腿有胡子有学习能力,可以直立行走,是高级动物,会说汉语

serious overfitting:判定这是一个,判断理由:有两只胳膊两条腿有胡子有学习能力,可以直立行走,是高级动物,会说汉语有教师资格证,还有个读高中的孩子

  虽说这三个判定都是,但是后面的两个判定是基于模型学习了更深层次更复杂的特征。但如果说我的对这个模型的初衷只是想能够判断某个事物是还是动物,那么存在过拟合的模型如果看不到有胡子说汉语或者有教师资格证有个读高中的孩子等特征,就不认为这是一个人,但是没有胡子,不说汉语也可以是一个人啊,所以这就不是一个好模型,存在过拟合问题,应该尽量避免过拟合。

一些防止过拟合的措施

  1. 数据增广
      想训练一个良好的模型,一个足够广泛完备的数据集是基础,举个例子,过拟合其实就可以认为是模型是一只青蛙在坐井观天,认识的太片面,太局限。而数据增广就相当于把青蛙放在井外面的大千世界中去,去更全面的认知事物。
    但是现实生活中,由于种种限制,往往搜集不到足够完备的数据集,假设是图像数据,这个时候就可以通过平移、旋转、缩放、切割、加入高斯噪声等手段将数据集进行扩充。
  2. Dropout
      Dropout方法通过修改隐藏层神经元的个数来防止网络的过拟合,也就是通过修改深度网络本身。在训练过程中按照给定的概率随机删除一些隐藏层的神经元,同时保证输入层和输出层的神经元不变,从而简化了网络的复杂度。Dropout主要广泛应用于全连接网络中。
  3. 正则化
      通常使用L1范数和L2范数进行正则化,L1范数可以稀疏网络,一定程度上防止过拟合,L2范数可以降低对数据的敏感度,提高模型的泛化能力,更能防止过拟合。
  4. 多任务学习
      将总任务分成多个小任务同时学习,模型最终认可的是多个任务的共同、一致的表示,从而使得模型在原始任务上的过拟合风险变小。

相关题目

可以解决Overfitting的方法有?

  • Dropout
  • BatchNorm
  • 增加模型参数量
  • 增加数据量

个人网站

你可能感兴趣的:(深度学习)