Dropout是什么?为什么Dropout可以防止过拟合?

什么是Dropout?

Dropout中文含义:退出。其指的就是在神经网络的训练过程中提出的一种防止过拟合的策略。
策略旨在训练过程中按照一定的概率(一般情况下:隐藏层采样概率为0.5,输入层采样概率为0.8)随机删除网络中的神经元(输出层除外)。

如下为标准的神经网络:
标准的神经网络
Dropout后的神经网络:
在这里插入图片描述
Dropout在训练时和使用(测试)时的策略不同,训练时随机删除一些神经元,在使用模型时将所有的神经元加入。

为什么要使用Dropout?

因为深度神经网络在悬链的过程中总会遇到两大缺点:

  1. 容易过拟合
  2. 费时

Dropout的出现其实就是为了解决,以上两点问题。
为什么能说可以解决这两大缺点呢?
请看下文!!!

为什么Dropout可以防止过拟合?

Dropout可以被认为是集成大量深层神经网络的实用的Bagging方法。
什么是Bagging
Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术。
主要思想是:分别训练几个不同的模型,然后让所有的模型表决测试样例的输出。(类似于多个弱分类器集成一个强分类器)这种策略被称为模型平均,使用该策略的技术被称为集成方法。
模型平均为什么会奏效?
不同的模型通常不会在测试机上产生完全相同的误差,多个模型的投票表决会使得不同模型间的不同误差相互抵消,从而取得更好的效果。
Dropout与Bagging不同点在于:
Bagging所有模型都是独立的。(模型之间的参数不会有相互的影响)
Dropout所有模型共享参数。(每个子模型继承父神经网络的不同子集)
参数的共享使得在有限的内存空间下表示指数级数量的模型变得可能
扯远了~~~~来说Dropout为何能防止过拟合(防止过拟合是Dropout使用过后的现象)

1.取平均的作用

这一点与Bagging的思想不谋而合。
我们使用相同的数据集去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用**“求平均的”或者“多数得胜”**的策略来决定最终的结果。因为不同的子结构会产生不同的过拟合情况,取平均可能将“相反”的你和相互抵消。从而使得整个网络减少过拟合程度。

2.减少神经元之间复杂的共适应关系

因为Dropout技术使得某两个神经元不一定每次都在一个子网络结构中出现。基于此权值的更新不在依赖于固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其他特征下才能有效的情况。迫使网络去学习更加鲁棒的特征(更加具有通适性)。

3.Dropout类比于性别生物进化中的角色

物种为了生存往往会倾向于适应环境,环境的突变会使得物种难以做出及时的反映,性别的出现可以繁衍出适应新环境的变种,有效防止过拟合,即避免了环境改变时物种可能面临的灭绝。

过拟合的问题解决了,貌似训练费时的问题还没解决,其实啊第一点已经说明了问题。

取平均是Dropout产生了许多子结构之后的操作,父神经网络有N个节点,加入Dropout之后可以看做在权值不变的情况下(参数共享)将模型数量扩增到指数级别。
反过来想,如果要训练2N个参数的模型,如果没有加入Dropout,则需要费2N的时间去训练。加入Dropout之后则只需要训练N个参数的时间即可得到2N参数效果的模型。这不就是省时了么>_>

Reference

[1]:《Deep Learning》Page158-Page165
[2]: https://zhuanlan.zhihu.com/p/38200980
[3]: https://blog.csdn.net/stdcoutzyx/article/details/49022443

猜你喜欢

转载自blog.csdn.net/qq_19672707/article/details/88740832