深度学习需要多少数据?

机器算法验证 机器学习 神经网络 深度学习 卷积神经网络
2022-03-21 05:25:27

我正在学习深度学习(特别是 CNN),以及它通常如何需要大量数据来防止过度拟合。然而,我也被告知,模型的容量越高/参数越多,需要越多的数据来防止过度拟合。因此,我的问题是:为什么你不能仅仅减少深度神经网络中每层的层数/节点数,并使其与更少量的数据一起工作?神经网络在“启动”之前是否需要一个基本的“最小参数数量”?在一定数量的层以下,神经网络的性能似乎不如手动编码的特征。

1个回答

这是一个很好的问题,实际上已经有一些研究解决了你提到的容量/深度问题。

有大量证据表明,卷积神经网络的深度导致学习更丰富、更多样化的特征层次结构。根据经验,我们看到性能最好的网络往往是“深”的:Oxford VGG-Net 有 19 层,Google Inception 架构很深,Microsoft Deep Residual Network 报告了 152 层,这些都获得了非常令人印象深刻的 ImageNet 基准结果。

从表面上看,除非您使用某种正则化器,否则更高容量的模型往往会过度拟合。非常深的网络过度拟合会损害性能的一种方式是,它们将在少量训练时期内迅速接近非常低的训练误差,即我们无法训练网络大量通过数据集。像 Dropout 这样的技术,一种随机正则化技术,允许我们在更长的时间内训练非常深的网络。这实际上使我们能够学习更好的特征并提高我们的分类准确性,因为我们通过训练数据获得了更多的通过。

关于你的第一个问题:

为什么你不能仅仅减少深度神经网络中每层的层数/节点数,并使其与更少量的数据一起工作?

如果我们减少训练集的大小,这对泛化性能有何影响?如果我们使用较小的训练集大小,这可能会导致学习较小的分布式特征表示,这可能会损害我们的泛化能力。最终,我们希望能够很好地概括。拥有更大的训练集可以让我们学习更多样化的分布式特征层次结构。

关于你的第二个问题:

神经网络在“启动”之前是否需要一个基本的“最小参数数量”?在一定数量的层以下,神经网络的性能似乎不如手动编码的特征。

现在让我们在上面关于深度问题的讨论中添加一些细微差别。看来,鉴于我们目前所处的最先进水平,要从头开始训练高性能卷积网络,需要使用某种深度架构。

但是有一系列结果集中在模型压缩上。所以这不是你问题的直接答案,但它是相关的。模型压缩对以下问题感兴趣:给定一个高性能模型(在我们的例子中,假设是一个深度卷积网络),我们可以压缩模型,减少它的深度甚至参数数量,并保持相同的性能吗?

我们可以将高性能、大容量的卷积网络视为老师我们可以使用教师来训练更紧凑的学生模型吗?

令人惊讶的答案是:的。有一系列的结果,conv net 角度的一篇好文章是 Rich Caruana 和 Jimmy Ba 的文章 深度网络真的需要深度吗?. 他们能够训练一个浅层模型来模仿更深层的模型,而性能损失很小。在这个主题上还有一些工作,例如:

在其他作品中。我敢肯定我错过了其他一些好文章。

对我来说,这些结果质疑这些浅层模型真正有多少容量。在 Caruana, Ba 的文章中,他们陈述了以下可能性:

“结果表明,深度学习的力量可能部分来自于深度架构和当前训练程序之间的良好匹配,并且可能设计出更好的学习算法来训练更准确的浅层前馈网络。对于给定的参数数量,深度可能使学习更容易,但可能并不总是必不可少的”

重要的是要明确:在 Caruana, Ba 的文章中,他们不是从头开始训练浅层模型,即仅从类标签进行训练,以获得最先进的性能。相反,他们训练了一个高性能的深度模型,并从这个模型中提取每个数据点的对数概率。然后我们训练一个浅层模型来预测这些对数概率。所以我们不在类标签上训练浅层模型,而是使用这些对数概率。

尽管如此,这仍然是一个非常有趣的结果。虽然这不能直接回答您的问题,但这里有一些非常相关的有趣想法。

从根本上说:始终重要的是要记住模型的理论“容量”与找到模型的良好配置之间存在差异。后者取决于您的优化方法。