导航:首页 > 网络问题 > 为什么神经网络不会过拟合

为什么神经网络不会过拟合

发布时间:2022-12-16 12:09:21

⑴ 神经网络的遗传算法可以防止过拟合嘛

你好,遗传算法在一定程度上可以防止过拟合。
遗传算法主要是针对神经网络的优化的。他是通过交叉和突变来实现对神经网络的优化。
过拟合其实是说模型太过严格,泛化不够。容错性不够好。
因为遗传算法通过交叉和突变,他可以提升模型的泛化能力。

⑵ 过拟合问题

过拟合会造成模型变得复杂,并尽可能拟合训练集,造成在训练集上的准确率特别高,这里就会有一个问题就是:训练集是不靠谱的,其中有容错的数据。直接点,训练集中特别是十几万的数据,会有脏数据,这些脏数据也成为负样本,会造成模型训练有误差,模型在训练的时候并不清楚那些是脏数据,它只会不停的去拟合这些数据,所以过拟合的模型在训练集上准确率特别高,但训练集其实只是整个数据集中的一部分,其包含两部分特征,一部分是整个数据集共有的特征,一部分是训练集自身共有的特征,当过拟合时,模型学到的是这两部分的特征,此时拿模型去在测试集上测试时,因为测试集不包含训练集自身共有的特征,所以测试集在模型上就不会取得很好的效果。因此需要防止过拟合。主要优缺点如下:

训练集的准确率很高,其实这个训练集准确率高只能说明 模型拟合数据不错,但是 针对测试集来说效果可能就不一定了,这个很难评估,不过大致可以说明模型还是可以的。

模型在测试集上的效果不好,过度的拟合噪音数据,过度拟合训练集中特有特征,所以过拟合的模型在测试集上表现都非常差。

欠拟合比较好理解就是模型简单或者说语料集偏少、特征太多,在训练集上的准确率不高,同时在测试集上的准确率也不高,这样如何训练都无法训练出有意义的参数,模型也得不到较好的效果,这个优缺点就不说了,基本上欠拟合就选择合理的模型,合理的特征,提高训练集就行。

1、early stopping
Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。
2、数据集扩增
通过扩充数据集,让训练集中的噪音数据占比越来越小,这样噪音对模型的影响就较小,防止模型过拟合。
3、正则化
正则化是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。
4、 Dropout
正则是通过在代价函数后面加上正则项来防止模型过拟合。在神经网络中,有一种方法是通过修改自身结构来实现的,叫做Dropout。这是对网络训练的一种技巧,在训练过程中随机删除一些隐藏层的神经元,同时保证输入层和输出层的神经元不变。
5、挑选合适的模型
模型不合适,挑选相对简单的模型进行训练,对模型中的参数、训练层数等做限制。
6、可变化的学习率
————————————————
原文链接: https://blog.csdn.net/randompeople/article/details/82107740

⑶ 深度学习为什么不过拟合

深度学习:过拟合

为了得到一致假设而使假设变得过度复杂称为过拟合。想象某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的文档它全都认为不属于这个类别。
标准定义:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。 —-《Machine Learning》Tom M.Mitchell

假设我们用深度学习来判断西瓜,过拟合会使得你判断西瓜更加严厉,导致在某些西瓜数据上与你准备的数据有些出入(差别并不会太大),从而结果判定不是西瓜。。。

-----------------
深度学习防止过拟合的方法

过拟合即在训练误差很小,而泛化误差很大,因为模型可能过于的复杂,使其”记住”了训练样本,然而其泛化误差却很高,在传统的机器学习方法中有很大防止过拟合的方法,同样这些方法很多也适合用于深度学习中,同时深度学习中又有一些独特的防止过拟合的方法,下面对其进行简单的梳理.
1. 参数范数惩罚
范数正则化是一种非常普遍的方法,也是最常用的方法,假如优化:

minObj(θ)=L(y,f(x))+αG(θ)

其中L为经验风险,其为在训练样本上的误差,而G为对参数的惩罚,也叫结构风险.α是平衡两者,如果太大则对应的惩罚越大,如过太小,甚至接近与0,则没有惩罚.
最常用的范数惩罚为L1,L2正则化,L1又被成为Lasso:

||w||1=|w1|+|w2|+...

即绝对值相加,其趋向于是一些参数为0.可以起到特征选择的作用.
L2正则化为:

||w||2=w12+w22+...−−−−−−−−−−−−√

