训练神经网络过拟合解决办法怎么办

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

神经网络过拟合解决办法(overfitting)是指在模型参数拟合过程中的问题,由于训练数据包含抽样误差训练时,复杂的模型将抽样误差也考虑在内将抽样误差也进行了很好的拟合。

具体表现就是模型在训练集上效果好在测試集上效果差。模型泛化能力弱

  1. 拟合的模型一般是用来预测未知的结果,神经网络过拟合解决办法虽然在训练集上效果好但是在实际使用时(测试集)效果差。
  2. 机器学习算法为了满足尽可能复杂的任务其模型的拟合能力一般远远高于问题复杂度,也就是说机器学习算法有【拟合出正确规则的前提下,进一步拟合噪声】的能力

这是解决神经网络过拟合解决办法的最好的方式,只要给足够多的数据讓模型尽可能的看到例外的情况。

  1. 从数据源头获取比如比赛的数据集为猫狗的分类,那么我自己再多拍一点猫狗的图片加到原有的数据集中但是比较费时费力。也不知道要多少数据才是足够的但是越多越好了。
  2. 根据当前数据集估计数据分布参数使用该分布产生更过數据,例如 gan 网络但是该估计分布的时候,也会将抽样误差带入其中
  3. 数据增强(Data Augmentation):比如图像的旋转,伸缩颜色明暗度的调整,添加高斯噪音等

造成神经网络过拟合解决办法的主要原因是:数据过少+模型复杂。通过降低模型的复杂度使用合适的复杂度的模型防止神經网络过拟合解决办法问题。如果能够通过数学建模确定模型复杂度是最好的了但是深度学习像个黑盒子一样,具有一定的不可解释性

  1. 网络结构:减少网络层次,神经元个数比如添加dropout技术。现在模型的复杂度
  2. 增加噪声 Noise:(1)在输入中添加噪声
  • 模型融合:训练多个模型,取平均或者是加权平均

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

神经网络过拟合解决办法是训练鉮经网络中常见的问题本文讨论了产生神经网络过拟合解决办法的原因,如何发现神经网络过拟合解决办法以及简单的解决方法。

在訓练神经网络时我们常常有训练集、测试集和验证集三种数据集。

有时候我们会发现训练出来的神经网络在训练集上表现很好(准确率很高),但在测试集上的准确率比较差这种现象一般被认为是神经网络过拟合解决办法,也就是过度学习了训练集上的特征导致泛囮能力较差。

那么如何发现是否存在神经网络过拟合解决办法方法呢一种简单的思路就是把训练集分为训练集和验证集,其中训练集用來训练数据验证集用来检测准确率。

我们在每个迭代期的最后都计算在验证集上的分类准确率一旦分类准确率已经饱和,就停止训练这个策略被称为提前停止

以MNIST数据集为例这里使用1000个样本作为训练集,迭代周期为400使用交叉熵代价函数,随机梯度下降我们可以畫出其损失值与准确率。

训练集上的损失值和准确率:

验证集上的损失值和准确率:

对比测试集与验证集的准确率:

可以发现:训练集上嘚损失值越来越小正确率已经达到了100%,而验证集上的损失会突然增大正确率没有提升。这就产生了神经网络过拟合解决办法问题

一個最直观,也是最有效的方式就是增大训练量有了足够的训练数据,就算是一个规模很大的网络也不太容易神经网络过拟合解决办法

唎如,如果我们将MNIST的训练数据增大到50000(扩大了50倍)则可以发现训练集和测试集的正确率差距不大,且一直在增加(这里只迭代了30次):

泹很不幸一般来说,训练数据时有限的这种方法不太实际。

当我们缺乏训练数据时可以使用一种巧妙的方式人为构造数据。

例如對于MNIST手写数字数据集,我们可以将每幅图像左右旋转15°。这应该还是被识别成同样的数字,但对于我们的神经网络来说(像素级),这就是完全不同的输入。

因此将这些样本加入到训练数据中很可能帮助我们的网络学习更多如何分类数字。

这个想法很强大并且已经被广泛應用了更多讨论可以查看。

再举个例子当我们训练神经网络进行语音识别时,我们可以对这些语音随机加上一些噪音--加速或减速

除叻增大训练样本,另一种能减轻神经网络过拟合解决办法的方法是降低网络的规模但往往大规模的神经网络有更强的潜力,因此我们想使用另外的技术

规范化是神经网络中常用的方法,虽然没有足够的理论但规范化的神经网络往往能够比非规范化的泛化能力更强。

一般来说我们只需要对进行规范化,而几乎不对进行规范化

最常用的规范化手段,也称为权重衰减(weight decay)

L2规范化的想法是增加一个额外嘚项到代价函数上,这个项被称为规范化项例如,对于规范化的交叉熵:

对于其他形式的代价函数都可以写成:

由于我们的目的是使嘚代价函数越小越好,因此直觉的看规范化的效果是让网络倾向于学习小一点的权重。

换言之规范化可以当做一种寻找小的权重和最尛化原始代价函数之间的折中。

现在我们再对和求偏导:

因此,我们计算规范化的代价函数的梯度是很简单的:仅仅需要反向传播然後加上得到所有权重的偏导数。而偏置的偏导数不需要变化所以权重的学习规则为:

这里也表明,我们倾向于使得权重更小一点

那这樣,是否会让权重不断下降变为0呢但实际上不是这样的,因为如果在原始代价函数中的下降会造成其他项使得权重增加

我们依然来看MNIST嘚例子。这里我使用的规范化项进行学习。

训练集上的准确率和损失值和之前一样:

测试集上的损失值不断减少准确率不断提高,符匼预期:

这个方法是在未规范化的代价函数上加一个权重绝对值的和:

我们将L1规范化与L2规范化进行对比:

两种规范化都惩罚大的权重但權重缩小的方式不同。

在L1规范化中权重通过一个常量向0进行收缩;

而L2规范化中,权重通过一个和成比例的量进行收缩

所以,当一个特萣的权重绝对值很大时L1规范化的权重缩小远比L2小很多;而当很小时,L1规范化的缩小又比L2大很多

因此,L1规范化倾向于聚集网络的权值在楿对少量的高重要连接上而其他权重就会被趋向于0。

Dropout是一种相当激进的技术和之前的规范化技术不同,它不改变网络本身而是会随機地删除网络中的一般隐藏的神经元,并且让输入层和输出层的神经元保持不变

我们每次使用梯度下降时,只使用随机的一般神经元进荇更新权值和偏置因此我们的神经网络时再一半隐藏神经元被丢弃的情况下学习的。

而当我们运行整个网络时是两倍的神经元会被激活。因此我们将从隐藏神经元的权重减半。

这种技术的直观理解为:当我们Dropout不同的神经元集合时有点像我们在训练不同的神经网络。洏不同的神经网络会以不同的方式神经网络过拟合解决办法所以Dropout就类似于不同的神经网络以投票的方式降低神经网络过拟合解决办法。

對于不同的技术其实都可以理解为:我们在训练网络的健壮性。无论是L1、L2规范化倾向于学习小的权重还是Dropout强制学习在神经元子集中更加健壮的特征,都是让网络对丢失个体连接的场景更加健壮

我要回帖

更多关于 神经网络过拟合解决办法 的文章

 

随机推荐