概述
Dropout,是指在神经网络中,随机失活部分隐层的神经元。是深度学习中一种针对过拟合的解决方法。
流程
1 对于隐层神经元,先随机使一部分神经元失活(临时删除)。如果图所示 dropout2 通过子网络(临时删除隐层神经元后的网络)进行前向传播,再通过BP算法来更新没有被删除的隐层神经元的参数。
3 将第一步中临时删除的神经元恢复,再一次重复1,2两个步骤。
解决过拟合
在网上查找了一下,并没有发现一个非常系统的数学证明来证明dropout可以解决过拟合,但是有直观的解释。
1 对于每一次的drop,都可以看成是一个独立的神经网络。 多次dropout可以看成是训练了若干个神经网络。那么对于整个数据集而言,经过dropout后,隐层神经元的参数可以看成是多个不同神经网络的平均值。通过取平均值可以消除个别模型中的过拟合的部分。
这个过程其实和机器学习中的bagging思路比较类似,每一个batch对应着不同取样的数据,然后训练处对应的模型,最后将所有模型结合取平均。
2 dropout可以降低不同神经元之间的依赖关系。促使模型去学习更具有泛化性的特征。因为每次dropout保留的神经元不同,可能某些具有特例性的特征神经元没有被保留,这时模型会继续学习其他特征来提高模型的准确度。不同神经元之间的依赖程度降低,也间接说明整个模型的复杂程度降低了。从而起到了减少过拟合的作用。
网友评论