Neural-Networks

如果使用 dropout 時所有節點都被丟棄了怎麼辦?

  • September 10, 2017

在實現 dropout(或 drop connect)時 - 您是否需要考慮層中的每個節點都被丟棄的情況?

即使這是一個非常小的機會,在這種情況下採取的正確方法是什麼?選擇一個新的隨機集以退出或將下一層的所有輸入設置為零?

有誰知道流行的庫(TensorFlow、Keras 等)在這種情況下會做什麼?

這是一個很少會實現的問題。對於一個中等大小的神經網絡,每個隱藏層都有單位,如果輟學概率設置為(通常使用的高端)然後是所有的概率單位為零是這是一個令人難以置信的微小價值。即使對於一個非常小的神經網絡,只有隱藏層中的單元,所有單元為零的概率為, 或小於

所以簡而言之,在大多數現實世界的情況下,這不是您需要擔心的事情,並且在它確實發生的極少數情況下,您可以簡單地重新運行丟棄步驟以獲得一組新的丟棄權重。

更新:

通過挖掘TensorFlow的源代碼,我找到了dropout的實現here。TensorFlow 甚至不會考慮所有單位都為零的特殊情況。如果發生這種情況,那麼該層的輸出將簡單地為零。這些單元在丟棄時不會“消失”,它們只是取零值,從網絡中其他層的角度來看,這是非常好的。它們可以對零向量以及非零值向量執行後續操作。

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

comments powered by Disqus