Dropout

輟學使性能更差

  • August 23, 2017

我正在玩dropout,因為機器學習中所有最先進的結果似乎都在使用它(例如,請參見此處)。我熟悉所有的指導方針(訓練時間更長、增加模型容量、使用更高的學習率),但仍然看不到它起作用。我嘗試了幾個不同的例子:CNN 用於 IMDBCNN 用於 MNIST, MLP 用於 MNIST ,MLP 用於 IRIS,即使默認配置有 dropout (取自Keras 示例),關閉 dropout 也會使我的所有結果更好。例如,我附上了在 IRIS 數據集上訓練的模型之一的結果。沒有 dropout 的配置顯然具有最佳性能。輟學對 MLP 的影響

我錯過了什麼?

IRIS 示例的代碼在此處

Dropout 是一種正則化技術,在防止過擬合方面最為有效。但是,有幾個地方的 dropout 會影響性能。

  1. 就在最後一層之前。這通常是應用 dropout 的不好地方,因為網絡沒有能力在分類發生之前“糾正”由 dropout 引起的錯誤。如果我沒看錯,您可能在 iris MLP 中的 softmax 之前放置了 dropout。
  2. 當網絡相對於數據集較小時,通常不需要正則化。如果模型容量已經很低,通過添加正則化進一步降低它會損害性能。我注意到您的大多數網絡都相對較小且較淺。
  3. 當訓練時間有限時。目前尚不清楚這裡是否是這種情況,但如果您在收斂之前不進行訓練,則 dropout 可能會產生更差的結果。通常 dropout 在訓練開始時會損害性能,但會導致最終的“收斂”錯誤較低。因此,如果您不打算在收斂之前進行訓練,您可能不想使用 dropout。

最後,我想提一下,據我所知,dropout 現在很少使用,已經被一種稱為批量標準化的技術所取代。當然,這並不是說 dropout 不是一個有效的嘗試工具。

引用自:https://stats.stackexchange.com/questions/299292

comments powered by Disqus

相關問答