【深度学习】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.

猜你喜欢

转载自blog.csdn.net/u013166817/article/details/83818122