如果在相同的数据上重复,神经网络会给出非常不同的准确度,为什么?

机器算法验证 神经网络 Python 张量流
2022-04-06 19:04:56

我正在运行一个神经网络将音频文件分类为 4 类。这使用了 3300 个 1 分钟的文件,它们大致均匀地分布在各个类中。我将其拆分为 80:10:10 train:validation:test 集。这训练了 50 个 epoch,我从具有最佳验证精度的 epoch 中保存模型,然后使用该模型对测试数据进行推断。

但是,如果我重复运行网络,准确性通常会大不相同。一次重复可能为 98%,下一次为 16%,在多次重复中平均约为 57%。这发生在训练、验证和测试数据上。就好像它经常训练失败,但有时却有幸运的突破。

使用一些预定义的特征和随机森林,我可以在 0.05 StDev 的情况下获得大约 83% 的准确度,所以我知道任务可以始终如一地以良好的准确度完成。当我运行神经网络只对两个类别进行分类时,它也始终表现良好(89%)。

我正在使用的网络改编自这个github repo(添加了一些花里胡哨来获得准确性等),它本身是改编自 VGG 图像分类器。我已经对我能想到的所有内容进行了错误测试,如果我使用相同音频的重复运行它(例如,每个类中的 3 个文件重复 100 次)并将这些文件也放入 val/test 数据中,它会做得很好(99 % 准确度)。

关于什么可能导致这些巨大的准确性差异以及如何解决它的任何想法?我对深度学习有点陌生,所以可能忽略了简单的想法。

1个回答

这意味着神经网络具有高方差它容易过度拟合,有时会选择正确的模式,有时会选择噪音。这可能是由于使用了不同的训练数据、随机初始化或两者兼而有之。这就是为什么你自己使用的程序很有用,如果你只训练和验证一次,你永远不会知道。这对您来说意味着您并不真正知道模型在预测时会如何表现。

您可以查看当我的神经网络不能很好地泛化时我应该怎么做?线程寻找可能的解决方案。