其趋向与,使权重很小.其又成为ridge.
关于更多可以参考:机器学习中的范数规则化之(一)L0、L1与L2范数

2. 数据增强
让模型泛化的能力更好的最好办法就是使用更多的训练数据进行训练,但是在实践中,我们拥有的数据是有限的,解决这一问题可以人为的创造一些假数据添加到训练集中.
一个具体的例子:
在AlexNet中,将256*256图像随机的截取224*224大小,增加了许多的训练样本,同时可以对图像进行左右翻转,增加样本的个数,实验的结果可以可降低1%的误差.
在神经网络中输入噪声也可以看做是数据增强的一种方式.
3. 提前终止
如下图所示(图片来源deep learning),当随着模型的能力提升,训练集的误差会先减小再增大,这样可以提前终止算法减缓过拟合现象.关于算法的具体流程参考deep learning.

提前终止是一种很常用的缓解过拟合的方法,如在决策树的先剪枝的算法,提前终止算法,使得树的深度降低,防止其过拟合.
4. 参数绑定与参数共享
在卷积神经网络CNN中(计算机视觉与卷积神经网络 ),卷积层就是其中权值共享的方式,一个卷积核通过在图像上滑动从而实现共享参数,大幅度减少参数的个数,用卷积的形式是合理的,因为对于一副猫的图片来说,右移一个像素同样还是猫,其具有局部的特征.这是一种很好的缓解过拟合现象的方法.
同样在RNN中用到的参数共享,在其整条时间链上可以进行参数的共享,这样才使得其能够被训练.
5. bagging 和其他集成方法
其实bagging的方法是可以起到正则化的作用,因为正则化就是要减少泛化误差,而bagging的方法可以组合多个模型起到减少泛化误差的作用.
在深度学习中同样可以使用此方法,但是其会增加计算和存储的成本.
6. Dropout
Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。dropout可以随机的让一部分神经元失活,这样仿佛是bagging的采样过程,因此可以看做是bagging的廉价的实现.
但是它们训练不太一样,因为bagging,所有的模型都是独立的,而dropout下所有模型的参数是共享的.
通常可以这样理解dropout:假设我们要判别一只猫,有一个神经元说看到有毛就是猫,但是如果我让这个神经元失活,它还能判断出来是猫的话,这样就比较具有泛化的能力,减轻了过拟合的风险.
7. 辅助分类节点(auxiliary classifiers)
在Google Inception V1中,采用了辅助分类节点的策略,即将中间某一层的输出用作分类,并按一个较小的权重加到最终的分类结果中,这样相当于做了模型的融合,同时给网络增加了反向传播的梯度信号,提供了额外的正则化的思想.
8. Batch Normalization
在Google Inception V2中所采用,是一种非常有用的正则化方法,可以让大型的卷积网络训练速度加快很多倍,同事收敛后分类的准确率也可以大幅度的提高.
BN在训练某层时,会对每一个mini-batch数据进行标准化(normalization)处理,使输出规范到N(0,1)的正太分布,减少了Internal convariate shift(内部神经元分布的改变),传统的深度神经网络在训练是,每一层的输入的分布都在改变,因此训练困难,只能选择用一个很小的学习速率,但是每一层用了BN后,可以有效的解决这个问题,学习速率可以增大很多倍.
未完待续…
参考资料:
deep learning
tensorflow实战
机器学习中的范数规则化之(一)L0、L1与L2范数

⑷ 神经网络,什么过拟合,什么是欠拟合

欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。

相关介绍:

人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物神经网络的启发但不完全相同的计算系统。这种系统通过例子来“学习”执行任务,而不用特定于任务的规则进行编程。

例如,在图像识别中,人工神经网络可能会通过分析一些图像样本来学习识别包含猫的图像,这些图像被手工标记为“猫”或“不是猫”,并使用结果识别在其他图像中的猫。

他们这样做是在没有猫的任何先验知识的情况下进行的,例如,它们有毛皮,尾巴,胡须和类似猫的脸。相反,人工神经网络会自动从它们处理的学习材料中生成识别特征。

人工神经网络是基于称为人工神经元的连接单元或节点所构成的集合,这些单元或节点松散地模拟生物大脑中的神经元。像生物大脑中的突触一样,每个连接可以将信号从一个人工神经元传输到另一个人工神经元。接收信号的人工神经元可以对其进行处理,然后向与之相连的附加人造神经元发出信号。

⑸ 神经网络,什么过拟合,什么是欠拟合

欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。
通过调整模型的容量(capacity),我们可以控制模型是否偏向于过拟合或者欠拟合。通俗地,模型的容量是指其拟合各种函数的能力。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,因为记住了不适用于测试集的训练集性质。

⑹ 神经网络,什么过拟合,什么是欠拟合

欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距太大。

考虑过多,超出自变量的一般含义维度,过多考虑噪声,会造成过拟合。

可以认为预测准确率、召回率都比理论上最佳拟合函数低很多,则为欠拟合。

简介

人工神经网络按其模型结构大体可以分为前馈型网络(也称为多层感知机网络)和反馈型网络(也称为Hopfield网络)两大类,前者在数学上可以看作是一类大规模的非线性映射系统,后者则是一类大规模的非线性动力学系统。

按照学习方式,人工神经网络又可分为有监督学习、非监督和半监督学习三类;按工作方式则可分为确定性和随机性两类;按时间特性还可分为连续型或离散型两类,等等。

⑺ 神经网络过拟合的现象是什么 发生原因

过拟合现象一般都是因为学习的过于精确,就好比让机器学习人脸,取了100个人的脸训练,但是由于你学习的过精确,导致除了这个样本100人外 其他的人脸神经网络都认为不是人脸,实际我们只需要学习人脸的基本特征 而不是详细到人的皮肤细腻 眼睛大小等过于细致的特征,这样可以保证机器还是能识别别的图片中的人脸的

⑻ 什么是过拟合如何避免过拟合问题

过拟合 :所选模型的复杂度比真模型更高;学习时选择的模型所包含的参数过多,对已经数据预测得很好,但是对未知数据预测得很差的现象.

过拟合一般特点 :高方差,低偏差;

导致过拟合原因: 训练数据不够,模型进行过度训练(overtraining)等

如何避免过拟合:

1) Early stopping (适当的stopping criterion): Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合

2) 数据集扩增 : 数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般方法有:从数据源头采集更多数据,复制原有数据并加上随机噪声,重采样,根据当前数据集估计数据分布参数,使用该分布产生更多数据等

3)正则化方法: 一般有L1正则与L2正则等

4)Dropout: 正则是通过在代价函数后面加上正则项来防止模型过拟合的。而在神经网络中,有一种方法是通过修改神经网络本身结构来实现的,其名为Dropout

⑼ 神经网络:欠拟合和过拟合

以我们前面讲述的线性回归为例,比如我们在训练集上训练出最优的模型,但是当我们将其使用到测试集时,测试的误差很大,我们该怎么办? 

我们一般采取的措施主要包括以下6种:

增加训练样本的数目(该方法适用于过拟合现象时,解决高方差。一般都是有效的,但是代价较大,如果下面的方法有效,可以优先采用下面的方式);

尝试减少特征的数量(该方法适用于过拟合现象时,解决高方差);

尝试获得更多的特征(该方法适用于欠拟合现象时,解决高偏差);

尝试增加多项式特征(该方法适用于欠拟合现象时,解决高偏差);

尝试减小正则化程度λ(该方法适用于欠拟合现象时,解决高偏差);

尝试增加正则化程度λ(该方法适用于过拟合现象时,解决高方差);

上面的方法不是随机选择,是在合适的情况下(过拟合和欠拟合)选择合适的方法,对于怎么判断一个模型是过拟合还是欠拟合,我们会在下面给出一些机器学习诊断法。

如何对一个假设进行评估?  

我们前面在讲述线性回归和逻辑回归时,只是注重针对训练数据集训练出一个最优的参数,但是我们训练处的模型对于测试集的性能好坏我们没有进行判断,我们只是训练的模型使得损失函数最小,我们前面也讨论过,在训练数据集上损失函数最小并不能代表对于给定的测试数据,测试数据的评估非常准确,比如过拟合现象发生时,那我们如何评价一个假设的好坏呢? 

主要的方法包括两种: 

1.对于简答的模型,我们可以采用将hθ(x)的图像画出,来判断模型的好坏,但是这种方法对于特征变量不是一个时,这种方法很难实现或者不可能实现。例如我们曾经看到过这样的图像,可以通过hθ(x)的图像明显可以看出,该假设存在着过拟合现象。 

2.另一种评估假设的方法为:将原来的数据集分为训练集和测试集,一般我们是从原来的数据集中随机选取(保证训练集和测试集中都含有各种类型的数据)70%的数据作为训练集,剩下的30%的样本作为测试集。同时这种将原来数据集划分为训练集和测试集的方法可以用于帮助特征选择、多项式次数的选择以及正则化参数的选择等。数据集划分的过程如下: 

