简介
Overfitting 对于神经网络而言一直是一个困难的问题。Dropout则是一个解决该问题的有效技术。
Dropout的核心思想是在训练时随机的将神经网络中的计算结点“丢弃”,以此来构建一个更小的网络模型。该技术还可以减少网络中不同节点之间的相互依赖性。
对于标准的神经网络模型可以描述为 $$ z_i^{l+1} = w_i^{l+1} + b_i^{l+1} $$ $$ y_i^{l+1} = f(z_i^{l+1}) $$ 其中$l \in {1, \dots, L}$标识层数,$z^l$ 表示第l层的输入,$y^l$表示第l层的输出。$W^l$和$b^l$表示第l层的参数。
采用了Dropout后前向传播可以表示为: $$ r_j^l \sim Bernoulli(p) $$ $$ \tilde{y}^l = r^l \ast y^l $$ $$ z_i^{l+1} = w_i^{l+1} \tilde{y}^l + b_i^{l+1} $$ $$ y_i^{l+1} = f(z_i^{l+1}) $$
需要注意的是在测试阶段引入Dropout的层,其权重需要进行一个变换: $W_{test}^l = pW^l$其中p为权重系数随机保留的概率。