导航:首页 > 网络问题 > 卷积神经网络过拟合什么意思

卷积神经网络过拟合什么意思

发布时间:2022-09-05 12:14:53

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

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

我们一般采取的措施主要包括以下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次),并且正则化非常小时,从下图可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。 

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

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

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

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

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

Ⅱ 如何判断卷积神经网络是否过拟合

原则上R Square 值越高(越接近1),拟合性越好,自变量对因变量的解释越充分。但最重要的是看sig值,小于0.05,达到显着水平才有意义。可以看回你spss的结果,对应regression 的sig值如果是小于0.05的,就可以了。

Ⅲ 神经网络过拟合的意思

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

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

深度学习:过拟合

为了得到一致假设而使假设变得过度复杂称为过拟合。想象某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的文档它全都认为不属于这个类别。
标准定义:给定一个假设空间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范数

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

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

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

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

简介

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

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

Ⅵ 深度学习之卷积神经网络经典模型

LeNet-5模型 在CNN的应用中,文字识别系统所用的LeNet-5模型是非常经典的模型。LeNet-5模型是1998年,Yann LeCun教授提出的,它是第一个成功大规模应用在手写数字识别问题的卷积神经网络,在MNIST数据集中的正确率可以高达99.2%。

下面详细介绍一下LeNet-5模型工作的原理。
LeNet-5模型一共有7层,每层包含众多参数,也就是卷积神经网络中的参数。虽然层数只有7层,这在如今庞大的神经网络中可是说是非常少的了,但是包含了卷积层,池化层,全连接层,可谓麻雀虽小五脏俱全了。为了方便,我们把卷积层称为C层,下采样层叫做下采样层。
首先,输入层输入原始图像,原始图像被处理成32×32个像素点的值。然后,后面的隐层计在卷积和子抽样之间交替进行。C1层是卷积层,包含了六个特征图。每个映射也就是28x28个神经元。卷积核可以是5x5的十字形,这28×28个神经元共享卷积核权值参数,通过卷积运算,原始信号特征增强,同时也降低了噪声,当卷积核不同时,提取到图像中的特征不同;C2层是一个池化层,池化层的功能在上文已经介绍过了,它将局部像素值平均化来实现子抽样。
池化层包含了六个特征映射,每个映射的像素值为14x14,这样的池化层非常重要,可以在一定程度上保证网络的特征被提取,同时运算量也大大降低,减少了网络结构过拟合的风险。因为卷积层与池化层是交替出现的,所以隐藏层的第三层又是一个卷积层,第二个卷积层由16个特征映射构成,每个特征映射用于加权和计算的卷积核为10x10的。第四个隐藏层,也就是第二个池化层同样包含16个特征映射,每个特征映射中所用的卷积核是5x5的。第五个隐藏层是用5x5的卷积核进行运算,包含了120个神经元,也是这个网络中卷积运算的最后一层。
之后的第六层便是全连接层,包含了84个特征图。全连接层中对输入进行点积之后加入偏置,然后经过一个激活函数传输给输出层的神经元。最后一层,也就是第七层,为了得到输出向量,设置了十个神经元来进行分类,相当于输出一个包含十个元素的一维数组,向量中的十个元素即0到9。
AlexNet模型
AlexNet简介
2012年Imagenet图像识别大赛中,Alext提出的alexnet网络模型一鸣惊人,引爆了神经网络的应用热潮,并且赢得了2012届图像识别大赛的冠军,这也使得卷积神经网络真正意义上成为图像处理上的核心算法。上文介绍的LeNet-5出现在上个世纪,虽然是经典,但是迫于种种复杂的现实场景限制,只能在一些领域应用。不过,随着SVM等手工设计的特征的飞速发展,LeNet-5并没有形成很大的应用状况。随着ReLU与dropout的提出,以及GPU带来算力突破和互联网时代大数据的爆发,卷积神经网络带来历史的突破,AlexNet的提出让深度学习走上人工智能的最前端。
图像预处理
AlexNet的训练数据采用ImageNet的子集中的ILSVRC2010数据集,包含了1000类,共1.2百万的训练图像,50000张验证集,150000张测试集。在进行网络训练之前我们要对数据集图片进行预处理。首先我们要将不同分辨率的图片全部变成256x256规格的图像,变换方法是将图片的短边缩放到 256像素值,然后截取长边的中间位置的256个像素值,得到256x256大小的图像。除了对图片大小进行预处理,还需要对图片减均值,一般图像均是由RGB三原色构成,均值按RGB三分量分别求得,由此可以更加突出图片的特征,更方便后面的计算。
此外,对了保证训练的效果,我们仍需对训练数据进行更为严苛的处理。在256x256大小的图像中,截取227x227大小的图像,在此之后对图片取镜像,这样就使得原始数据增加了(256-224)x(256-224)x2= 2048倍。最后对RGB空间做PCA,然后对主成分做(0,0.1)的高斯扰动,结果使错误率下降1%。对测试数据而言,抽取以图像4个角落的大小为224224的图像,中心的224224大小的图像以及它们的镜像翻转图像,这样便可以获得10张图像,我们便可以利用softmax进行预测,对所有预测取平均作为最终的分类结果。
ReLU激活函数
之前我们提到常用的非线性的激活函数是sigmoid,它能够把输入的连续实值全部确定在0和1之间。但是这带来一个问题,当一个负数的绝对值很大时,那么输出就是0;如果是绝对值非常大的正数,输出就是1。这就会出现饱和的现象,饱和现象中神经元的梯度会变得特别小,这样必然会使得网络的学习更加困难。此外,sigmoid的output的值并不是0为均值,因为这会导致上一层输出的非0均值信号会直接输入到后一层的神经元上。所以AlexNet模型提出了ReLU函数,公式:f(x)=max(0,x)f(x)=max(0,x)。