以上面数据集为例,选取前7个为训练集,后3个为测试集。用前7个数据集做训练训练出一个最优的模型,评价这个训练出的模型的好坏可以使用测试集来进行判断,判断的标准可以使用测试集的损失函数来进行定量的衡量。 

对于回归问题,测试集的损失函数计算公式如下: 

Jtest(θ)=12mtest∑i=1mtest(hθ(x(i)test)−y(i)test)2

而对于分类问题,测试集的损失函数计算公式如下: 

这种测量方式,如果测试样本损失函数很大,则代表训练出的模型泛化能力不好。 

对于分类问题,还有另外一种测量的方式,称为误分类率,它对于每一个测试样本进行计算,计算的公式如下: 

error=1mtest∑i=1mtesterr(hθ(x(i)test),y(i)))

其中, 

模型的选择和交叉验证集:  

上述我们是在模型选择好了之后进行训练的,也就是上述我们都是确定了假设进行训练的,但是我们怎么对模型进行选择呢,这一节我们来讨论一下模型的选择,以及和交叉验证集的关系。 

模型选择主要包括以下内容:1.怎样选择正确的特征来构造学习算法?2.怎样选择学习算法中正则化参数λ?等问题。 

首先我们结合一个例子来引出模型的选择和验证集: 

例如我们有上面十个模型,我们对于给定的数据集选择哪种模型呢?按照我们上面讨论的将数据集划分为训练集和测试集,使用训练集对上述模型进行训练,然后使用测试集来进行选择最佳的模型,比如最优的为第五个模型,但是这并不能衡量这个模型的泛化能力,因为测试集已经用于选择最优的模型,这个模型对于其他未知数据的泛化能力还是未知的。 

所以针对上述问题我们可以将数据集划分为训练集、交叉验证集和测试集。一般情况下,训练集占总样本的60%,交叉验证集占20%,测试集占20%。其中训练集用于训练,交叉验证集用于选择最优的模型,测试集用于测试模型的泛化能力。 

模型选择方法为: 

1. 使用训练集训练10个模型; 

2. 用10个模型分别对交叉验证集计算出交叉验证误差(代价函数的值),其中计算公式为: 

3. 选取交叉验证误差最小的模型作为选择的模型; 

4. 用测试集对选择出的模型计算泛化能力(测试样本的损失函数),计算公式如上文中讨论的一样。

假设对诊断偏差和方差(即过拟合还是欠拟合)的影响  

利用上述方法学习到的算法性能不好一般会有两种情况: 

1.会出现过拟合,也就是所谓的方差很大; 

2.会出现欠拟合,也就是所谓的偏差很大; 

首先应该确定算法性能的不好,是由哪种原因造成的,然后针对不同的情况采取不同的改进策略,可以有效的改进当前的算法。下面我们来讲述一下怎么判断是过拟合还是欠拟合。 

以下面例子为例,来进行讨论: 

我们可以通过绘制出训练集的代价函数和交叉验证验证集的代价函数与方次d的关系来进行判断是上述哪种情况的一种: 

对于训练集,当d较小时,模型的拟合程度不是很好,所以训练样本集的代价函数比较大;随着d的增加,模型的拟合程度不断提高,代价函数不断的减小; 

对于交叉验证集,由于d比较小时,模型的拟合程度不是很好,对于新来的样本预测结果会偏差很大,所以交叉验证集的代价函数在初始阶段会很大,而随着d的增加会出现一个比较好的方次d,使得模型的拟合程度最佳,同时对于新来的样本泛化能力很强,所以会有一个代价函数最小的点出现(该转折点即是模型开始由欠拟合转向过拟合的点),随后随着d的增加,由于过拟合,会存在对新的样本预测结果不良的现象,所以代价函数会逐渐增大。 

当我们绘制出上述曲线时,我们就可以判断出什么时候是过拟合什么时候欠拟合,判断的标准如下: 

1. 当训练误差与交叉验证集误差接近时,并且都很大时,该模型高偏差(欠拟合); 

2. 当训练误差远小于验证集误差时,并且训练误差很小时,该模型高方差(过拟合)。 

判断出该模型是过拟合或者欠拟合之后,然后使用上述提到的过拟合和欠拟合的解决方法,对算法进行改进。

正则化对偏差和方差的影响  

