如何分解大型网格搜索?

Kie*_*vit 5 machine-learning neural-network regularized hyperparameters

我希望为不同的神经网络配置运行一个非常大的网格搜索。就其完整性而言,使用我当前的硬件运行是不切实际的。我知道可能有比朴素网格搜索(例如随机、贝叶斯优化)更好的技术,但是我的问题是我们可以对首先包含的内容做出哪些合理的假设。具体来说,就我而言,我希望在

  • A:隐藏层数
  • B:隐藏层的大小
  • C:激活函数
  • D:L1
  • 乙:L2
  • F:辍学

我有一个想法是将(1)标识的网络结构c通过运行AC网格搜索,(2)选择 c具有最低(例如MSE)误差(对测试数据集),和(3)的运行与配置网络c通过DF 上的单独网格搜索,以确定最合适的正则化策略。

在这种情况下,这是一种明智的方法,还是理论上我可以通过使用在第一次网格搜索(即 AC)中显示更高错误的网络配置来获得更低的最终错误(即在正则化之后)?

Ber*_*abi 0

你提到的这种做法是合理的。它类似于所谓的贪婪前向特征选择方法,用于选择特征。在您的情况下,它是模型参数而不是特征。

这个想法是有效的,并且在实践中得到了广泛的应用。无论你的硬件有多强大,都永远不足以尝试可能的组合,这基本上是无限的。

然而,该方法不能保证第一次网格搜索中最好的一个将是总体上最好的一个。正如您所说,通过使用在第一个网格搜索中具有较高错误的 netfork 配置,您可以获得较低的最终错误。但实际上,差别应该不会太大。

我建议您从基本参数开始。比如学习率,或者优化器。它们的效果应该远远超过其他参数,如激活函数、隐藏层数量(如果您不是将单层与非常深的网络进行比较,而是比较 1-2 层的差异)。当您找到最佳配置时,您应该再次尝试重要的配置(lr、优化器),同时保持找到的配置相同。