用ReLU代替了Sigmoid,发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid快很多,这成了AlexNet模型的优势之一。
Dropout
AlexNet模型提出了一个有效的模型组合方式,相比于单模型,只需要多花费一倍的时间,这种方式就做Dropout。在整个神经网络中,随机选取一半的神经元将它们的输出变成0。这种方式使得网络关闭了部分神经元,减少了过拟合现象。同时训练的迭代次数也得以增加。当时一个GTX580 GPU只有3GB内存,这使得大规模的运算成为不可能。但是,随着硬件水平的发展,当时的GPU已经可以实现并行计算了,并行计算之后两块GPU可以互相通信传输数据,这样的方式充分利用了GPU资源,所以模型设计利用两个GPU并行运算,大大提高了运算效率。
模型分析

AlexNet模型共有8层结构,其中前5层为卷积层,其中前两个卷积层和第五个卷积层有池化层,其他卷积层没有。后面3层为全连接层,神经元约有六十五万个,所需要训练的参数约六千万个。
图片预处理过后,进过第一个卷积层C1之后,原始的图像也就变成了55x55的像素大小,此时一共有96个通道。模型分为上下两块是为了方便GPU运算,48作为通道数目更加适合GPU的并行运算。上图的模型里把48层直接变成了一个面,这使得模型看上去更像一个立方体,大小为55x55x48。在后面的第二个卷积层C2中,卷积核的尺寸为5x5x48,由此再次进行卷积运算。在C1,C2卷积层的卷积运算之后,都会有一个池化层,使得提取特征之后的特征图像素值大大减小,方便了运算,也使得特征更加明显。而第三层的卷积层C3又是更加特殊了。第三层卷积层做了通道的合并,将之前两个通道的数据再次合并起来,这是一种串接操作。第三层后,由于串接,通道数变成256。全卷积的卷积核尺寸也就变成了13×13×25613×13×256。一个有4096个这样尺寸的卷积核分别对输入图像做4096次的全卷积操作,最后的结果就是一个列向量,一共有4096个数。这也就是最后的输出,但是AlexNet最终是要分1000个类,所以通过第八层,也就是全连接的第三层,由此得到1000个类输出。
Alexnet网络中各个层发挥了不同的作用,ReLU,多个CPU是为了提高训练速度,重叠pool池化是为了提高精度,且不容易产生过拟合,局部归一化响应是为了提高精度,而数据增益与dropout是为了减少过拟合。
VGG net
在ILSVRC-2014中,牛津大学的视觉几何组提出的VGGNet模型在定位任务第一名和分类任务第一名[[i]]。如今在计算机视觉领域,卷积神经网络的良好效果深得广大开发者的喜欢,并且上文提到的AlexNet模型拥有更好的效果,所以广大从业者学习者试图将其改进以获得更好地效果。而后来很多人经过验证认为,AlexNet模型中所谓的局部归一化响应浪费了计算资源,但是对性能却没有很大的提升。VGG的实质是AlexNet结构的增强版,它侧重强调卷积神经网络设计中的深度。将卷积层的深度提升到了19层,并且在当年的ImageNet大赛中的定位问题中获得了第一名的好成绩。整个网络向人们证明了我们是可以用很小的卷积核取得很好地效果,前提是我们要把网络的层数加深,这也论证了我们要想提高整个神经网络的模型效果,一个较为有效的方法便是将它的深度加深,虽然计算量会大大提高,但是整个复杂度也上升了,更能解决复杂的问题。虽然VGG网络已经诞生好几年了,但是很多其他网络上效果并不是很好地情况下,VGG有时候还能够发挥它的优势,让人有意想不到的收获。

