前言
一、Dropout
1.定义
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。
2.作用
做分类时,为了防止过拟合,提高模型泛化能力,Dropout 层一般加在全连接层。至于为何不加在卷积层,是因为卷积层参数较少,加入dropout作用甚微。较低层,有噪音,较高层,全连接层可以增加模型的鲁棒性,泛化性能。
3.原因
使局部簇显露出来是dropout能防止过拟合的原因,而稀疏性只是其外在表现。
4.知识点
-
1.dropout率的选择
- 经过交叉验证,隐含节点dropout率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。
- dropout用作一种添加噪声的方法,可直接对input进行操作。输入层设为更接近1的数,使得输入变化不会太大(一般选定0.8)。
-
2.预训练
- 预测的时候,每一个单元的参数要预乘以p。
-
3.训练过程
- 对参数w的训练进行球形限制(max-normalization),对dropout的训练非常有用。
- 球形半径c是一个需要调整的参数。可以使用验证集进行参数调优
- 使用dropout、max-normalization、large decaying learning rates and high momentum组合起来效果更好,比如max-norm regularization就可以防止大的learning rate导致的参数blow up。
- 使用pretraining方法也可以帮助dropout训练参数,在使用dropout时,要将所有参数都乘以1/p。
-
4.特征学习
- 标准神经网络,节点之间的相关性使得他们可以合作去fix其他节点中得噪声,但这些合作并不能在unseen data上泛化,于是,过拟合,dropout破坏了这种相关性。在autoencoder上,有dropout的算法更能学习有意义的特征(不过只能从直观上,不能量化)。
- 产生的向量具有稀疏性。
- 保持隐含节点数目不变,dropout率变化;保持激活的隐节点数目不变,隐节点数目变化。
- 数据量小的时候,dropout效果不好,数据量大了,dropout效果好
-
5.模型均值预测
-
使用weight-scaling来做预测的均值化
-
使用mente-carlo方法来做预测。即对每个样本根据dropout率先sample出来k个net,然后做预测,k越大,效果越好。
-
Multiplicative Gaussian Noise 使用高斯分布的dropout而不是伯努利模型dropout
-
dropout的缺点就在于训练时间是没有dropout网络的2-3倍。
-