1. 程式人生 > >【深度學習】Drop out

【深度學習】Drop out

來源:Dropout: A Simple Way to Prevent Neural Networks from Overfitting

1. 原理

在每個訓練批次的前向傳播中,以概率p保留部分神經元。目的是:簡化神經網路的複雜度,降低過擬合風險。

\small \\Z_{l+1} = W\cdot A_{l} + b \\A_{l+1} = f(Z_{l+1}) \\\Rightarrow \\r_{l} \sim Bernoulli(p) \\ \~A_{l} = r_{l} * A_{l} \\Z_{l+1} = W\cdot \~A_{l} + b \\A_{l+1} = f(Z_{l+1})

根據保留概率p計算一個概率向量r([1,0,1,0,0,1,1....]), 然後保留部分節點。

2. 注意點

因為dropout一般只使用在訓練時,而測試時所有的神經元都會保留。為了使訓練和測試時對應,可以有以下兩種方法:

1)測試時:在每個神經元對應的權重w需乘以p,即\small w = p \~w。(原理:訓練時dropout後的期望:\small p\cdot x + (1-p)0, 為了使測試時期望與之對應,需給w乘以p。)

2)inverted dropout, 訓練時:將dropout後保留下來的神經元權重乘以1/p,稱作懲罰項。這樣訓練時權重擴大,測試時不需要再乘以p以縮小。

3. 常用值

dropout一般取0.5.