我们前面讲述过正则化可以有效的处理过拟合现象,但是我们上述所说的处理过拟合是在合适的λ情况下,那么λ值的大小对模型的性能是怎样影响的呢?我们采用上述与方次d对性能的影响相同的方式来分析λ的值对性能的影响。 

我们首先选择一系列的λ值,通常λ的选择是0~10之间呈现二倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,5.26,5.12,10) 

构建方式如下: 

选择λ的方法如下: 

1.使用训练集训练处12个不同程度正则化模型; 

2.用12个模型分别对交叉验证集计算出交叉验证误差; 

3.选择得出交叉验证误差最小的模型; 

4.运用步骤3选出的模型对测试集计算得出推广误差

我们同样可以将训练集和交叉验证集模型的代价函数与λ的值绘制在一张图上。对于训练集、验证集和测试集的代价函数计算公式为: 

需要注意的是,当计算训练集、交叉验证集和测试集误差时,不计算正则项,然后绘制出训练集和交叉验证集代价函数与λ值的关系,如下图所示: 

1. 当λ较小时,训练误差较小(过拟合)而交叉验证集误差较大; 

2. 随着λ的增加(从过拟合到欠拟合的过程),训练集误差逐渐增大(欠拟合),而交叉验证集误差则是先减小后增大。

学习曲线  

学习曲线也是一种可以判断算法是否处于过拟合还是欠拟合的情况,学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图像。学习曲先不仅可以帮助我们是不是处于过拟合或者欠拟合,它还可以帮助我们判断是否为了提高算法的性能需要我们收集多的数据。 

假设我们有100行数据,我们从第一行数据开始,逐渐增加数据进行训练,得到每次训练数据的代价函数值。当数据很少时,训练模型能够非常完美的拟合很少的数据,但是训练出的模型却不能泛化其他的数据,所以当数据很少时,训练集的代价函数很小,但是交叉验证集的代价函数很大,随着样本的增加,训练集的代价函数逐渐增大,交叉验证集的代价函数逐渐减小。绘制的曲线如下图所示: 

1. 如何用学习曲线识别欠拟合: 

假设我们的模型处于欠拟合的情况下,拟合曲线如下图所示: 

我们可以看出,无论我们怎样增加样本数据,误差都不会有很大改观。同时在欠拟合的情况下,会出现随着样本的增加,训练集代价函数和交叉验证集代价函数都很大的情况,在这种情况下,就没有必要花费时间在收集数据上了,同时这也是一种判断模型是过拟合还是欠拟合的方法。 

2. 如何使用学习曲线识别过拟合: 

假设我们有一个非常高次的多项式模型(比如最高次项达到100次),并且正则化非常小时,从下图可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。 

对于过拟合现象时,会出现训练集代价函数一直都很小(虽然是增加的趋势),但是验证集的损失函数会很大(虽然是减小的趋势),同时训练集代价函数和验证集代价函数相差会很大,可以使用这种方法来判断该模型处于过拟合阶段。

对于神经网络我们在讨论一下过拟合和欠拟合现象:  

使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但是计算代价小;使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。 

对于 神经网络的模型选择 :我们一般选择较大的神经网络并采用正则化处理,而不会选择较小的神经网络。 

对于 神经网络隐藏层的层数选择 ,一般我们从一层开始逐渐增加层数,为了更好的选择出最佳的层数,可以针对不同隐藏层层数的神经网络进行训练,然后选择交叉验证集代价函数最小的神经网络。

阅读全文

与为什么神经网络不会过拟合相关的资料

热点内容
路由器网络红色亮 浏览:717
vivos7数据网络设置在哪里 浏览:487
手机网络未知异常 浏览:974
网络哪里可以学习泡茶 浏览:288
美国的社交网络是哪个情节 浏览:70
网络没有光信号怎么解 浏览:802
怀来网络营销旅游管理 浏览:154
移动网络机顶安装视频 浏览:352
自媒体网络共享 浏览:220
靠网络怎么赚钱的 浏览:480
台式电脑网络共享器 浏览:26
dnf卡住就网络连接中断 浏览:647
魔百盒网络设置网络 浏览:496
网络图连接线 浏览:648
qq显示无网络怎么回事啊 浏览:112
首都图书馆网络卡号和密码 浏览:844
网络联机怎么玩红警 浏览:514
映射网络连接器删除 浏览:176
移动网络信号出现个g是什么意思 浏览:537
手机用桥接网络不能刷视频 浏览:418

友情链接