与AlexNet网络非常类似,VGG共有五个卷积层,并且每个卷积层之后都有一个池化层。当时在ImageNet大赛中,作者分别尝试了六种网络结构。这六种结构大致相同,只是层数不同,少则11层,多达19层。网络结构的输入是大小为224*224的RGB图像,最终将分类结果输出。当然,在输入网络时,图片要进行预处理。
VGG网络相比AlexNet网络,在网络的深度以及宽度上做了一定的拓展,具体的卷积运算还是与AlexNet网络类似。我们主要说明一下VGG网络所做的改进。第一点,由于很多研究者发现归一化层的效果并不是很好,而且占用了大量的计算资源,所以在VGG网络中作者取消了归一化层;第二点,VGG网络用了更小的3x3的卷积核,而两个连续的3x3的卷积核相当于5x5的感受野,由此类推,三个3x3的连续的卷积核也就相当于7x7的感受野。这样的变化使得参数量更小,节省了计算资源,将资源留给后面的更深层次的网络。第三点是VGG网络中的池化层特征池化核改为了2x2,而在AlexNet网络中池化核为3x3。这三点改进无疑是使得整个参数运算量下降,这样我们在有限的计算平台上能够获得更多的资源留给更深层的网络。由于层数较多,卷积核比较小,这样使得整个网络的特征提取效果很好。其实由于VGG的层数较多,所以计算量还是相当大的,卷积层比较多成了它最显着的特点。另外,VGG网络的拓展性能比较突出,结构比较简洁,所以它的迁移性能比较好,迁移到其他数据集的时候泛化性能好。到现在为止,VGG网络还经常被用来提出特征。所以当现在很多较新的模型效果不好时,使用VGG可能会解决这些问题。
GoogleNet
谷歌于2014年Imagenet挑战赛(ILSVRC14)凭借GoogleNet再次斩获第一名。这个通过增加了神经网络的深度和宽度获得了更好地效果,在此过程中保证了计算资源的不变。这个网络论证了加大深度,宽度以及训练数据的增加是现有深度学习获得更好效果的主要方式。但是增加尺寸可能会带来过拟合的问题,因为深度与宽度的加深必然会带来过量的参数。此外,增加网络尺寸也带来了对计算资源侵占过多的缺点。为了保证计算资源充分利用的前提下去提高整个模型的性能,作者使用了Inception模型,这个模型在下图中有展示,可以看出这个有点像金字塔的模型在宽度上使用并联的不同大小的卷积核,增加了卷积核的输出宽度。因为使用了较大尺度的卷积核增加了参数。使用了1*1的卷积核就是为了使得参数的数量最少。

