深度神经网络中的装袋与辍学


17

套袋是多个预测变量的生成,可以像单个预测变量一样进行混淆。辍学是一种教导神经网络求平均所有可能子网的技术。在最重要的Kaggle比赛中,这两种技术经常一起使用。除了实际的实现,我看不到任何理论上的差异。谁能解释我为什么在任何实际应用程序中都应同时使用它们?以及为什么同时使用它们时性能会提高?

Answers:


21

套包和辍学并不能达到完全相同的目的,尽管两者都是模型平均的类型。

套袋是对整个数据集的一项操作,可根据一部分训练数据来训练模型。因此,某些训练示例未显示给定模型。

相反,Dropout应用于每个训练示例中的功能。的确,结果在功能上等效于对多个网络进行指数训练(具有相同的权重!),然后对其输出进行平均加权。但是,辍学在要素空间上起作用,从而导致某些要素无法使用网络,而不是完整的示例。由于每个神经元不能完全依赖一个输入,因此这些网络中的表示形式倾向于更分散,并且网络不太可能过拟合。


+1是一个很好的解释。您是否知道完成Python实现的任何链接?任何博客还是Github?
Dawny33

有一个体面的一个位置:deeplearning.net/tutorial/lenet.html,虽然我更喜欢这个风格: neuralnetworksanddeeplearning.com/chap6.html。对于实施和出色的演示,我喜欢keras(相当容易点安装)keras.io
jamesmf 2015年

2

我在Max Out Networks中找到了两种网络的比较:

辍学训练类似于装袋(Breiman,1994年),其中许多不同的模型针对数据的不同子集进行训练。辍学训练与套袋训练的不同之处在于,每个模型仅训练一个步骤,并且所有模型共享参数。为了使此训练过程(辍学)表现得像在训练一个集合而不是一个模型,每个更新必须具有很大的效果,以便使由该µ引起的子模型很好地适合当前输入v。

希望它会有用。


0

Dropout是一种规整化技术,用于避免在大型神经网络中过度拟合,特别是通过在训练后将一些神经元留在隐藏层中(因此将其命名为Dropout的神经元)来避免。基本上,如果网络在训练过程中确实学到了任何东西,那么放弃某些神经元就不会对预测的准确性产生负面影响。

套袋也是一种有效的正则化技术,可用于减少训练数据的方差并通过对初始/较大训练数据集的不同数据子集进行训练的多个副本来提高模型的准确性。

看到这个问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.