深度学习: Dropout

时间:2024-03-31 13:34:27

Dropout: A simple Way to Prevent Neural Networks from Overfitting

 

摘要

       过拟合是机器学习领域较为突出的问题之一,很多方法已提出用于缓解过拟合。该文提出的方法是Dropout(剔除、删除等翻译即可)。只需记住一句话即可: 在神经网络训练过程中随机删除一些**单元以及与这些**单元相连的边,这避免了**单元之间过多的协同适应(生物学解释: In biology, co-adaptation is the process by which two or more species, genes or phenotypic traits undergo adaptation as a pair or group)。


 

引言

       这部分提出通过穷举所有可能的神经网络模型参数设置,对每种参数设置进行加权,再平均化。或者,通过集成学习的方式提高模型泛化能力。但是这两种方法,一个是天方夜谭(想想神经网络的规模吧),一个是计算量太大,均不可取。但是该文引入的Dropout却同时具有计算量小且有近似集成学习的功效(后面介绍原因)。

        首先来看一下应用Dropout前后的神经网络,如下:

        

深度学习: Dropout图 1 Dropout前后对比

 

         以上图为例,可以看到这是一个由输入层,两个隐层和输出层组成的神经网络。部分**单元连同输入和输出一并被删除。那么Dropout的机制是怎样的那? 

         首先, 为每一层(输出层除外)单独设定一个概率值 深度学习: Dropout 深度学习: Dropout 表示层索引 作为该层的**单元保留下来的概率,隐层(红色标注处)的概率一般设置为0.5,输入层(蓝色标注处)一般设置为较接近1的值(这可能是为了尽可能多的捕获输入特征)。每层设置完之后,可能是:(0.8, 0.5, 0.5)。这样,每个**单元保留与否是一个伯努利随机变量(保留为1,不保留为0),为每个**单元独立的指定一个深度学习: Dropout深度学习: Dropout(0,1)之间的随机数深度学习: Dropout深度学习: Dropout 表示该层哪一个**单元,若深度学习: Dropout大于或等于该层设定的概率深度学习: Dropout,则删除该**单元,否则保留。

        下面简单解释Dropout具有集成学习效应的原因。应用Dropout到神经网络可以看做从原始神经网络中抽取一个更为“稀疏”的神经网络,一个具有 深度学习: Dropout 个**单元的神经网络最多大约可以抽出 深度学习: Dropout 个“稀疏”的神经网络,将训练过程中产生的所有“稀疏”神经网络的参数按照一定策略进行加权,产生最终的模型,这正是集成学习的要义所在!


使用Dropout训练神经网络

       神经网络一般通过Mini-Batch和梯度下降进行训练,加入Dropout后依然如此。不同之处在于在每次Mini-Batch训练之前,从当前的神经网络中抽出一个“稀疏”的神经网络进行前向和反向传播,若经过深度学习: Dropout 次Mini-Batch过后模型参数收敛到一定误差之内,则此时产生了 深度学习: Dropout 个不同的“稀疏”神经网络,每个“稀疏”的神经网络的结构可能不同,如下图所示:

 

深度学习: Dropout图 2 Dropout神经网络训练过程中产生的“稀疏”神经网络

 

        参数的更新规则是将所有“稀疏”神经网络中对应位置的参数的梯度值进行平均,作为最终模型该参数的最终梯度值。其中,若某一参数未出现在某一“稀疏”神经网络中,则该“稀疏”神经网络对应的参数梯度值为0。如图,设 深度学习: Dropout 初始值为 0.8,Mini-Batch One对应该参数的梯度值为 0.9,Mini-Batch Two对应该参数的梯度值为 0.7,Mini-Batch Three中对应该参数的梯度值为 0,若此时模型已收敛到误差范围之内(实际训练过程中还会经历多次epoch,这里仅用一次epoch进行简化说明),则该参数对应的梯度值为 深度学习: Dropout 。结合上图以及参数的更新规则可以直观感受到Dropout具有的集成学习效应。

Dropout神经网络的前向传播过程

        这里重点介绍一下Dropout神经网络的前向传播过程,其反向传播过程与没有使用Dropout的神经网络训练过程相同。其前向传播公式如下:

                                                             深度学习: Dropout

                                                             深度学习: Dropout

                                                             深度学习: Dropout

                                                              深度学习: Dropout

       深度学习: Dropout 为层索引,深度学习: Dropout深度学习: Dropout为某一层中的**单元索引,深度学习: Dropout 为第 深度学习: Dropout 层中的第 深度学习: Dropout 个**单元设定的随机保留(深度学习: Dropout 等于1)概率,与未使用Dropout的神经网络前向传播差别在于公式(1)和(2)。


训练Dropout神经网络的一些建议

  1. Dropout rate(删除比率):  试数据集规模而定。
  2. Dropout神经网络由于在前后传播中引入较多的噪音,**单元之间的梯度值会发生相互抵消的  现象,为此,Dropout神经网络的学习率应该是非Dropout神经网络学习率的10-100倍,或者使用0.95-0.99之间的一个动量值。
  3.   Dropout + Max-norm Regularization:  加上Max-norm Regularization,是为了保持建议2的优势之外,权重不会因为学习率过大而出现爆炸。半径值一般设未3-4之间。