首页 > 解决方案 > 如何分解大型网格搜索?

问题描述

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

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

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

标签: machine-learningneural-networkhyperparametersregularized

解决方案


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

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

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

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


推荐阅读