辍学使性能更差

机器算法验证 辍学
2022-01-18 04:53:50

我正在玩dropout,因为机器学习中所有最先进的结果似乎都在使用它(例如,请参见此处)。我熟悉所有指南(训练时间更长、增加模型容量、使用更高的学习率),但仍然看不到它有效。我尝试了几个不同的例子:CNN 用于 IMDBCNN 用于 MNIST, MLP 用于 MNIST ,MLP 用于 IRIS,即使默认配置有 dropout (取自Keras 示例),关闭 dropout 也会使我的所有结果更好。例如,我附上了在 IRIS 数据集上训练的模型之一的结果。没有 dropout 的配置显然具有最佳性能。辍学对 MLP 的影响

我错过了什么?

IRIS 示例的代码在此处

1个回答

Dropout 是一种正则化技术,在防止过拟合方面最为有效。但是,有几个地方的 dropout 会影响性能。

  1. 就在最后一层之前。这通常是应用 dropout 的不好地方,因为网络没有能力在分类发生之前“纠正”由 dropout 引起的错误。如果我没看错,您可能在 iris MLP 中的 softmax 之前放置了 dropout。

  2. 当网络相对于数据集较小时,通常不需要正则化。如果模型容量已经很低,通过添加正则化进一步降低它会损害性能。我注意到您的大多数网络都相对较小且较浅。

  3. 当训练时间有限时。目前尚不清楚这里是否是这种情况,但如果您在收敛之前不进行训练,则 dropout 可能会产生更差的结果。通常 dropout 在训练开始时会损害性能,但会导致最终的“收敛”错误较低。因此,如果您不打算在收敛之前进行训练,您可能不想使用 dropout。

最后,我想提一下,据我所知,dropout 现在很少使用,已经被一种称为批量标准化的技术所取代。当然,这并不是说 dropout 不是一个有效的尝试工具。