测试损失似乎在 20 个时期后增加

Test loss seems to be increased after 20 epochs

我使用 8 层全连接神经网络 (tensorflow) 训练了 MNIST,得到了如下所示的结果。我可以知道为什么测试损失在 20 个纪元后增加吗?这是因为过度拟合吗?这些是网络配置:

L1: 1600 neurons
L2: 800 neurons
L3: 400 neurons
L4: 200 neurons
L5: 100 neurons
L6: 60 neurons
L7: 30 neurons
L8: 10 neurons
Optimizer: Adam (learning_rate = 0.001)
activation function: Relu
batch size: 64
dropout rate: 0.7
epoch:100

这很可能是由于过度拟合造成的。特别要注意测试 loss 如何增加,但测试 accuracy 基本保持不变(甚至不断增加)。这可能是由于模型越来越确定地(在测试集上)做出错误预测。 IE。随着时间的推移,它并没有做出更多错误的预测(解释了 stable/increasing 的准确性),但它对当前错误的预测越来越有信心(解释了不断增加的成本)。

这又可能是由于模型过度拟合了训练数据的特征,而这些特征并未泛化到测试数据。对于 "spurious" 特征(例如单个像素)的过度拟合很常见的 MNIST 尤其如此。

您可能已经看到列出的基准测试 here,作者使用 2 层,每层有 300 个神经元,并获得了很高的准确率。你有更多的神经元,这将使网络更容易过度拟合,所以首先尝试减少神经元。并且你使用大批量,这会使网络难以收敛,然后尝试使用小批量或使用更小的学习率,如 .0005。最后一件事是尝试使用LeakyRelu()tanh()甚至sigmoid(),因为Relu()功能可能在后期学习过程中死亡。