摘要本篇介绍关于dropout技术。dropout是在过拟合的时候进行使用的技术,适用与deep learning。
Dropout在做什么
Train时Dropout在做什么
当dropout(p)时,意味着每个neuron, 有p%的可能性被去除;(这里需要注意的是,不是去除p%的neuron)
我们可以看到的是,每一次进行dropout的时候,网络的结构都会发生改变,会变成一个比之前thin的网络结构。
所以,总结一下:dropout在训练的时候步骤如下:
每次前向传播时, 去除一些neuron;
网络的结构发生了改变;
使用新的网络结构进行训练;
对于每一个min-batch, 每次都会修改网络的结构;
Test时Dropout在做什么
在进行test的时候,我们是不进行dropout,同时要修改之前的系数,我们看一下具体的步骤。
不进行dropout(即每个节点都不会被去掉);
同时, 若train时dropout(p), 则在test时候, 所有系数需要乘(1-p%);
例如, dropout(0.9), 则最后所有系数需要乘(1-0.9);
下面我们来解释一下为什么最后所有系数要乘(1-p%),他的最终的目标是为了保持不进行dropout时候网络输出的值与进行dropout时,网络输出值的期望相同。我们看下面一个具体的例子:
上图中