1. 程式人生 > >Dropout正則化

Dropout正則化

Dropout(隨機失活)就是在神經網路的Dropout層,為每個神經元結點設定一個隨機消除的概率,對於保留下來的神經元,我們得到一個節點較少,規模較小的網路進行訓練。

直觀上理解

  • 不依賴於任何一個特徵,因為該單元的輸入可能隨時被清除
  • 通過傳播所有權重,dropout將產生收縮權重的平方範數的效果,和之前講的L2正則化類似;
  • 實施dropout的結果實它會壓縮權重,並完成一些預防過擬合的外層正則化;
  • L2對不同權重的衰減是不同的,它取決於啟用函式倍增的大小。

實施dropout的細節

  • 如果你擔心某些層比其它層更容易發生過擬合,可以把某些層的keep-prob值設定得比其它層更低, 缺點是為了使用交叉驗證,你要搜尋更多的超級引數,
  • 另一種方案是在一些層上應用dropout,而有些層不用dropout,應用dropout的層只含有一個超級引數,就是keep-prob。

dropout常在計算機視覺應用中

  • 計算視覺中的輸入量非常大,輸入太多畫素,以至於沒有足夠的資料,所以dropout在計算機視覺中應用得比較頻繁,有些計算機視覺研究人員非常喜歡用它,幾乎成了預設的選擇。
  • 但要牢記一點,dropout是一種正則化方法,它有助於預防過擬合,除非演算法過擬合,不然我是不會使用dropout的
  • 它在其它領域應用得比較少,主要存在於計算機視覺領域,因為我們通常沒有足夠的資料,所以一直存在過擬合

dropout大缺點

dropout 的一大缺點是成本函式無法被明確定義。因為每次迭代都會隨機消除一些神經元結點的影響,因此無法確保成本函式單調遞減。
因此,使用 dropout 時,先將keep_prob全部設定為 1.0 後執行程式碼,確保 J(w,b)函式單調遞減,再開啟 dropout