辍学训练神经网络的模型选择

我一直在研究神经网络,最近了解了丢失训练算法 . 有很好的论文可以理解它的工作原理,包括作者的论文 .

所以我 Build 了一个带有辍学训练的神经网络(这很容易),但我对如何进行模型选择感到有点困惑 . 根据我的理解,辍学是一种在训练通过模型选择获得的最终模型时使用的方法 .

至于测试部分,论文总是讨论使用具有减半权重的完整网络,但是他们没有提到如何在训练/验证部分中使用它(至少是我读过的部分) .

我正在考虑使用网络而不会丢失模型选择部分 . 说这让我发现网络对N神经元表现良好 . 然后,对于最后的训练(我用来训练测试部分的网络)我使用2N神经元,丢失概率p = 0.5 . 这确保我平均有N个神经元活跃,因此大多数时间使用正确容量的网络 .

这是正确的方法吗?

顺便说一下,我知道丢失可能不是小数据集的最佳选择 . 我正在研究的项目有学术目的,所以我不需要使用最好的数据模型,只要我坚持使用机器学习良好实践 .

回答(2)

2 years ago

使用不同的模型进行模型选择,并为最终的训练使用不同的模型是 never a good approach . 在模型选择期间,您应该使用完全相同的过程(具有丢失,具有相同的概率等) . 实际上,这个概率是模型选择过程中需要适应的另一个超参数 . 事实上,有和没有dorpout的模型选择没有区别,这就是为什么没有人在他们的论文中写这篇文章 - 只是注意到改变了 .

2 years ago

首先,模型选择和特定模型的训练是完全不同的问题 . 对于模型选择,您通常需要一个完全独立于用于构建模型的训练集和用于估计其性能的测试集的数据集 . 因此,如果您正在进行交叉验证,则需要内部交叉验证(以训练模型并估计一般性能)和外部交叉验证以进行模型选择 .

要了解原因,请考虑以下思想实验(从this paper无耻地被盗) . 你有一个完全随机预测的模型 . 它有许多可以设置的参数,但不起作用 . 如果你最终得到的模型比其他模型具有更好的性能仅仅因为你为所有这些模型使用相同的数据,那么这就是你要选择的模型 . 如果您有一个单独的测试集,它会很快告诉您没有实际效果,因为在模型构建阶段获得良好结果的此参数设置的性能在单独的集合上并不是更好 .

现在,回到具有退出的神经网络 . 你没有提到任何特定的论文;我假设你的意思是Srivastava et . 人 . “辍学:防止神经网络过度拟合的简单方法” . 我不是这方面的专家,但对我而言,这种方法似乎与随机森林或装袋中使用的方法类似,以减轻个别学习者在略微不同的环境中反复应用它所表现出的缺陷 . 如果我正确地理解了这个方法,那么你最终得到的是几个可能的模型的平均值,非常类似于随机森林 .

这是一种使单个模型更好的方法,但不能用于模型选择 . 丢失是一种调整单个神经网络模型的学习权重的方法 .

要对此进行模型选择,您需要训练和测试具有不同参数的神经网络,然后在完全不同的数据集上评估它们,如我在上面引用的论文中所述 .