Inception模块
上图表格为网络分析图,第一行为卷积层,输入为224×224×3 ,卷积核为7x7,步长为2,padding为3,输出的维度为112×112×64,这里面的7x7卷积使用了 7×1 然后 1×7 的方式,这样便有(7+7)×64×3=2,688个参数。第二行为池化层,卷积核为3×33×3,滑动步长为2,padding为 1 ,输出维度:56×56×64,计算方式:1/2×(112+2×1?3+1)=56。第三行,第四行与第一行,第二行类似。第 5 行 Inception mole中分为4条支线,输入均为上层产生的 28×28×192 结果:第 1 部分,1×1 卷积层,输出大小为28×28×64;第 2 部分,先1×1卷积层,输出大小为28×28×96,作为输入进行3×3卷积层,输出大小为28×28×128;第 3部分,先1×1卷积层,输出大小为28×28×32,作为输入进行3×3卷积层,输出大小为28×28×32;而第3 部分3×3的池化层,输出大小为输出大小为28×28×32。第5行的Inception mole会对上面是个结果的输出结果并联,由此增加网络宽度。
ResNet
2015年ImageNet大赛中,MSRA何凯明团队的ResialNetworks力压群雄,在ImageNet的诸多领域的比赛中上均获得了第一名的好成绩,而且这篇关于ResNet的论文Deep Resial Learning for Image Recognition也获得了CVPR2016的最佳论文,实至而名归。
上文介绍了的VGG以及GoogleNet都是增加了卷积神经网络的深度来获得更好效果,也让人们明白了网络的深度与广度决定了训练的效果。但是,与此同时,宽度与深度加深的同时,效果实际会慢慢变差。也就是说模型的层次加深,错误率提高了。模型的深度加深,以一定的错误率来换取学习能力的增强。但是深层的神经网络模型牺牲了大量的计算资源,学习能力提高的同时不应当产生比浅层神经网络更高的错误率。这个现象的产生主要是因为随着神经网络的层数增加,梯度消失的现象就越来越明显。所以为了解决这个问题,作者提出了一个深度残差网络的结构Resial:

上图就是残差网络的基本结构,可以看出其实是增加了一个恒等映射,将原本的变换函数H(x)转换成了F(x)+x。示意图中可以很明显看出来整个网络的变化,这样网络不再是简单的堆叠结构,这样的话便很好地解决了由于网络层数增加而带来的梯度原来越不明显的问题。所以这时候网络可以做得很深,到目前为止,网络的层数都可以上千层,而能够保证很好地效果。并且,这样的简单叠加并没有给网络增加额外的参数跟计算量,同时也提高了网络训练的效果与效率。
在比赛中,为了证明自己观点是正确的,作者控制变量地设计几个实验。首先作者构建了两个plain网络,这两个网络分别为18层跟34层,随后作者又设计了两个残差网络,层数也是分别为18层和34层。然后对这四个模型进行控制变量的实验观察数据量的变化。下图便是实验结果。实验中,在plain网络上观测到明显的退化现象。实验结果也表明,在残差网络上,34层的效果明显要好于18层的效果,足以证明残差网络随着层数增加性能也是增加的。不仅如此,残差网络的在更深层的结构上收敛性能也有明显的提升,整个实验大为成功。

除此之外,作者还做了关于shortcut方式的实验,如果残差网络模块的输入输出维度不一致,我们如果要使维度统一,必须要对维数较少的进行増维。而增维的最好效果是用0来填充。不过实验数据显示三者差距很小,所以线性投影并不是特别需要。使用0来填充维度同时也保证了模型的复杂度控制在比较低的情况下。
随着实验的深入,作者又提出了更深的残差模块。这种模型减少了各个层的参数量,将资源留给更深层数的模型,在保证复杂度很低的情况下,模型也没有出现梯度消失很明显的情况,因此目前模型最高可达1202层,错误率仍然控制得很低。但是层数如此之多也带来了过拟合的现象,不过诸多研究者仍在改进之中,毕竟此时的ResNet已经相对于其他模型在性能上遥遥领先了。
残差网络的精髓便是shortcut。从一个角度来看,也可以解读为多种路径组合的一个网络。如下图:

