dropout 为何会有正则化作用
在神经网络中经常会用到dropout,大多对于其解释就是dropout可以起到正则化的作用。
一下是我总结的对于dropout的理解。花书上的解释主要还是从模型融合的角度来解释,末尾那一段从生物学角度的解释是在是看不明白。
从模型融合的角度来解释dropout:
Dropout提供了正则化一一大类模型的方法。Dropout可以被认为是集成大量的深层神经网络模型的
Bagging方法。通常的Bagging方法是每个模型单独训练的,但是这对于大规模的神经网络来说是不现实的。一般神经网络模型的融合都只能集成5到10个模型。但是Dropout提供了一种廉价的bagging集成近似,能够训练和评估指数数量的神经网络。Dropout集成的是所有从基础网络除去非输出单元后形成的子网络。
这种如果我们设置dropout的概率为0.5,那么有N个隐藏层沈神经元的网络,可以产生2的N次方个子网络。
Dropout训练与Bagging训练不一样,Bagging的训练,每个模型都是独立的,各自有各自的参数。但是在Dropout的情况下,所有模型共享参数,其中每个模型集成父神经网络参数的不同子集。
在单个步骤的训练中,我们一次训练一个子网络。
bagging集成必须根据所有成员的累积投票做一个预测。在这种背景下,我们成这个过程为推断。
Bagging是每个模型产生一个概率分布,然后做算术平均,得到最终的结果。
我的理解是Dropout是通过最后一层,比如softmax来做融合。这部分花书上有推导。求模型的几何平均,而不是bagging的算术平均。
Dropout另一个优点是适用的模型比较广泛,而且效果都不错。
总而言之,Dropout是目前使用最广泛的隐式集成的方法。
Dropout强大的另一个解释是,我们把施加到神经元链接上的Dropout看做是一个噪声掩码,通过施加噪声,增强了模型的泛化能力。
Dropout的噪声引入是乘性的,这部分的优势,目前还不了解,等我再看看书吧
受到生物学的启发,解释dropout:
参考资料:
《深度学习》第七章
https://blog.csdn.net/stdcoutzyx/article/details/49022443