1

我一直在研究神经网络,并且最近学习了有关退出训练算法。有很多优秀的论文来理解它的工作原理,包括作者的论文。带退出训练神经网络的模型选择

所以我建有辍学训练神经网络(这是相当容易的),但我有点困惑如何执行模型选择。根据我的理解,看起来退出是一种在训练通过模型选择获得的最终模型时要使用的方法。

至于测试部分,论文总是谈论与使用权减半整个网络,但他们没有提到如何在培训/验证部分使用它(至少那些我读)。

我想使用网络而无需辍学机型选择的一部分。说,这使我发现网络与N神经元表现良好。然后,对于最终训练(我用来训练测试部分的网络),我使用2N个退出概率为p = 0.5的神经元。这可以确保我平均有N个神经元处于活动状态,从而在大多数时间使用正确的网络。

这是一个正确的方法吗?

顺便说一句,我所知道的一个事实,即辍学可能与小数据集的最佳选择。我正在进行的项目有学术目的,因此,只要我坚持机器学习的良好实践,我并不需要为数据使用最佳模型。

回答

2

使用不同的模型进行模型选择和不同的最终训练是从来没有一个好方法。您应该在模型选择过程中使用完全相同的过程(包括退出,具有相同的概率等)。事实上,这个概率是你在模型选择时需要适应的另一个超参数。事实上,在有和没有DOPOUT的模式选择之间没有区别,这就是为什么没有人在他们的论文中提到它 - 只是注意到变化。

+0

直接点。我喜欢这个:) – mp85 2014-12-05 23:14:38

0

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

想知道为什么,请考虑以下思维实验(从this paper无耻地窃取)。你有一个完全随机预测的模型。它有许多可以设置的参数,但不起作用。如果你尝试不同的参数设置足够长的时间,最终你会得到一个比所有其他参数更好的模型,因为你是从随机分布抽样的。如果您对所有这些型号使用相同的数据,则这是您将选择的型号。如果您有一个单独的测试集,它会很快告诉您没有实际影响,因为在模型构建阶段获得良好结果的此参数设置的性能在单独集上并不会更好。

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

这是一种使单个模型更好的方法,但不适用于模型选择。丢失是一种调整单个神经网络模型的学习权重的方法。如上面引用的论文所描述的那样,您需要训练和测试具有不同参数的神经网络,然后对完全不同的数据集进行评估。

+0

你对任何事都是对的,我可能没有很好地解释自己。我知道如何使用这些数据进行训练,验证和测试(我也知道这个实验,尽管呈现的方式稍有不同),但这只是关于如何将模型应用到验证部分(但我认为我不是甚至用这句话解释自己)。但是感谢资源,我会阅读它,并且肯定会从中学到一些新东西。 – mp85 2014-12-05 23:08:51