【问题标题】:Test loss seems to be increased after 20 epochs20 个 epoch 后,测试损失似乎增加了
【发布时间】:2018-09-06 03:31:18
【问题描述】:
我使用 8 层全连接神经网络 (tensorflow) 训练了 MNIST,得到了如下所示的结果。我可以知道为什么在 20 epoch 之后测试损失会增加吗?是不是因为过拟合?这些是网络配置:
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
【问题讨论】:
标签:
tensorflow
deep-learning
mnist
【解决方案1】:
这很可能是由于过度拟合造成的。特别要注意测试loss如何增加,但测试accuracy基本保持不变(甚至不断增加)。这可能是由于模型越来越确定地做出错误预测(在测试集上)。 IE。随着时间的推移,它不会做出更多错误的预测(解释稳定/增加的准确性),而是对其当前的错误预测更加自信(解释成本增加)。
这又可能是由于模型过度拟合了训练数据上的特征而无法推广到测试数据。对于 MNIST 来说尤其如此,因为过度拟合“虚假”特征(例如单个像素)很常见。
【解决方案2】:
你可能看过here列出的基准,作者使用了2层,每层有300个神经元,得到了很高的准确率。你有更多的神经元,这将使网络更容易过拟合,所以首先尝试减少神经元。而且你使用大批量,这会使网络难以收敛,然后尝试使用小批量或使用更小的学习率,如.0005。最后就是尽量使用LeakyRelu()或者tanh()甚至sigmoid(),因为Relu()函数在学习后期可能会死掉。