实用的超参数优化:随机与网格搜索


40

我目前正在研究Bengio和Bergsta的用于超参数优化随机搜索[1],作者声称随机搜索比网格搜索更有效地实现近似相等的性能。

我的问题是:这里的人是否同意这种说法?在我的工作中,我之所以一直使用网格搜索,主要是因为缺少可轻松执行随机搜索的工具。

人们使用网格搜索与随机搜索的体验如何?


随机搜索比较好,应该总是首选。但是,最好使用专用库进行超参数优化,例如Optunity,hyperopt或bayesopt。
马克·克莱森

Bengio等。在此处编写有关此文件:papers.nips.cc/paper/…因此,GP效果最好,但RS效果也很好。
Guy L

10
@Marc当您提供所涉及对象的链接时,您应该使其关联清楚(一个或两个单词就足够了,即使是简短的引用也our Optunity应如此);正如行为方面的帮助所言,“如果某些……恰好与您的产品或网站有关,那没关系。但是,您必须披露您的隶属关系”
Glen_b

Answers:


39

随机搜索的概率为95%,仅需60次迭代即可找到5%最优值内的参数组合。与其他方法相比,它也不会陷入局部最优状态。

请参阅Alice Zheng 在Dato撰写这篇很棒的博客文章,特别是Hyperparameter Tuning Algorithms部分。

我喜欢失败者获胜的电影,也喜欢机器学习的论文,这些论文证明简单的解决方案非常有效。这是Bergstra和Bengio撰写的“随机搜索超参数优化”的故事情节。[...]之前没有非常认真地进行随机搜索。这是因为它不会搜索所有网格点,因此它不可能超过通过网格搜索找到的最佳点。但是随后出现了伯格斯特拉和本吉奥。他们表明,在令人惊讶的许多情况下,随机搜索的性能与网格搜索差不多。总而言之,尝试从网格中采样60个随机点似乎已经足够了。

(10.05)n。因此,其中至少有一个成功达到间​​隔的概率为1减去该数量。我们希望成功的机率至少为0.95。要计算出我们需要的抽奖次数,只需在方程式中求解n:

1(10.05)n>0.95

n60

这个故事的寓意是:如果超参数的接近最佳区域至少占据了网格表面的5%,那么通过60次试验的随机搜索将发现该区域的可能性很高。

您可以通过进行更多次尝试来提高机会。

总而言之,如果您要调整的参数太多,则网格搜索可能变得不可行。那是我尝试随机搜索的时候。


3
博客文章的链接已关闭:(可以是同一篇文章吗? oreilly.com/ideas/evaluating-machine-learning-models/page/5/…–
n1k31t4

@DexterMorgan嘿,感谢大家的注意。是的,博客显然已关闭,并且我不确定是否应该链接到可能不是“官方”的其他来源,因此我现在将其保留为原样。
Firebug

该博客仍处于关闭状态……感谢您引用它,@ n1k31t4感谢您提供链接以供进一步阅读!
llrs

8

再次查看纸上的图形(图1)。假设您有两个参数,使用3x3网格搜索时,每个参数仅检查三个不同的参数值(左侧图上的三行和三列),而使用随机搜索时,则检查九个(!)不同的参数值每个参数(九个不同的行和九个不同的列)。

网格与随机搜索

显然,随机搜索可能无法代表所有参数范围,但是随着样本数量的增加,随机搜索的机会越来越小。


6

如果您可以为网格搜索编写函数,那么编写函数进行随机搜索甚至可能会更容易,因为您不必预先指定和存储网格。

抛开这些,诸如LIPO,粒子群优化和贝叶斯优化之类的方法可以明智地选择哪些超参数可能会更好,因此,如果您需要将模型数量保持在绝对最小值,例如,因为拟合一个模型的成本很高。模型),这些工具是有前途的选择。它们还是全局优化器,因此很有可能找到全局最大值。BO方法的某些获取功能具有可证明的后悔界限,这使其更具吸引力。

在以下问题中可以找到更多信息:

贝叶斯超参数优化的某些破坏力是什么?

成本函数评估缓慢时的优化


2

默认情况下,除非满足以下条件之一,否则随机搜索和网格搜索是糟糕的算法。

  • 您的问题没有全局结构,例如,如果问题是多峰的并且局部最优解的数量很大
  • 您的问题很嘈杂,即两次评估相同的解决方案会导致不同的目标函数值
  • 与变量数量相比,目标函数调用的预算非常小,例如小于1x或10x。
  • 变量的数量非常小,例如小于5(实际上)。
  • 其他一些条件。

大多数人声称随机搜索比网格搜索更好。但是,请注意,当预定义功能评估的总数时,网格搜索将导致良好的搜索空间覆盖范围,这并不比具有相同预算的随机搜索差,并且两者之间的差异可以忽略不计。如果您开始添加一些假设,例如您的问题是可分离的或几乎可分离的,那么您将找到支持网格搜索的参数。总体而言,除非在极少数情况下,否则两者都相当糟糕。因此,除非考虑到有关该问题的一些其他假设,否则无需区分它们。


你能提出更好的建议吗?如果不尝试,我们怎么知道什么才是最好的?在我看来,对许多模型进行随机搜索是最好的折衷方案。
JPErwin

0

在只有一个最大值的2D地形中找到最大值的95%以内的点需要100%/ 25 = 25%,6.25%,1.5625%或16个观测值。只要前四个观测值正确确定最大值(极值)在哪个象限中即可。一维地形需要100/2 = 50、25、12.5、6.25、3.125或5 * 2。我猜人们在搜索多个遥远的局部最大值时会使用较大的初始网格搜索,然后进行回归或其他预测方法。60个观测值的网格应在极值的100/60 = 1.66%内具有一个观测值。我仍然认为,全局优化总是比随机性更好的方法。


模拟退火是已经存在多年的随机搜索的一种形式。
Michael Chernick
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.