全连接层加dropout层防止模型过拟合,提升模型泛化能力
卷积网络中参数较少,加入dropout作用甚微。然而,较低层的中加入dropout是仍然有帮助,因为它为较高的全连接层提供了噪声输入,从而防止它们过拟合。
一般对于参数较多的模型,效果更好
做法
1、其实Dropout很容易实现,源码只需要几句话就可以搞定了,让某个神经元以概率p,停止工作,其实就是让它的激活值以概率p变为0。比如我们某一层网络神经元的个数为1000个,其激活值为x1,x2……x1000,我们dropout比率选择0.4,那么这一层神经元经过drop后,x1……x1000神经元其中会有大约400个的值被置为0。
2、经过上面屏蔽掉某些神经元,使其激活值为0以后,我们还需要对向量x1……x1000进行rescale,也就是乘以1/(1-p)。如果你在训练的时候,经过置0后,没有对x1……x1000进行rescale,那么你在测试的时候,就需要对权重进行rescale:Wt = 1/(1-p) *W
参数选取
1.先dropout=0, 训练后得到模型的一些指标(比如:Accuracy)。比较train数据集和test数据集的指标的拟合情况。
2.过拟合:尝试下面的步骤。 欠拟合:调整模型的结构
3.dropout设置成0.5之间, 再次训练得到模型的一些指标。
4.如果过拟合明显好转,但指标也下降明显,可以尝试减少dropout(0.1~0.2)
5.如果过拟合还是严重,增加dropout(0.1~0.2)
6.重复上面的步骤多次,就可以找到理想的dropout值了