我观察到,在5个Convolutional2D层之后各添加一个
SpatialDropout2D(0.2)
层后,训练和验证误差在最初几个epochs内的表现明显优于没有这些Dropout层的相同网络(其他条件相同)。这似乎有些违反直觉,因为我原本预期如果中间结果被随机丢弃,优化过程会更难找到一个最小值。
那么,我的观察是否合理呢?如果合理,又是为什么呢?
回答:
一般来说,dropout是用来对抗过拟合的一种技术。它预期会降低测试误差,而不是训练误差。相反,当模型不再过拟合时,训练误差可能会上升。
我建议阅读深度学习教科书第7.12节,以了解更多关于dropout的信息。