我在研究CNN的模型。和往常一样,我用批次和时代一起训练我的模型。当它完成训练和验证时,最后我使用一个测试集来衡量模型的性能并生成混淆矩阵。现在我想用交叉验证来训练我的模型。我可以实现它,但我脑海中有一些问题:
为什么大多数CNN模型不使用交叉验证?
2-如果我使用交叉验证,如何生成混淆矩阵?我是否可以将数据集拆分为训练/测试,然后在列车/验证集上进行交叉验证(即,除了通常的列车/测试外,交叉验证作为列车/验证),并最终以同样的方式使用测试集?或者怎么做?
发布于 2019-03-22 16:10:28
问题1:为什么大多数CNN模型不应用交叉验证技术?
k-fold交叉验证通常用于参数较少的简单模型、具有简单超参数的模型以及易于优化的模型。典型的例子是线性回归、logistic回归、小神经网络和支持向量机。对于一个参数多的卷积神经网络(如100多万),结构上可能会有太多的变化。你可以做的是做一些实验,学习率,批次大小,辍学(数量和位置)和批归一化(位置)。用庞大的数据集训练卷积神经网络需要相当长的时间。进行超参数优化将是完全过度的。通常在论文中,他们试图提高其他研究论文的结果。目标不是通过改进所选的超参数来获得更好的结果,而是想出新的思路来解决给定的任务,而是以更高的精度或较少的计算工作量。
问题2:如果我使用交叉验证,如何生成混淆矩阵?我是否可以将数据集拆分为训练/测试,然后作为列车/验证对列车集进行交叉验证(即,除了通常的列车/测试外,作为列车/验证进行交叉验证),并最终以同样的方式使用测试集?或者怎么做?
为了进行k-fold交叉验证,您需要将初始数据集分成两部分。一个用于进行超参数优化的数据集和一个用于最终验证的数据集。然后,我们将数据集用于超参数优化,并将其拆分为k (希望是)大小相等的数据集\mathcal{D}_1,\mathcal{D}_2,\ldots,\mathcal{D}_k。为了清晰起见,让我们设置k=3。然后,对于我们想要测试的每一个可能的超参数组合,我们使用\mathcal{D}_1和\mathcal{D}_2来拟合我们的模型,并使用\mathcal{D}_3来验证我们的模型。然后,我们对\mathcal{D}_2和\mathcal{D}_3做同样的操作,并使用\mathcal{D}_1进行验证。然后,我们对\mathcal{D}_1和\mathcal{D}_3做同样的操作,并使用\mathcal{D}_2进行验证。我们将得到每个可能的超参数配置的3混淆矩阵。为了从这三个结果中得到一个度量,我们取这些混淆矩阵的平均值。然后,我们可以扫描所有平均混乱矩阵,因此选择最好的超参数配置(您必须定义混淆矩阵的哪些部分对您的问题很重要)。最后,我们选择“最佳”的超参数,并在最终的验证集上计算预测性能。此性能指标是您报告的指标。
发布于 2019-03-23 02:59:02
以前的答案已经被接受了,但我回答这个问题只是为了确保事情是清楚的。我将深入一步,这对先进的人是有帮助的。
首先,交叉验证是一种主要用于选择超参数的模型选择机制。改变超参数会影响模型中的参数数。例如,增加神经网络中的层数可以引入数千个更多的参数(取决于层的宽度)。
第二,几乎所有的训练算法都可以有无限多的可能的超参数。为了明确这一点,让我举一个例子:在CNN中,层数是一个超参数,理论上可以接受1到无穷之间的任何值,这意味着只要改变这个超参数,我就可以生成无限多个模型。同时,决策树中的层次数(深度)是一个可以取1到无限值的超参数,这意味着我可以使用决策树生成无限多的模型,但是我们使用的是决策树交叉验证,而不是cnn!
不要将超参数与参数混淆,交叉验证与参数无关,它只涉及到超参数和不同的训练算法。参数的变化将通过训练算法来处理。
让我们回到原来的问题,为什么我们不使用交叉验证与CNN?事实上,这个问题的答案是基于机器学习中一个非常重要的概念。方差误差与偏倚误差。假设你有你训练过的N个模型,它们都有方差误差和零偏差误差,在这种情况下,使用交叉验证来选择一个模型是没有用的,但是平均模型是有用的。如果N个模型都有不同的有偏误差(非零),那么使用交叉验证来选择最好的模型是有用的,但是平均是有害的。当您有不同偏倚错误的模型时,使用交叉验证来确定最佳模型。无论何时,只要模型存在方差误差,就使用平均来确定最终结果。
CNN倾向于过度适应,而不是不适应。今天我们知道网络越深越好,但是过度适应是我们害怕的地方。CNN是平均而不是选择的好目标,这就是为什么有时他们会训练四到五个模型,然后平均他们的输出。
对网络体系结构选择的概念进行了研究。他们清楚地说明了如何选择你的超参数。事实上,如果你有很多数据,那就去找更大的模型吧。
我建议你读以下的文章:1-Alex-Hinton在2012年的报纸上,亚历克斯提出了他的网络。您将看到,他们提出的大多数技巧是处理过度拟合(方差错误),而不是偏倚错误。2-超级学习者,超级学习者,在预测中,本文从数学上解释了交叉验证是什么。许多人认为交叉验证是一组训练/测试实验,可以扫描一组参数并返回最佳模型,但他们忽略了这是否足以保证这是我可以使用现有培训数据获得的最佳模型。他们还忽略了交叉验证所需的所有假设,以确保返回的模型是超级学习者。
https://datascience.stackexchange.com/questions/47797
复制相似问题