要拥有一个在训练集上表现完美但在验证集上表现不佳的神经网络,我应该怎么做?为简化起见,让我们将其视为 CIFAR-10 分类任务。
例如,“无辍学”和“无正则化”会有所帮助,但“更多层”不一定。我也想知道,“批量大小”,优化器的选择对过度拟合有什么影响吗?
要拥有一个在训练集上表现完美但在验证集上表现不佳的神经网络,我应该怎么做?为简化起见,让我们将其视为 CIFAR-10 分类任务。
例如,“无辍学”和“无正则化”会有所帮助,但“更多层”不一定。我也想知道,“批量大小”,优化器的选择对过度拟合有什么影响吗?
如果您有一个具有两层可修改权重的网络,您可以形成任意凸决策区域,其中最低级别的神经元将输入空间划分为半空间,第二层神经元执行“与”运算以确定您是否在定义凸区域的半空间的右侧。在下图中,您可以通过这种方式形成区域 r1 和 r2。如果稍后添加额外的,则可以通过组合定义凸子区域的子网络的输出来形成任意凹或不相交的决策区域。我想我从 Philip Wasserman 的《神经计算:理论与实践》(1989 年)一书中得到了这个证明。
因此,您是否想要过拟合,使用具有三个隐藏层神经元的神经网络,在每一层中使用大量隐藏层神经元,最小化训练模式的数量(如果挑战允许),使用交叉熵误差度量并使用全局优化算法(例如模拟退火)进行训练。
这种方法将允许您创建一个神经网络,该神经网络具有围绕每个类的每个训练模式的凸子区域,因此训练集误差为零,并且在类分布重叠的情况下验证性能较差。
请注意,过度拟合是关于过度优化模型。如果“数据不匹配”没有被过度最小化(例如,通过应用正则化或提前停止或幸运地落在“良好”的局部最小值中,那么过度参数化的模型(比必要的权重/隐藏单元更多)仍然可以表现良好)。
对于绝对过拟合,您需要一个在技术上能够记住所有示例但从根本上无法泛化的网络。我似乎记得有一个故事,有人训练了一个学生表现预测器,该预测器在第一年取得了很好的成绩,但在第二年就彻底失败了,结果证明这是由于使用表中的所有列作为特征造成的,包括列与学生的序号,并且系统简单地设法得知例如学生#42总是取得好成绩而学生#43表现不佳,直到明年其他学生是#42时,这一直很好。
对于 CIFAR 的初步概念证明,您可以执行以下操作:
之后,您可以将其扩展到完整的 CIFAR 的严重过度拟合系统:
一般来说,如果你训练了非常多的 epoch,并且如果你的网络有足够的容量,那么网络就会过拟合。因此,为了确保过拟合:选择一个容量非常高的网络,然后训练很多个 epoch。不要使用正则化(例如,dropout、权重衰减等)。
实验表明,如果你训练足够长的时间,网络可以记住训练集中的所有输入并达到 100% 的准确率,但这并不意味着它在验证集上是准确的。在今天的大多数工作中,我们避免过度拟合的主要方法之一是提前停止:我们在有限数量的 epoch 之后停止 SGD。因此,如果您避免提前停止,并使用足够大的网络,那么导致网络过拟合应该没有问题。
你真的想强迫很多过拟合吗?然后将额外的样本添加到训练集中,随机选择标签。现在选择一个非常大的网络,并训练很长时间,足以在训练集上获得 100% 的准确率。额外随机标记的样本可能会进一步阻碍任何泛化,并导致网络在验证集上表现更差。
以下是一些我认为可能会有所帮助的事情。