DeepLearning学习笔记——Dropout

 

Dropout是一种正则化方法,并且提供了正则化一大类模型的方法。Dropout方法可以被认为是集成大量深层神经网络的使用Bagging 方法。Bagging方法涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是很大的一个神经网络时,这似乎是不切实际的。

具体而言,Dropout训练集成了包括所有从基础网络除去所有非输出单元后形成的子网络。

DeepLearning学习笔记——Dropout_第1张图片

每个单元,掩码是独立的。掩码的值为1的概率是训练开始前就已经固定的超参数。通常在一个小批量训练的神经网络中,一个输入单元被包括的概率为0.8,而一个隐藏单元被包括的概率为0.5,然后像之前一样进行前向传播,反向传播和学习更新。

Dropout训练与Bagging训练不太一样,在Bagging情况下,所有的模型都是独立的。在Dropout情况下,所有模型都共享参数,参数共享使得在有限可用的内存下表示指数级数量的模型变得可能。在Bagging下每个模型在相应的训练集上训练的收敛,而Dropout的大部分子模型都没有被显式的训练,因为通常父神经网络通畅会很大,以至于不可能采样完所有的子网络。取而代之的是,在单个步骤中,训练一小部分的子网络,参数共享会使得剩余得子网络也能有好的参数设定。

(训练过程其实很简单就能理解,下面来考虑一个问题,我们在训练过程中会随机丢弃一些单元,那么我们再测试中呢?怎么办?)

DeepLearning学习笔记——Dropout_第2张图片

(这里的算数平均值,应该就是指期望吧,求所有子模型对给定的X求Y,然后求出所有子模型的期望)

这里表示一个方法,就是求出所有在子网络模型的概率,然后来求出期望,显然不可能求出所有子模型

(然后啊在下面再给出一个更好的方法)

DeepLearning学习笔记——Dropout_第3张图片

DeepLearning学习笔记——Dropout_第4张图片

DeepLearning学习笔记——Dropout_第5张图片

DeepLearning学习笔记——Dropout_第6张图片

(这一部分其实我不是很理解,可以看看这篇文章,https://www.cnblogs.com/strongYaYa/p/5871410.html。

就能知道这一部分到底是在干啥。)

自己概括一下,并不知道对不对。在训练时,Dropout会随机舍弃一些单元,但是在测试时,我们并不会舍弃单元,但是我们会把当前层的输出乘上当前层的掩码的概率,作为最后的输出(还没经过激活函数)。因为在之前我们会舍弃一些单元,但在测试中,所有单元的输出都会被保留,那么显然测试中有输出的单元会比训练的多。多多少呢?在隐藏层中,书中给了一个在训练时采样的概率p=0.5还是均匀分布,设总体的单元数量为n,则训练时,有输出的单元数量为p*n。在测试时,所有的n都有输出,为了与训练时子网络的输出保持一致,保持一样数量级,我们把所有单元的输出乘上p。只有

 

Dropout是一个正则化技术,减少了模型的有效容量,为了抵消这种影响,我们必须增大模型规模。对于非常大的数据集,正则化带来的泛化误差减少得很小。在这些情况下,使用Dropout和更大模型的计算代价可能超过正则化带来的好处。当只有极少的训练样本可用时,Dropout不会很有效。

一个关于Dropout的重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,实现了一种参数共享的Bagging形式。早些时候,我们将Dropout描述为通过包括或删除单元形成模型集成的Bagging形式。然而,这种参数共享策略不一定要基于包括和删除。原则上,任何一种随机的修改都是可接受的。在理想情况下,我们也应该使用可以快速近似推断的模型族。我们可以认为由向量u参数化的任何形式的修改,是对u所有可能的值训练p(y|x,u)的集成。注意,这里不要求u具有有限数量的值。例如,u可以是实值。Srivastava表明,权重乘以u-N(1,1)比基于二值掩码Dropout表现的更好。由于E(u) = 1,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。(为啥期望是1,就能自动实现集成的近似推断

DeepLearning学习笔记——Dropout_第7张图片

 

你可能感兴趣的:(深度学习)