卷积神经网络的振荡验证精度?

机器算法验证 机器学习 神经网络 深度学习 卷积
2022-03-19 10:44:20

我的 CNN 训练给了我奇怪的验证准确度结果。当涉及到 2.5,3.5,4.5 epochs 时,验证准确度更高(意味着只需要超过一半的批次,我可以达到更好的准确度。但是,如果我遍历所有批次(一个 epoch),验证准确度滴)。我用随机的数据子集重复这个实验几次,结果看起来很相似。

这里有什么问题吗?准确率何时波动?另外,当半个纪元周期提供更好的准确性时?

我使用 adadelta 来训练我的网络

在此处输入图像描述

3个回答

这可能是由于您的数据集的排序。如果在一个序列中有许多对同一类的观察,则网络的权重将在分类该类的方向上移动得太远。

一个常见的原因是,如果您通过重新采样观察并将它们附加到数据集来平衡数据集中的类。随机播放您的数据集 - 这应该可以帮助您避免准确度的波动(并且可能总体上获得更高的准确度)。

我过去有同样的问题,发现学习率通常是振荡的原因。尝试降低学习率或使用学习率衰减并继续训练直到曲线收敛。

可能学习率太高了。该系统几乎立即过度拟合,因为总体而言,在第一个 epoch 之后准确度正在下降。如果您想使用提前停止找到最佳位置,您肯定需要较低的学习率来扩展您的选择。此外,正如其他答案中所建议的,我将使用学习率调度。

此外,您可以查看渐变的大小。爆炸梯度可能会导致这种振荡。比使用渐变剪裁可能有用