ResNet可以做到很深,但是从上图中可以体会到,当网络很深,也就是层数很多时,数据传输的路径其实相对比较固定。我们似乎也可以将其理解为一个多人投票系统,大多数梯度都分布在论文中所谓的effective path上。
DenseNet
在Resnet模型之后,有人试图对ResNet模型进行改进,由此便诞生了ResNeXt模型。

这是对上面介绍的ResNet模型结合了GoogleNet中的inception模块思想,相比于Resnet来说更加有效。随后,诞生了DenseNet模型,它直接将所有的模块连接起来,整个模型更加简单粗暴。稠密相连成了它的主要特点。

我们将DenseNet与ResNet相比较:

从上图中可以看出,相比于ResNet,DenseNet参数量明显减少很多,效果也更加优越,只是DenseNet需要消耗更多的内存。
总结
上面介绍了卷积神经网络发展史上比较着名的一些模型,这些模型非常经典,也各有优势。在算力不断增强的现在,各种新的网络训练的效率以及效果也在逐渐提高。从收敛速度上看,VGG>Inception>DenseNet>ResNet,从泛化能力来看,Inception>DenseNet=ResNet>VGG,从运算量看来,Inception<DenseNet< ResNet<VGG,从内存开销来看,Inception<ResNet< DenseNet<VGG。在本次研究中,我们对各个模型均进行了分析,但从效果来看,ResNet效果是最好的,优于Inception,优于VGG,所以我们第四章实验中主要采用谷歌的Inception模型,也就是GoogleNet。

Ⅶ 什么是“过拟合”,如何判断,常见的原因是什么

从标准定义来说,过拟合是指,给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。判断方法是,模型在验证集合上和训练集合上表现都很好,而在测试集合上变现很差。

常见原因主要是学习过度和样本特征不均衡,如果细分,还可以包括(并未能列举全部原因)。

1、建模样本选取有误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则。

2、样本噪音干扰过大,使得机器将学习了噪音,还认为是特征,从而扰乱了预设的分类规则。

3、假设的模型无法合理存在,或者说是假设成立的条件实际并不成立。

4、参数太多,模型复杂度过高。

5、对于tree-based模型,如果我们对于其深度与split没有合理的限制,有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。

6、对于神经网络模型,权值学习迭代次数太多(Overtraining),BP算法使权值可能收敛过于复杂的决策面。

解决方法,模型上,神经网络加dropout,batch normalization,基于树的模型限制深度,加入正则化项等,设置提前终止条件。数据上,增加数据集,对数据集进行增强处理(augmentation)。

阅读全文

与卷积神经网络过拟合什么意思相关的资料

热点内容
网络共享中心没有网卡 浏览:527
电脑无法检测到网络代理 浏览:1376
笔记本电脑一天会用多少流量 浏览:593
苹果电脑整机转移新机 浏览:1380
突然无法连接工作网络 浏览:1075
联通网络怎么设置才好 浏览:1230
小区网络电脑怎么连接路由器 浏览:1052
p1108打印机网络共享 浏览:1215
怎么调节台式电脑护眼 浏览:715
深圳天虹苹果电脑 浏览:951
网络总是异常断开 浏览:617
中级配置台式电脑 浏览:1010
中国网络安全的战士 浏览:637
同志网站在哪里 浏览:1420
版观看完整完结免费手机在线 浏览:1464
怎样切换默认数据网络设置 浏览:1113
肯德基无线网无法访问网络 浏览:1290
光纤猫怎么连接不上网络 浏览:1494
神武3手游网络连接 浏览:969
局网打印机网络共享 浏览:1005