Dropout Learning - 防止深度神经网络过拟合

来源:互联网 发布:网页棋牌游戏源码 编辑:程序博客网 时间:2024/05/01 06:42

最近在学习caffe,里面有一个名词叫做Dropout Learning,一直没明白是什么意思,直到最近才发现一片文章介绍Dropout Learning的,希望可以给不知道的同学一定的帮助,如果想要更深入的了解可以阅读该文献,文章结尾会给出参考文献。

Dropout Learning是训练深度学习网络训练参数的一种方法,它可以避免过拟合并且可以有效结合指数个数(2n,n表示神经元的个数)的网络结构。

Dropout就是在训练网络时随机的舍弃掉隐层和可视层的一些神经元,其输入及输出连接也相应的去掉。最简单的情况便是独立的以概率P来选择一个神经元,P=0.5会使训练达到最优。但对于输入层P=1时最优。网络各层都使用权值共享。每次训练时都会随机的选择一些神经元来组成一个“变瘦”的网络,下次训练时会重新选择神经元组成新的网络,但权重会使用上次训练好的值,一直这样继续下去,直到满足误差或达到一定的迭代次数。(有n个神经元,每个神经元都有可能被选择到,所以共有Cn0+ Cn1 +Cn2+…+ Cnn=2n个,可以结合下图理解)

而在测试阶段不舍弃神经元,只是将训练网络的神经元权重乘以P,使其达到与训练时输出相同的效果。

示意图如下:


图1的左图表示网络的正常架构,右图表示使用Dropout Learning后的网络结构,有链接的神经元表示被选中的神经元,打差号的为未被选中的神经元。这样无论前向传播还是后向传播,都只使用被选择到的神经元。

图2左图表示训练时,该神经元以概率P被选到,值在其上传播时使用的权值为W。右图表示测试时,这时不舍弃任何神经元,而是将所有神经元的的权重乘以其被选择的概率P,这样可以使在测试时神经元的输出与在训练时神经元的输出相同。

这样训练之后可以防止过拟合,并且形式上好像结合了很多其他结构的网络。可能还有其他的好处未仔细看。若有错误欢迎指正,希望不会误导大家。

参考文献:<Dropout:A Simple Way to Prevent Neural Networks from Overfitting>


1 0
原创粉丝点击